一般社団法人コンピュータエンターテインメント協会(CESA)が、8月22日~24日までパシフィコ横浜にて開催した、国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2018」(CEDEC 2018)。
本稿では、8月24日に実施された講演「機能横断チームでアプリを効率よく開発しよう!」についてのレポートをお届けしていく。本セッションでは、ポケラボのサービスサポート部副部長・大宮博考氏が登壇。フレームワークと各種共通ライブラリを用いたゲーム開発などの紹介が行われた。
▲ポケラボ・サービスサポート部副部長の大宮氏。同会社に入社後は、1年間はサーバーサイドのエンジニアとしてアプリの運営を経験し、その後はマネジメントにシフトして複数のプロジェクトでプロジェクトマネージャーに従事。現在はサービスサポート部で会社横断のチーム「基盤チーム」のマネージャー兼、部門の副部長をしている。
■基盤共通化で効率良く4タイトルを横断開発
本セクションで発表されるポイントは大きく分けて3つ。ひとつは、事業戦略に関わる話として「機能横断チームの運営思想」、2つ目に「実際にどういった機能を作っているか」、3つ目は「これまでやってきて良かったこと・悪かったこと」の話を展開していく。
まずは「機能横断チームの運営思想」について。現在、ポケラボでは4つのタイトルを運営している。大宮氏は、昨今の開発事情として「ゲーム内容のボリュームアップにより制作期間が昔より長くなっている」とコメント。そのことから、以下の図で示された通り開発チームをいくつかのレイヤーに分けて考えているとのことだ。
ひとつ目のミドルウェア(Layer5)は根茎となる部分。どういったシステムを使って開発するのかを決めている。また、サーバーサイドはLAMP環境、クライアントはUnityが使われていることが明かされた。
ふたつ目のLayer4では、Unity Libraryや自社のフレームワーク「Server PHP Framework」を共通機能としてまとめて展開。これにより、4つのライン全てでこれらの機能を活用できるような構造となっている。今回の講演では、主にこの部分の詳細が語られるとのこと。
その上に重ねられるLayer3は「ゲームエンジン・ゲームコア」(ジャンル)にあたる部分だ。「GvG」や「アクションRPG」など、過去に制作経験のあるジャンルはノウハウを活かす形で制作を進行しているとのこと。また、上記の例では「パズル」などに見られる通り、制作経験の乏しい分野にも他ジャンルで得た経験から強みを活かす形で随時チャレンジするという取り組みを行っている。
そうして最後に「世界観」や「デザイン」、IPの有無、ゲームのウリとなる部分がLayer1や2に振り分けられると大宮氏は説明した。ここには「ド派手エフェクト」や「キャラクター推し」といった特徴も入ってくる。この際、同時にプロトタイプを作成し、クラッシュ&ビルドを繰り返すことで細かい部分をより明確化していくとのこと。これらの流れを効率化して進めるため、Layer4・5の部分を共通化・固定化している。
さらに、機能横断チームが存在するもうひとつの大きな理由として以下の3点を挙げた。
▲主にメンバー移動によるキャッチアップコストの増加、人員増加によるコードの複雑化、市場規模の拡大に伴う社会的に責任の増加が要因として挙げられている。これらの部分で障壁を下げるためにフレームワーク等の共通化が行われているとのことだ。
続いては、ポケラボで利用している共通機能を紹介。
1.サーバーサイドフレームワーク(通称:Pokke)
▲こちらはPokke全体のイメージ図。
提供されている主な機能についても公開され、いくつかはその詳細も明かされた。なお、機能の権限については「CSはここまで」、「エンジニアはここまで」という風に管理されているとのこと。
▲ユーザーを識別するAccountや、CS対応を助けるBackofficeなどを機能横断チームで作成している。
さらに、このような機能はどのような流れで提供されているのか。大宮氏は簡単な図解を公開すると共に詳細を説明してくれた。
▲まずはSPD(機能横断チーム)がPokkeを更新。WebhookでSatisGenrateが起動し、Composerを生成する。開発者は、Composerから依存関係をチェックして使用できるコードをインストールすることで適切なバージョンの機能が与えられる。
2.Unityライブラリ(通称:Aries)
▲Ariesの全体イメージ図。ポケラボでは、主にUnityのバージョン5.4、5.6、2017、2018(検証中)を使用しており、それぞれのバージョンでAriesが動作するようにしている。
Ariesに備えられている機能は以下の通り。Package Utilitiesを介してパッケージをインストール・インポートしていく。また、HTTPはPokkeと通信するために備えられているとのこと。
▲機能をインポートする際はUnity標準のパッケージ機能を使用している。開発者は、Aries Package Utilitiesをインストールした後、ツールバーに表示される「Aries」という部分からインポートの処理を進めていく。インポートが完了するとAriesで提供されている機能の一覧が見られるようになり、開発者はそこから必要な情報を持ち出せるようになっていると説明された。
3.リアルタイムメッセージングサーバーシステム(通称:Reflector)
最後に紹介されたReflectorは、全てのタイトルで使用されている機能ではないとのこと。
▲Reflectorの全体イメージ図。大宮氏は1点、上記ではReflector1台ずつが全てのKVS(Hazelcast)に繋がっているように図解されているが、これは誤りでReflector1台に対して複数のKVS(Hazelcast)が繋がる形が正しいと修正した。
▲こちらはReflector関連で使用されている機能。
次に、これらの施策を実施して良かったこと、悪かったことを下記の通りにまとめた。
最後に、大宮氏はこのように効率化を実施しても開発速度が劇的に改善されることはないとコメント。ただし、複数のラインが並行して走っている際には、都度実装するのではなくひとつの機能にまとめて効率化することの意義はあると話す。重要な機能をチームとして開発することでリスクを軽減できるため、今、機能横断チームが既にある、これから作るという際には是非、参考にしてほしいとして講演の締めとした。
(取材・文 ライター:松尾真鈴)
(編集 編集部:山岡広樹)
(編集 編集部:山岡広樹)
会社情報
- 会社名
- 株式会社ポケラボ
- 設立
- 2007年11月
- 代表者
- 代表取締役社長 前田 悠太