コロプラ・ベアーズ 面白いものを作りたい仲間が集まるベアーズ

コロプラのサーバーサイドエンジニア座談会
TEAM

オンラインゲームは「通信中」の裏側が熱い!サーバーサイドエンジニア座談会

コロプラのサーバーサイドエンジニア

けいちゃん

サーバサイドエンジニア

コロプラのサーバーサイドエンジニア

たくろっち

サーバサイドエンジニア

コロプラのサーバーサイドエンジニア

ひでじ

サーバサイドエンジニア

コロプラのサーバーサイドエンジニア

ばっしー

サーバサイドエンジニア

2016年も『白猫テニス』や『ドラゴンプロジェクト』など、スマートフォン向けのオンラインゲームを続けてリリースしたコロプラ。その中で当たり前のようにプレイされている「オンライン対戦」は、ひと昔前ならデバイススペックが足りずデータ通信も整っていなかったので実現できなかったものですが、今では当たり前にプレイできるものとして多くの方に楽しまれています。

そんなオンラインゲームの根幹を支えるのが「サーバーサイドエンジニア」です。ゲームの中でも目に見えない部分の作業をしているのでその仕事について語られることはほとんどありませんが、今回はその業務内容からよく使うプログラミング言語まで大公開します!

コロプラのサーバーサイドエンジニアの仕事をわかりやすく説明すると

そもそもの話になりますが、コロプラの「サーバーサイドエンジニア」は普段どんな仕事をしているのでしょうか。

たくろっち 言葉にするのはちょっと難しいんですが、ざっくり言うと、オンラインゲームをプレイするときに発生する膨大なデータを、サーバー上で整合性を保った状態で保存するという作業をしています。

けいちゃん たとえばユーザーさま一人ひとりが持っている「キャラ」や「装備」といったアイテムのデータをそれぞれ適切な各サーバーに保存していて、ユーザーさまが必要としたときに取り出して「あなたはこんなキャラを持っています、こんな装備を持っています」というような情報を送るんですね。

ばっしー オンラインゲームをプレイしていると「通信中......」っていう表示がよく出ますよね。あの裏でデータのやり取りをしているプログラムを作成・保守しているのがサーバーサイドエンジニアです。そしてその「通信中」の時間を極力短くしたり、ストレスなく待っていただけるように工夫したりするのも私たちの仕事です。

たくろっち 通信が増えれば増えるほどユーザーさまの負担になってしまいますので、サイズの大きいデータは毎回通信しないで済むようにキャッシュを活用できるようにするとか、仕様をそのまま実装したら処理が遅くなるけど、問題のないレベルで仕様を変えたらより速く処理できるようなところがあれば提案するなど、結構細かいことをしています。

なるほど! なんとなくイメージできるようになってきました。

ひでじ ちなみにアクセス数やスピード感などは違うと思いますが、基本的なデータの扱い方はWebサイトなどゲーム以外の領域を担当するサーバーサイドエンジニアとあまり変わりません。私は金融系のSIer出身ですし、ゲーム業界以外から中途入社してきたサーバーサイドエンジニアも多いです。

けいちゃん 私もB to Bの会社から転職してきました。サーバーサイドチームには「ゲームは好きだけど仕事でゲーム系の会社に入るのは初めて」という人、とくにシステム系の出身者が多いと思います。

たくろっち 私は証券系システム開発の企業に新卒で入り、その後ゲーム会社に転職、コロプラが3社目という流れです。

ばっしー 私は2010年に新卒社員として入社したんですが、当時のコロプラは社員がまだ40人くらいで、半年間はユーザーサポート業務を担当していました。大学の専攻は化学でプログラミングもあまりやっていなかったし、エンジニアとして採用されたわけではありませんでした。ただ、当時担当していた『コロニーな生活』のお問い合わせに回答するためにはMySQLなどの知識が必要だったので、勉強していたらそのままエンジニア配属となり、今はサーバーサイドエンジニアをやっています。

ばっしーさんは特殊な例だと思いますが、クライアントエンジニアからサーバーサイドエンジニアになるようなことってコロプラではよくあるんですか?

たくろっち そう多くはありませんが、私は今クライアントの仕事もやっています。サーバーサイドはクライアントチームやインフラチームと連携して作業することも多いですしね。

けいちゃん クライアントチームとはデータ受け渡しの方法や形式の相談をしたり、インフラチームには負荷に応じてサーバーの構成を変えたり、台数を増やしてもらったりするので、コミュニケーションは密に取っていますよね。あと、相互にとって効率的なデータ管理の仕方を考えるのもサーバーサイドの役割です。

