SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2018 福岡】セッションレポート (AD)

3年にわたる大規模システム開発・運用から得た教訓――「誰ガ為のアルケミスト」開発の歩み【デブサミ2018 福岡】

【B-2】福岡発Node.jsで支える大規模システム!~「誰ガ為のアルケミスト」と歩んだ三年

  • このエントリーをはてなブックマークに追加

 利用者数が全世界で600万人を突破した本格タクティクスRPG「誰ガ為のアルケミスト」。その開発・運用のほぼ全てを行っているのが株式会社gumiの福岡オフィスだ。人気ゲームの歩みは、決して平坦な道のりばかりではなかった。数多くのトラブルに見舞われながらも、その経験から数多くの教訓を得てきたのだという。約3年にわたるシステム基盤の進化の歴史を、同社の的野礼峰氏が語った。

  • このエントリーをはてなブックマークに追加

株式会社gumi Entertainment Engineering - Technical Manager 的野礼峰氏
株式会社gumi Entertainment Engineering - Technical Manager 的野礼峰氏

First to Try, First to Fail, First to Recover

 「誰ガ為のアルケミスト」では、サーバーサイド言語としてNode.jsが採用されている。Node.jsはサーバーサイドで動くJavaScript環境だ。シングルスレッド、ノンブロッキングI/Oによるデータ送受信、イベントループによる動作などの特徴を持つ。

 「今から3年ほど前、gumiにおけるNode.jsでの開発実績はゼロでした。当社のサーバーサイドのコア言語はもともとPythonだったんです。ではなぜNode.jsが採用されたかというと、『Node.jsはイケてそうな言語だから』『話題になっているから取り入れてみよう』といった安直な理由でした(笑)」

 こうした理由でも導入できたのは、同社の行動指針である「First to Try, First to Fail, First to Recover(誰よりも早く挑戦し、失敗し、そして復活する)」に起因している。つまり、新しい分野にチャレンジすることや、その経験から何かを学び取る姿勢が重要視されるということだ。

 「とはいえ初期の頃は、Node.jsを用いて適切な開発ができていたとは言い難い状況でした。実装について振り返ると、まずデータベース周りについてはモデル化されていませんでした。ORMがなかったんです。また、XAトランザクション(分散トランザクション)も、マイグレーション関係の機能も未実装でした。当時のスクリプトを見ると、頑張ってALTER TABLE文を書いていた形跡がたくさん残っています」

 さらに、サーバー周りについても当時はまだまだ多くの課題があったという。

 「デプロイはファイルをSCP転送して、手動でプロセスをリスタートしていました。さらにNode.jsのデーモン化もできておらず、もしもプロセスが落ちたらそのまま死にっぱなし。Logに関しても、収集方法が実装されていませんでした」

 こうした数多くの課題を、3年間の歩みのなかで改善し続けてきたのだという。この経験をもとに、的野氏は大規模システム開発における教訓を語った。

 「たとえ最初はエンジニアの人数が少なかったとしても、開発が長期間になるにつれてどんどん増えていきます。コードの品質を安定化するため、早めにコーディング規約などを定めておいた方がいいでしょう。また、賛否両論はあるかもしれませんが、ORMを導入しておいて損はないと思います」

 また、負荷分散について考えておくことは重要だという。当然ながら、アクセス量が多くなると1つのデータベースでは絶対に耐えられない。最初からスケールアウトやトランザクション整合性などを考慮したつくりにしておくべきだ。

 「長期にわたって運用し続けることを念頭に置き、デプロイやマイグレーションの方法についても最適化しておきましょう」

次のページ
大規模システムの運用においては、負荷試験が極めて重要になる

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2018 福岡】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11094 2019/01/18 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング