1
/
5

とある遅咲きエンジニアの歩み 〜その6〜

「ゲゲゲの鬼太郎」

子供の頃から大好きだったというわけではないものの、当然知っているキャラクターです。というか、日本に住んでいて「鬼太郎」を知らない人がいるとは思えないような、超有名IPです。そのゲームのサーバサイドのプログラムを自分が作らせて頂ける。
テンションが上がらないわけはありません。

「とにかく今までのゲーム開発で培った知見を全て投入しよう」と思い、まずは基礎設計から始めます。

今まではZendFrameworkというPHPのフレームワークを使って開発していました。フレームワークを使うとコーディング自体はとても楽になるものの、フレームワーク内で行われている処理が追いづらく、ボトルネックが見つけづらくなるという問題がありました。

当初は色々と使っていたフレームワークのコンポーネントも、負荷対策のため徐々に使うのを止めて自作していった経緯があります。

そこで、以下の結論に達しました。

「フレームワークをゼロから自作しよう」

自分でフレームワークを作れば、内部の処理がブラックボックス化してしまうことはないですし、今自分が求めている機能だけをもった、高速で軽量なものになります。

何事も形から入る自分としては、まずフレームワークの名前を決めることにしました。

フレームワーク開発が社内の公式プロジェクトということであればきちんと社内で話し合って名前を決める必要がありますが、今回はあくまで新ゲームの開発の一環としてフレームワークを作るだけですので、名前を決めるのに誰かに相談したり許可をもらったりする必要はありません。

そこで、
「AKATSUKI」
という名前にしました。
ちょっと前に生まれた自分の子どもの名前をそのまま使わせて頂きました。

というわけで、AKATSUKIの開発に入ります。
基本的な設計思想は以下の通りです。

  • コーディング量が多くなっても、サーバに負荷はかけない。
  • DBサーバの負荷は軽くし、テーブル結合などの処理はアプリケーションサーバ側で行う。
  • ルーティングの仕様についてはZendFrameworkを参考にする。

実際の開発としては、DBとの接続はフレームワーク側で受け持つものの、クエリはPHPの処理でSQLを動的に作成し、それをフレームワークに渡してDBを操作することにします。

DB側でテーブル結合はせず、複数のテーブルから取得した値をアプリケーションサーバで結合するようにしました。

読み込むことが多い設定ファイルは、ymlやxml、iniではなく、PHPのソースコードの配列で記述するようにしました。

ゲーム開発のコーディング量は、フレームワークの開発を行なった分かなり増えましたが、自作フレームワークであれば学習コストがほぼゼロなので、結果として開発工数がそこまで激増するようなことはありませんでした。

自作フレームワークの開発以外にも、ゲームのユーザ情報を閲覧できたりアイテムを付与するような管理ページの開発をゲーム本体と同時に行い、ユーザから問い合わせがあっても基本は管理ページだけで調査が完了し、問い合わせの度にエンジニアがDBにアクセスしてデータを確認というようなことをしなくてよくしました。

他にもAPIアクセス時に固有のIDを発番し、それをAPIのレスポンスやサーバ内に吐かれるログに記述することにより、ログを追うような詳細な調査もやりやすくしました。

他にも大小様々な工夫を行い、過去に開発したどのゲームよりも万全を期してリリース日を迎えました。

できることは全てやったという気持ちはあるものの、初めてサーバサイドのエンジニアを担当させて頂いた「もやしもん」の時ほどではありませんが不安な気持ちがゼロになることはなく、
「こんな有名IPのゲームが、リリース直後に不具合のため長期メンテになったらどうしよう」
と、かなりビビりながら最終的なリリース作業を行いました。

そしてついに「ゲゲゲの鬼太郎 妖怪横丁」がリリースされます。

もちろん何も問題が発生しなかったかというとそんなこともないのですが、過去の2つに比べると大きな開発遅延やリリース後の障害も少なく、多くのユーザにプレイしてもらうことができました。

ここでリリースした鬼太郎も、1つ前にリリースした「ネットでガチャガチャ テルマエ・ロマエ」も、リリースから10年以上経過した今(2024年3月)でも稼働しています。

もちろん大小さまざまな改修、機能追加のための追加開発などはありましたが、ゼロから作り直すような大規模な改修を必要がなかったというのは、基礎設計に大きな間違いがなかったことの証明になるかなと思っています。

そしてここから、自分の開発が新規ゲームから社内ツール群「Avengers」に移っていくのですが、それはまた別のお話。

株式会社フジゲームスでは一緒に働く仲間を募集しています
今週のランキング