CTOとは何か、何をするべきなのか――日本のIT技術者の地位向上やキャリア環境を見据えて、本連載ではさまざまな企業のCTO(または、それに準ずる役職)にインタビュー、その姿を浮き彫りにしていく。第2回はgumi執行役員の田村祐樹氏にお話を伺った。
モバイルオンラインゲームのプロバイダーとして、世界でNo.1の企業を目指すgumi(グミ)。先日、LINEとの資本業務提携を発表し(参考)、その海外展開が注目されている。同社は現在、Webゲームの開発で培ってきたサーバーサイドの技術と、コンシューマーゲーム開発の知識を融合させ、新しいタイプのスマートフォン向けネイティブゲームの開発に取り組んでいる。今回は、gumiで技術担当の執行役員を務める田村祐樹氏にインタビューした。
編集部 gumiに入社される以前は、どのような活動をされていましたか?
田村氏 長い間、Wiiやゲームキューブなど任天堂系のコンシューマーゲームソフトの開発に携わっていました。ゲーム開発の現場では、プログラムを組むだけではなく、仕様を作ったり、スケジュールを調整したりといったプロジェクトマネジメントを担うようになり、マネジメントリーダーとしてのキャリアを積んでいきました。
一度だけゲーム業界を離れて、Web開発の業界に転職した経験がありますが、そこでは動画共有サイトの開発リーダーを任され、どのようにしたらWebとゲームを含むアプリケーションとの親和性を高められるのかを学ぶことができました。
編集部 どのような経緯でgumiに入社されたのですか?
WiiやPlayStationといった専用ゲーム機で遊ぶ人が次第に減少し、コンシューマーゲームの市場が冷え込んでいく一方で、iPhoneやAndroidを含むスマートフォンの市場が拡大していくという状況の中で、ゲームの新たな可能性を求めてgumiへの転職を決めました。それが4年前のことです。
編集部 執行役員にはどのような経緯で?
田村氏 入社してすぐに、gumiにとって最初のソーシャルゲームの開発に参加する機会を得た後、いくつかのプロジェクトに関わりました。そして、1つのプロジェクトを立ち上げの段階から担当し、グリーさんが運営するプラットフォームに提供しながら、運用の経験を積んでいったんです。そうしてソーシャルゲームのビジネスが拡大する中で、技術者の執行役員を必要とする状況が生まれたのですが、その時に、エンジニアの面接から評価まで任されていた私が担当することになりました。
編集部 技術担当の執行役員は、どのような役割を担っているのでしょうか?
田村氏 まず挙げられるのが技術の選定です。例えば、弊社では、サーバーサイドの開発言語としてPythonを使っていますが、iPhoneやAndroidに対応する本格的なネイティブゲームの開発を見据えて、クライアントサイドの技術もきちんとしたものを選定する必要が出ています。その際には、技術の変化を見極めながら「どういった分野の技術をどう使えば、ユーザーが楽しめる面白いゲームの開発につなげていけるのか」という点を重視しなければならないと考えています。そのためには、エンジニアだけではなく、ディレクターやデザイナーにとっても使いやすく、作業を効率化できる技術を選定する必要があります。
編集部 日常的には、どのような業務を?
田村氏 技術の選定を適切に行うためにも、現場の特定のチームに入り実際に手を動かして開発プロジェクトの状況を把握しています。同時に全てのプロジェクトの技術的な検証や調整、改善のための作業を指揮しています。日常的には、チームのメンバーと席を並べてさまざまな作業を行っています。
編集部 ご自身でコーディングを行うこともあるのでしょうか?
田村氏 はい、コーディングも行っていますが、実際には仕様的な話にも関与して、なるべく技術の話だけにならないようにしています。技術を、ゲームのレベル(難しさ)デザインやルールデザインにつなげていくことができるよう配慮するようにしています。
編集部 ではコードレビューも?
田村氏 はい、行っています。実際にこのコードを入れても危険はないか、このコーディングの方向性で改修を行って問題ないかといったことも含めて評価しています。もちろん、コードレビューは私だけではなく、他に担当するメンバーがいますので、そのメンバーと協力しながら行っています。
編集部 一つのチームに所属して作業を行いながら、全てのプロジェクトを統括しているわけですね。
田村氏 そうです。他のチームが使おうとしている技術も含めて検証を行い、将来的に全社レベルでどのような展開が考えられるのかを検討しています。
編集部 現在、どのくらいの数のチームが並行して作業を行っているのでしょうか?
田村氏 大きいライン(生産ライン)、小さいラインといろいろありますが、プロトタイプのラインも含めて、現在20弱のラインが動いています。ラインの中には、リリース待ちの段階のものもありますし、手触りを確かめるためのモックアップを作成したプロトタイプ段階のもの、まだコンセプト段階のものもあります。
技術選定以前のルールベースを策定している段階のラインについては、あまり技術的な関与はしませんが、ネットワークを介して実際にゲームを遊べるかどうかなど、ゲームルールに無理がないかどうかはその段階からきちんと見るようにしています。
ちなみに、開発に携わっているエンジニアの数は国内だけで約70名います。チームを構成する人数は、小さいチームで10人程度、大きいチームで20〜30人に上り、ゲームの内容や開発の段階によって規模は変わってきます。当然、最初のコンセプトを決める段階では規模は小さく、段階が進むに従って規模が大きくなり ます。
編集部 技術の選定やプロジェクトの改善以外には、どのような役割をお持ちですか?
田村氏 当然、人材の採用も担当していますし、外部向けに勉強会を開催して、ゲーム開発のノウハウを発表するなど、外部との技術交流を推進して自社の技術の確立を目指すことも重要なミッションだと考えています。もちろん、外部の勉強会に参加して発表することもあります。
編集部 競合他社に対して技術的にどのような強みがあるとお考えですか?
田村氏 サーバーサイドの技術に関しては、Pythonをベースに経験とノウハウを積み重ねて、すでに非常に安定したフレームワークが出来上がっています。例えば、データベース/KVSの分散などを実現する基本的なモジュールは全てそろっており、たとえ大規模なアクセスが発生したとしても、負荷を計測して改善する体制が整っています。
また、サーバーサイドの技術としては、現在、「Erlang」という並列処理指向の開発言語を導入して、サーバーをより容易に拡張できる基盤の構築を進めています。Erlangのプロセスを使ってネットワーク上のやりとりを高速化することによって、例えば、今までネットワークを介して実現できなかったCPU戦(コンピューターとの対戦)などを盛り込んだゲームを軽快に動作させることが可能になります。
編集部 ネイティブアプリの開発に積極的に取り組まれているそうですが、クライアントサイドでの強みは何ですか?
クライアントサイドの技術としては、Webゲームでは使われることのない開発言語、例えば、JavaやObjective-C、C++、さらにその上で動く「Lua」のような高速スクリプト言語を使って、ネイティブゲームでしかできないことに挑戦したいと考えています。そこでは、コンシューマーゲームで培った経験やノウハウ、表現を生かせることが強みになると思います。
また、クライアントサイドでは、3Dの開発技術としてUnityを、2Dの開発技術としてCocos2dxを採用しています。これによって、カメラを使ったように3Dを表現したり、2Dのアニメを軽快な動きで表現したりといったさまざまなアイデアをネイティブのソースコードにスピーディに落とし込めるようになります。
編集部 ガラケーに対応していたHTMLベースのアプリをネイティブゲーム対応にするためにはハイブリッドアプリが解決策になるとよく聞きますが。
田村氏 弊社ではハイブリッドアプリは開発していません。確かに、既存のWebの技術を転用することは可能ですが、いろいろな制限や制約があって、作りたいゲームを思うように開発できないからです。ですから、HTMLで描画していたものはOpenGLにきちんと置き換えるようにしています。Flashで作られたアニメーションやアバターについても、ネイティブで使えるように変換するプログラムを独自に開発しています。
編集部 ネイティブゲームの開発に向けた課題は何ですか?
田村氏 ゲームの開発に必要な技術の幅が大幅に広がり、クライアントサイドの開発言語をはじめとするさまざまな技術を習得する必要があることです。
例えば、ネイティブゲームでは、見た目も動きも美しく仕上げなければなりません。動きが速過ぎるとかえって冗長に見えてしまうので、動きをスムーズに見せるために、動きの最初は遅く、次第に速く、最後は減速させるといった動きを付ける必要があります。
当然、エンジニアが身に付けるスキルセットの幅も大幅に拡大しています。例えば、サーバーサイドのデータベース技術やサーバー負荷の解析技術、クライアントサイドの2D/3Dの制作技術、アニメーションの制御技術など、エンジニアの選択肢が広がるとともに、負担も大きくなっていますので、それを軽減するための仕組み作りと技術の選定が重要な課題になります。
Copyright © ITmedia, Inc. All Rights Reserved.