te_20170207_eszadan_800_533_1.jpg

サーバーサイドの仕事で一番変わったと思うのは、新作のリリース初日に求められること

ゲームタイトルによって、データの扱い方が変わるようなことはありますか?

ひでじ ゲームの裏側を作るという基本的なところは同じですが、規模感やそのゲームが作られた時期によって作業が異なるということはよくあります。規模が大きいタイトルですと分業化されていますが、逆に規模の小さいタイトルだとサーバーサイドエンジニアがなんでもやっているケースもあります。また、サーバーサイドでほとんど完結するタイトルの場合は画面の作成もサーバーサイドエンジニアが行っています。

けいちゃん あと『コロニーな生活』や『キャリー・ストーリー』など、コロプラの中でも初期に作られたようなゲームを扱う場合はフィーチャーフォンの知識も必要です。クライアントやOSのバージョンによって気をつけないといけないポイントもありますし、使われている言語も多いので、幅広い知識と経験が必要になります。

だいぶ噛み砕いて話していただいていると思いますが、実際の作業は複雑そうですね。一番大変なのはどんな作業ですか。

たくろっち サーバーサイドの一番熱いところは、負荷対策の部分だと思います。インフラチームが用意してくれたデータベースに膨大なデータをどう格納し、どう取り扱うかを考えるのが一番重い、難しいところです。

ひでじ アクセスが少なければ動くけれど、アクセスが一気に増えるとサーバーやネットワークが悲鳴をあげる、渋滞する場所が出てきます。アクセスが一気に増えることを事前に想定できればインフラチームと連携してサーバーを増やしておきますし、問題が発生したらすぐ対応します。

負荷が大きいのは大変だけど、そこにやりがいを感じるということでしょうか。

ばっしー そうですね。データベースにクエリを発行するんですが、発行する場所やタイミングにはテクニックが必要で、それがわかってくると面白いんです。いいサーバーを使っていても使い方が良くないとデータをさばけないものなので、我々の仕事は「サーバーをどう使うか」と考えることなんですね。

けいちゃん 転職先を選ぶときに重視したのは、アクセスされる際の瞬間風速、サーバーに対する負荷がすごいかどうかでした。あと、世間で認知されているゲームが多いというのも選んだポイントでしたね。

たくろっち 大きな負荷って、ユーザーさまがいないと体験できませんからね。そもそもそこまで大きな負荷に対応するための技術情報って教科書やネットには書かれていないので、現場に入るしかありません。体系だったものがないんですよね。

実際の仕事で役立つスキルは、現場で学ぶしかない、と。

ばっしー 私は7年ほどコロプラのゲーム制作に携わってきましたが、フィーチャーフォン、スマートフォンといったデバイスや時代の変化に合わせてその内容を変えていて、サーバーサイドエンジニアもそれに応じて進化してきているという実感があります。VRなど新たな領域へのチャレンジもしていますが、サーバーサイドの仕事で一番変わったと思うのは、新作のリリース初日に求められることです。以前は自然流入でユーザーさまが徐々に増えていくという感じが一般的でした。ただ最近はリリース前からユーザーさまの熱量を高めるために事前登録制を取り入れており、リリースした直後には大量のユーザーさまが一気に流入することになります。我々はその際にかかる強い負荷に、完璧な状態で対応しなければなりません。

リリースされる瞬間って現場はどんな感じなんですか。

ばっしー 初日は何が起こるかわからないので、クライアントもインフラもサーバーもみんなでPCの前で待機していますね。厳戒態勢です。2013年に『クイズRPG 魔法使いと黒猫のウィズ』を出した時は全国的にCMを打ったんですが、とにかくアクセス数がすさまじくて、サーバーを落とすことのないよう極限の状態の中で対応しました。うまくやりとげたときは、やはり楽しい、嬉しいと思えましたね。あれを経験できたのはデカかったです。でも何回リリースの瞬間に立ち会っても、ドキドキしますね。緊張することには慣れましたが、慣れた上での緊張感があるというか。

ひでじ サーバーサイドエンジニアが一つ作業をミスしたら正常にプレイできなくなるので、緊張感はすごいです。

けいちゃん 私は前職までには知りえなかった負荷対策に立ち会えるようになって、すごく大きな成長を感じます。あと、コロプラではゲームコンテンツに近い立場で働けるという点も面白いですね。ユーザーさまの目線、運用の目線、メンテナンスの目線で作り上げるというふうに様々な目線で考えられるようになったので、視野が広がったと思います。サーバーサイドはクライアントのようにユーザーさまが実際に触れる部分を作っているわけではありませんが、見えないところでできることがたくさんあって縁の下の力持ちになれるので、そこが楽しいですね。

