”見えない体験”作りで、ゲームを支える!「日本一のゲームバックエンド」を目指す
-
技術基盤本部 第1バックエンドエンジニア部
部長田中 諒
大学卒業後、モバイル系ベンチャー企業でゲームやアプリの開発に携わり、2012年にコロプラに入社。サーバーサイドエンジニアとして『白猫プロジェクト』や『プロ野球PRIDE』など複数のタイトルを担当。現在は、第1バックエンドエンジニア部の部長を務める。
-
技術基盤本部 第2バックエンドエンジニア部 第1グループ
マネージャー新庄 大輔
SIer、動画配信サイト、医療機器メーカーなどのバックエンド業務を経て、2009年に入社。『コロニーな生活』や社内プラットフォームの開発などを担当。
現在は、第2バックエンドエンジニア部第1グループのマネージャーを務める。
「サーバーサイドエンジニア」という職種名からして、サーバーに関わる仕事であることはイメージしやすいですが、実はゲーム開発における彼らの業務範囲は多岐に渡ります。今回、コロプラ創業初期からエンジニアとして活躍し、現在は部長とマネージャーを務めるお二人に、ゲーム開発におけるサーバーサイドエンジニアの役割と、そこで求められる姿勢や考え方をお聞きしました!
- INDEX
- サーバーサイドエンジニアの業務内容とミッション
- コロプラで活躍するサーバーサイドエンジニアとは?
- スキル研鑽の取り組みとサポート体制について
- サーバーサイドエンジニアの採用について
サーバーサイドエンジニアの業務内容とミッション
まずはサーバーサイドエンジニアの業務内容を教えてください。
田中 一言でいうと、ゲームの"目に見えない体験"を作るのが我々の仕事です。
例えば、他のユーザーさまとのオンラインでの交流や対戦といったソーシャルな体験は、自分以外のユーザーデータを大量かつ高速に取り扱う必要があるためサーバーサイドアプリケーションでの機能実装が必要不可欠です。対戦結果の検証や報酬の抽選処理をサーバーサイドにおくことで不正を防ぎ公平性を担保する側面もありますね。
長く遊べる、というのも我々が提供する見えない体験の1つでしょうか。毎日同じコンテンツばかりで飽きてしまわないように、日々新しいコンテンツのデータを提供したり、機種変更をしてもゲームデータがすぐ復旧できるようにしたりという役割もサーバーサイドが担っています。
一方で、サーバーとの通信時間が長いとゲームのテンポが遅くなり、悪い体験を与えてしまうことになります。データや機能の追加でサーバーの処理速度が下がっていないかをモニターし、都度のチューニングや、必要に応じてのリファクタリングも行なうようにしています。
同じくサーバーに関わるインフラエンジニアとは、どのように連携していますか?
新庄 コロプラではGKE(Google Kubernetes Engine)を利用していますが、定期的にバージョンアップしなければいけないため、インフラエンジニアとは密に連携して作業を行っています。バージョンアップすることで不具合が生じないか、一緒に検証したりもします。
田中 あとは周年イベントや他IPとの大型コラボイベントなど、大規模なアクセス増加が見込まれる場合もインフラエンジニアと連携してこれに備えますね。
新庄 一度に大量のトラフィックが来ても捌けるようにすることは、インフラエンジニアとサーバーサイドエンジニアの共同作業になります。例えば、負荷が集中してサーバーのパフォーマンスが落ちた場合、インフラエンジニアはアプリケーションサーバーやデータベースサーバーの増台やスペックアップなどを行い、サーバーサイドエンジニアがSQLを最適化したり、キャッシュサーバーの使用方法を見直すなどして負荷を分散させるといった作業を行います。
他にはどんな職種と連携することが多いですか?
田中 普段の開発ではプランナーとクライアントエンジニアとのやりとりが多いですね。
特にプランナーとは仕様について綿密に話し合います。まず「一番大事にしたい体験」を確認し、それを実現するための最適な方法を考えていきます。我々は今後も運用していくことを見据えて開発にあたるので、システム仕様やデータ設計の具体的な部分は我々がリードする形で進めていきます。
新庄 それから新規開発や新規イベントを作るときは、クライアントエンジニアと連携があり、その他にも「業務で使うこういうのを開発してほしい」といったような、業務支援ツールの依頼をデザイナーやサウンドクリエイターからもらうこともあるので、他職種のメンバーとのやりとりは多いです。
田中 業務支援ツールの開発は、様々な部署から依頼をもらいますね。他にもGit操作に不慣れな人へのサポート依頼が来たり、ユーザーさまからのお問い合わせに対する調査依頼についても対応することがあります。
新庄 新規イベントや新しい機能をリリースする際、動作確認のためのテスト項目を作ることやテストで不具合が出た場合も我々が対応します。そういった多岐に渡る業務を日々行っているわけです。
ほぼ全ての職種と関わり、本当に業務範囲が幅広いですね。そんなサーバーサイドエンジニアのミッションとは?
新庄 新しい体験を届けながら運用中のゲームも安定させ、ユーザーさまが長く快適に楽しめるようにバックエンドから支えていくことが我々のミッションだと思っています。
それに応じていくためにも、安定運用と育成のバランスを取りながらチーム全体で成長していきたいと思っています。
田中 そうですね。我々技術基盤本部では「日本一のゲームバックエンドを持った会社になる」という目標を掲げています。変化の激しいIT業界において、技術的にも事業的にも存在感を示していくためには、最低でも「日本一」くらいの高い目標を掲げて日々成長を重ねていきたいという思いでいます。
コロプラで活躍するサーバーサイドエンジニアとは?
お二人とも前職でWebサービスなどのバックエンドを経験されていますが、オンラインゲームのバックエンドと大差ないものなんでしょうか?
田中 そう考えてもらっていいと思います。もちろんゲームならではの要素はありますが、基本的にはRESTful※なWebアプリケーションを開発しているという点で全くの別物ではないという認識です。
※RESTful:REpresentational State Transfer
「ゲームならではの要素」というと、どんなところが違いますか?
田中 1つのゲームを形作る機能・要素の多さと、書き込みトラフィックの多さでしょうか。
ゲームは、マスターデータ(キャラクターやアイテムのようなコンテンツを定義するデータ)とユーザーデータ(ユーザー個別にコンテンツの所持・育成状況を保持するデータ)とでテーブル数が数百個に及ぶ大規模サービスです。
ユーザーさまの行動は基本的にデータベースへの書き込みを伴いますし、コンテンツの更新は毎日特定の時刻に行われるため、そうした書き込みトラフィックが一極集中するという特性もあります。
色々な機能の開発ができるという点で飽きることはないのですが、パフォーマンスに配慮した設計・開発は苦労するポイントでもあります。
新庄 私がコロプラに入社したときにもっとも違いを感じたことは、リリースのサイクルが早いことでした。私が以前働いていたSIerの会社では、プログラムを作った後幾度もテストの工程があり、どんなに早くてもリリースまでに3カ月から半年はかかりました。ところが私が入社した当時のコロプラは、責任者がGOサインを出したらすぐに作り始め、その日のうちにユーザーさまの手元に届くというスピード感でした。これには圧倒されましたね(笑)。
田中 今はクライアントアプリの申請スケジュールも考える必要があるので、アップデート頻度は月に2回くらいのペースになっていますが、1回1回のボリュームが大きいので更新ペースは早く感じますね。
コロプラでは、どんなバックグラウンドを持ったサーバーサイドエンジニアが活躍していますか?
田中 採用では、一般的なWebアプリの開発技術を持っていることを前提条件としていますが、ゲーム業界の経験はマストにはしていません。サーバーサイドエンジニアのゲーム業界出身率は2割程で、非ゲーム業界出身者の方がむしろ多いくらいです。
新庄 基礎をしっかり培ってきたエンジニアであれば、ゲーム開発においても活躍出来ると思います。コロプラで活躍しているエンジニアは、少なくとも自分が使っている技術を人に説明出来るくらいには理解しています。
田中 どの会社もそうだと思いますが、事業成長への貢献意識が高いエンジニア、そのための技術的なアプローチが取れるエンジニアが活躍しています。
単純に機能実装のスピードが速い人。設計技法に関する知見を有し、変更容易性に優れた実装が出来る人。様々な情報を整理しユーザーメリットと開発者メリットの高い選択肢を提案出来る人。活躍の仕方はそれぞれです。
ゲーム開発が未経験でもスムーズに順応出来るものですか?
田中 開発業務にはすぐに順応出来ると思います。サーバーサイドのメイン言語、フレームワークはPHPとLaravelなので学習コストはさほど高くないはずです。逆に苦労したと聞くのは、ゲームの全体像や各コンテンツの仕様を理解するところでしょうか。入社したての方がチームメンバーと昼休みに担当ゲームをプレイしたり、攻略サイトを読んでいる様子はよく見かけます。
新庄 もちろんゲーム特有の部分はありますが、それはWebサービスも同じことでどの業界にもあるもので、前職できちんとそれを会得した方であれば業務をやっていくうちにすぐに慣れると思います。
スキル研鑽の取り組みとサポート体制について
業務にスムーズに順応し、さらに成長を遂げるためのサポート体制について教えてください。
新庄 基本的に二人一組で業務を担当するのですが、経験豊富な人と経験が浅い人に組んでもらい、先輩エンジニアから学んでもらうようにしています。もちろん技術面だけでなく、コミュニケーション面で苦労している人がいたら、ヒューマンスキルが高い人と組んでもらったりもします。
田中 二人一組で担当することは育成やメンター的な役割だけでなく、精神的負担の軽減にも繋がります。もし一人で業務を担当して、大きな事故を起こしてしまったら、責任を感じさせてしまいますし、ビジネス面でも会社が損害を被ってしまう。そうした最悪の事態を避ける意味もあります。
新庄 入社後すぐに業務を任されて放置されるといったことはなく、一人前になるまで先輩エンジニアからサポートを受けることが出来ます。
田中 二人一組は担当者の心理的安全性を担保する意味でも効果的です。業務を通してバグが出る、不具合が生じるということはどうしてもゼロには出来ないので、もしものときに個人に責任が集中しないように注意を払っています。コード品質の向上、責任の分散という点ではコードレビューもしっかり運用されていますね。大きめの機能開発時には設計時点でレビューを実施し、致命的な考慮漏れによる作り直しのリスクを軽減しています。
新庄 私がコードレビューをするときは、自分が書いたつもりでコードを読み、本当にその作り方が最適かを検討した上でアドバイスするように心がけています。そのためにもコードの変更箇所と前後の文脈を丁寧に読むようにしていますね。自分が作ろうとしている機能が他のタイトルに組み込まれていたら、ソースコードを見て参考にしたりすることも出来できますし、そのコードを書いた担当者に直接相談することも出来るので、技術を使用する判断や理解も早いと思います。
田中 コロプラでは社内のソースコード(※協力会社が関わるコードを除く)を従業員に公開しています。各ゲームタイトルの具体的な機能実装や、社内フレームワークを管理する基盤グループが用意したスケルトンプロジェクトを通してベストプラクティスを知れるので、コードを書く際の参考になると思います。
メンバーのスキル研鑽については、どのように取り組んでいますか?
田中 開発・レビューを通してチームの中で学んでいくというのを前提としつつ、組織としては個々人が持つ知見の共有、ナレッジスパイラルが活性化するように文化作りを進めています。
不定期で開催している社内勉強会/LT会では「開発中タイトルで初採用した新技術」や「直近の新作ローンチを経ての知見」、「あるタイトルでの大型機能開発の裏側」と様々なテーマで情報共有を行っていますし、社外向けに発信・開催している技術ブログや勉強会は社内からもよくウォッチされています。技術トピックごとに立てたSlackチャンネルでの相談・議論もよく見かけますね。
新庄 業務中に「この設計より、こういう設計の方がいいのではないか」というふうに突然議論が始まることもよくあります。そうすると興味のあるメンバーが集まり、議題について話し合うわけです。それを聞いているだけでも勉強になると思います。
田中 コロプラの魅力は、イケてるエンジニアがたくさんいることだと思います。せっかく優秀なエンジニアが集まっているのに、担当プロジェクトが違って接点がないために、その恩恵を受けられないというのはもったいないですから。
サーバーサイドエンジニアの採用について
サーバーサイドエンジニアの採用では、どんなことを重視していますか?
田中 重視しているのは、「その人の一番強い武器は何か」「それはコロプラで再現性を持つか」ということです。
具体的な質問としては「これまでで一番大きな成果物はなんですか?」「これまでで一番頑張ったことはなんですか?」といった質問をよくします。
"どういう課題を前に、どう乗り越えた"その具体的なエピソードを前提に、それを成す上で必要になるであろうスキル・知識について深掘りしていくことでその方の強みとコロプラでの再現性を確認しています。
また、"技術ファースト"ではなく"ユーザーファースト"に物事を考えられるかも重要視しています。技術は大事だけれど、それはサービスとその先にいるユーザーさまのために使われるべきだと考えています。
新庄 やはりエンジニアの採用ですので、技術に対する一定の理解があることを前提として、様々な技術に興味を持っているかを見ていますね。特定の技術だけに興味がありそれだけをやってきたという人だと、様々な機能を作らなければいけないゲーム開発の仕事は向いていないように思います。逆に興味範囲が広い人は、自分から技術を探求していくものだと思います。
最後にコロプラへの入社を考えている人にメッセージをお願いします。
新庄 サーバーサイドエンジニアの仕事はユーザーさまから見えづらいものですが、私たちは常にユーザーさまを見ながら作っています。サーバーの向こうにはその何百倍、何千倍というユーザーさまがいて、ゲームを遊んでくれている。それを支えていくことが仕事の醍醐味だと思います。
私がメンバーに常々話していることに、「誰のために作っているか」を意識することがあります。もちろんプランナーやクライアントエンジニアの要望に応えるために作っている側面もありますが、最終的には、ユーザーさまにより良い体験を届けることが目的です。それがユーザーさまに届いたときに達成感や、やり甲斐が得られるものです。ぜひコロプラでバックエンドを支える醍醐味を味わっていただきたいです。
田中 ゲームの開発経験を問わず、ゲーム業界、エンタメ業界に興味があり、我々の話に少しでも共感するところがあれば、ぜひ会ってお話しましょう!
"カジュアル面談"はいつでも門戸が開かれているので、気軽に会いに来てください。リモートでも実施していますし、より具体的な質問にもお答えできると思っています。下記にリンクを貼っておきますので、ご応募お待ちしています!
現在コロプラでは、「カジュアル面談」を実施しています。
会社の雰囲気や従業員の属性、福利厚生などを採用担当に質問ができる機会となっております。
転職に向けた情報収集を行いたいと思っている方はぜひご活用ください。