ソーシャルゲーム開発・運用におけるエンジニアの意思決定に焦点を当てたセミナー「『マギレコ』のf4samuraiが語る、開発アーキテクチャとその意思決定について」がGMOアプリクラウド(https://cloud.gmo.jp/)共催のもと、GMOインターネット株式会社のコミュニケーションスペース「GMO Yours」で開催されました。
この記事では同イベントから、当初予定されていた環境がどのような変化を見せたのか、どのような工夫によりパフォーマンスの改善を見せたのかなど、第一線で活躍しているエンジニアたちの口から語られた内容について紹介させてもらおうと思います。

f4samuraiは2010年に設立されたモバイルオンラインゲームの企画開発および運営、ソーシャルアプリ・WEBサービスの開発を行っている会社で、現在も『マギア☆レコード』をはじめとした多数のソーシャルアプリの開発・運営をしています。
セミナーの冒頭、まずは佐藤允紀CMOよりご挨拶があり、f4samuraiという企業の沿革や業務内容などが語られました。現在のマギレコは40名の開発体制(全体は130名)をとっていますが、増員を図っており、多くの職種で採用募集をかけているとのこと。
マギレコのインフラ
続いて登壇したのはマギレコのインフラをメインに担当しているサーバサイドエンジニアの森田桂介(もりた けいすけ)氏。森田氏はマギレコのインフラ構築の際に発生した問題点と、その解決に向けてどのようなアプローチを行なったのかを語ってくれました。


f4samuraiではエンジニアに対して基本的に大きな権限が与えられており、自由にやりたいことに挑戦できると語った森田氏。その実例として、マギレコのインフラ構築の際の森田氏自身の意思決定について、時系列を追い解説してくれました。
まずは性能の目標を具体的に掲げ、複数の選択肢を模索。その候補の一つがAWS(アマゾンウェブサービス)のリレーショナルデータベースである「Amazon Aurora」。森田氏もAWSを使うのは初めてだったそうですが、かなり速いという話を聞き、採用してはいけないという理由もないためテストを行ったとのこと。テスト結果は上々で、おおむね目標を達成。正式採用が決定しました。
次に森田氏が直面したのはインフラ管理。マギレコの開発現場では、以下の4つの艦橋を管理する必要があったそうです。
・エンジニアの開発環境
・プランナーがパラメータを変えながら調整する環境
・ステージング環境
・本番環境
インフラのバージョン管理や属人化の排除、資産として共有できる形にしたいということで、TerraformやAnsibleといったインフラ管理ツールを採用したとのこと。
こうして形となった『マギレコ』のインフラですが、なんとリリースの5日前に大きな動きが。AWSを使用する際に付いてくれるソリューションアーキテクトと呼ばれる専門家から、最後の打ち合わせで「シャーディングしてないけど大丈夫なんですか」と指摘があったそうです。
シャーディングとは、複数のサーバを使用し単一の論理データベースを構築する手法で、負荷分散が容易であるなどの様々なメリットがあります。
森田氏の属するサーバエンジニアチームは翌日、つまりリリースの4日前にシャーディングすることを決意しDBを分割。プログラム対応、インフラ対応、再度負荷試験を行ない、リリース2日前にはシャーディングへの対応を完了。当初目標に掲げたRPSの3倍を達成したと語ってくれました。
マギレコのアプリケーションアーキテクチャ
森田氏に続いて登壇したのはf4samuraiの最高技術責任者、松野洋希氏。松野氏はアプリケーションについて、特に工夫した部分を語ってくれました。

『マギレコ』のアプリケーションは大きく分けてクライアントサイド、サーバサイド、フロントエンドの3つのパートに分かれています。この中のクライアントサイドはf4samuraiではネイティブと呼んでおり、いわゆるUIとcocos2d-xというゲームエンジンで書いている部分を指します。サーバサイドはインフラ以外のアプリケーション部分。フロントエンドはマギレコの画面の約9割を占める部分であり、様々な工夫がなされているとのことでした。
クライアントサイドはcocos2d-xで書いているビューが下にレイヤーとして存在し、その上にWebビューが上に乗っているような構成になっていると松野氏。割合としてはWebビュー側が9割ほどを占めており、Webでできないことだけをcocos2d-xで実装しているそうです。
更に2Dのキャラクターを立体的に動かすために、Live2Dを使用。

当ソフトの採用理由は、魔法少女をより可愛く見せるために、生き生きとした動作をさせたいというプランナーの希望によるものだそうです。ここにも開発側の意思を製品にきちんと反映されるという、組織としての風通しの良さが感じられます。
なお、画像の解像度はiPad Proをベースとして、にじみなどが出ないようにチェックしているそうです。
f4samuraiでのエンジニアの役割とは

最後に松野氏は、「ゲームプランナーやディレクターという立場の方には面白いゲームを作るという部分に注力してもらい、エンジニアはゲームにとっては仕様とは言えないけれども重要な部分に責任を持つというスタンスで仕事をしている」。「個別の技術を追うのではなく、『こういう風にゲームを作った方が良いんじゃないか』」という方法論を追いかけていると語ってくれました。
約1時間のセミナーの間中、会場は必死にメモを取るキーの音がひっきりなしに鳴り響き、続いて行われた質疑応答においても、参加者から投げかけられた質問に対し、丁寧に対応しておられました。
また、セミナー終了後は、登壇者、セミナー参加者入り混じっての懇親会が開かれました。

松野氏の「乾杯!」の合図で始まった懇親会では食べ物もお酒もソフトドリンクも無料。
特に今回のセミナーには、エンジニアの方々が多く参加しており、そこかしこで飲み物を片手に技術的な会話が繰り広げられていました。
現在f4samuraiではゲーム開発にかかわる人材を募集しているそうです。興味がある方は、応募してみてはいかがでしょうか。