たくろっち 私はクライアントエンジニアの仕事もできるようになりたいと思って転職してきましたが、今それが実現できているので本当に楽しいです。サーバーサイドのことだけでなく、全体の効率を上げるために改善できるところがあれば何でもやって無駄をどんどん削ります。一つ一つの積み重ねの結果、ユーザーさまの待ち時間が半分になったらいいなあ......と考えるんですね。サーバーサイドはその存在が気付かれるのが一番いけないことなので、1byteでも通信量を減らして、0.1秒でも速くしたい!

コロプラで必須なプログラミング言語?

1byteでも軽く、0.1秒でも速くしたいという......まさにエンジニア魂ですね。ところで、サーバーサイドは扱うプログラミング言語が多いと聞きますが、コロプラにおいて必須な言語などはあるんでしょうか。

たくろっち 「どうしても」という絶対的な言語はないですね。

けいちゃん 必須とまでは言いませんが、今はPHPを使う箇所が多いので覚えておくといいか思います。ただ、一個でも得意な言語があれば、習得には時間が掛からないのではと思います。

ばっしー サーバーサイドエンジニアはLAMP環境(Linux、Apache HTTP Server、MySQL、PHP)が定番だとよく言われますが、コロプラ社内では人によって使う言語が全然違うと思います。とにかくオペレーションが多いので、それに付随するツールをどんどん作っていく必要があるんです。

全容は計り知れない感じでしょうか。ほかに、コロプラならではの文化などがあったら教えてもらえますか。

ひでじ エンジニア同士の風通しがいいですし、懇切丁寧な手順書や仕様書を作成する必要はなく、それにまつわる承認も不要なので、実際にコーディングできる時間が多いのはエンジニアにとってかなり良い環境なのではと思っています。

te_20170207_eszadan_800_533_2.jpg

ばっしー スピード感や効率化、時代に合ったものを作るというのもずっと変わらない文化だと思います。それに応じて使う言語も増えていますし、自分のスキルが上がっていることは実感できますね。

たくろっち あと、ずっと同じものを作っている会社だと経験の差で絶対に先輩社員を抜けないということもあると思いますが、コロプラは新しいものをどんどん取り入れていくので、新卒社員でも頑張り次第でトップになれます。それもコロプラならではの文化かもしれませんね。

プロダクトをより面白くするというミッション

全体的にフラットな環境なんですね。それが面白いゲームを作る秘訣なんでしょうか。

ひでじ ゲームについては自分もユーザーの一人なので、単純に「ゲームとして面白いか」とか「自分だったら嫌だな」とか率直な意見を出すようにしています。あと、新規の施策(イベント)を作るときにはエンジニアも企画の段階から参加します。仕様が固まってから「サーバー負荷的にヤバいのでは」という話になったらもったいないので。

けいちゃん チームメンバーから「こういう遊びを入れたいけど、どう思う?」と相談されることはよくありますね。もちろん良ければ良いと言いますし、もっとできそうなことがあれば「こうするほうが面白くないですか」と自分の考えを言うようにしています。

たくろっち 私もデザイナーさんに、こっそり改善案を伝えたことがあります。

こっそり、ですか?

たくろっち (女の子のキャラの)絶対領域あたりの部分で気になるところがあったので、こっそり伝えました。ほかの会社だったら「エンジニアが何言ってるんだ」となると思うんですけど、いい案であれば採用してもらえるんですよね。

ひでじ 社内テストは重要で、本気でゲームするのも仕事です。サーバーサイドの領域だけでなく、関わっているプロダクトを面白くするのが私たちのミッションですから。

サーバーサイドエンジニアの存在が、コロプラのゲームを支えているんですね。専門的なお話をわかりやすくお話しいただき、ありがとうございました!

オンラインゲームの目に見えない部分を作り、コロプラのゲームを支えているサーバーサイドエンジニアたち。インタビューの途中で、たくろっちさんから「サーバーサイドはその存在が気付かれるのが一番いけないことなので、1byteでも通信量を減らして、0.1秒でも速くしたい!」という言葉が出てきたとき、ほかの3人が深く頷いていたのが印象的でした。

コロプラでは開発体制の強化に伴い、サーバーサイドエンジニアを積極採用中です。詳細は新卒・中途採用ページの「募集職種_サーバーサイドエンジニア」からご覧いただけます。