大規模アクセスと圧倒的運用スピードに立ち向かうサーバーサイドエンジニアの仕事とは?【サイゲームス仕事百科】

近年、マルチプレイやソーシャル要素のあるゲームが身近になりました。こうしたゲームを始めとする多くのスマートフォンタイトルでは、インターネット上にあるサーバーと常時データのやり取りを行っています。通信頻度も高く重要な情報を扱うこともあるため、サーバー側のプログラムの出来が、ゲームの快適性や安全性に直結すると言えるでしょう。他のユーザーの方とともにプレイする体験を、スムーズかつ安定して提供するのがサーバーサイドエンジニアの仕事です。今回はサイゲームスのサーバーサイドエンジニアの仕事について、マネージャーへの取材を基に解説します。

安定・高速・スケーラブルな
サーバーシステムの構築がミッション

サイゲームスは「最高のコンテンツを作る会社」をビジョンに掲げています。最高に面白いゲームを作るために開発スタッフ全員にそれぞれの役割があり、サーバーサイドエンジニアは主に快適性や安全性に関わる部分を担います。快適・安全といったゲームの「遊び心地の良さ」は、サーバーのレスポンスの高速化、サーバーの安定性、メンテナンス期間の短縮化など、さまざまなサーバーサイドの技術によって実現している部分が多々あるのです。その意味では、最高のユーザー体験を生み出すためには我々サーバーサイドが「良い仕事」をする必要があります。

サーバーサイドエンジニアの役割を一言で表すなら、安定・高速・スケーラブルなサーバーシステムの構築です。安定とはサーバーを落とさないこと、高速とはレスポンスを素早く返してゲームをサクサク動作させること、スケーラブルとはアクセス数が増大したときにも適応できるよう拡張性を高くすることです。

サイゲームスには運用年数が長いゲームタイトルが複数あります。長い運用がもたらす知見やノウハウは強みでもある一方で、運用が長くなるほどプログラムの量が膨大になり管理が難しくなりがちです。そういった巨大なプログラムを必要に応じて書き直しながら、より安心、安全で快適に遊べるものへと作り替えていく必要があります。ユーザーのみなさんに長く愛していただけているタイトルを今後10年、20年と運用を続けつつ、アップデートを重ねてより良いユーザー体験を提供できるよう、エンジニアたちは日々知恵を絞っています。

サーバーサイドエンジニアの主な仕事内容

サーバーサイドエンジニアは、サーバーサイドプログラミングやデータベースの技術を駆使して、ユーザーデータを保存したり、ランキングの計算処理を行わせたり、マルチプレイのための情報を処理したりといった機能を実現しています。サイゲームスのサーバーには非常に多くのアクセスがあるため、サーバーを安定して稼働させるには負荷の計測やチューニングは特に重要です。リリース時やイベント開始日、生放送などで注目が集まる日などはサーバーに急激な負荷がかかることが予想されるため、ゲームの盛り上がりやユーザーの方々の動向に合わせて、日々調整しています。

具体的には、各ゲームタイトルについて下記のような作業を行っています。

  • 立ち上げ時や運用中の技術選定
  • 設計、開発、実装
  • 負荷試験、負荷対策、チューニング
  • テストコード作成とテスト
  • 運用、メンテナンス、問い合わせ調査
  • 緊急時の対応、データ修正
  • 自社製フレームワーク開発
  • 開発フロー改善
  • 管理画面、公式サイトなどのWebサイト開発

ユーザーのみなさんが実際に操作するゲーム部分以外にも、システムとして動くもののほとんどにサーバーサイドが関わっています。また、これらの仕事はサーバーサイドエンジニアだけで完結するものではなく、関連する部署と連携して行われています。

例えばプログラムの実装や運用方針を決める際は、クライアントサイドエンジニアやインフラエンジニア、デバッガーなどと連携しますし、新機能の実装にあたってはプランナーから相談を受けることもあります。また、問い合わせ対応に関してはカスタマーサポートと連携しますし、画像の圧縮方法などのルール決めについてデザイナーと話し合うこともあります。サーバーサイドエンジニアは関連部署と密に連携してゲームのクオリティーを高めているのです。

サーバーサイドエンジニアは、より面白い作品を作るため、クオリティーアップのためにさまざまなことに取り組んでいます。
例えば、最近リリースしたタイトルでは、自社製のサーバーサイドフレームワーク(※)を適用しました。このフレームワークは、これまでサイゲームスが手掛けてきたさまざまなタイトルで得た知見の結晶です。サイゲームスの各タイトルに存在する共通機能をフレームワークとして提供することで作業を効率化でき、その結果、現場のエンジニアは新たな「面白い」要素の開発に時間をかけられるようになります。また、ゲームの運用が始まってからは、改善点をフレームワークに取り入れながら今後のさらなる開発品質の向上を目指しています。

※フレームワーク……Webサービスやアプリなどに欠かせない、開発の土台となる機能をまとめたツール

サーバーサイドエンジニアの業務フロー

続いて、サーバーサイドエンジニアの業務フローをご紹介します。実際の業務は必ずしも一方通行に進んで終わるものではなく、反復的なステップを踏むこともありますが、大まかには下図のような流れで進行します。

1.立ち上げ時や運用中の技術選定

どんなプログラミング言語やソフトウェアを用いてサーバーシステムを構築・運用するかを選定します。ゲームの特性と長期的な運用を考慮して最適な技術を選びます。

2.設計・開発・実装

選定した技術を用いてサーバーシステムを実際に設計し、開発、実装していく作業です。ゲームの運用開始後のアクセス数(負荷)を想定し、その数倍の負荷に耐えられるシステムを構築します。

3.システムのデバッグ(テストコードの作成と実施)

開発したサーバーシステムがきちんと動作するかを事前に検証するためのテストコードを作成し、実際にテストをします。問題があれば修正して再度テストをするという工程を、問題が解決するまで繰り返します。

4.負荷試験・負荷対策・チューニング

実際に負荷がかかったときにも安定稼働できるかをテストします。本番環境と同等のテスト環境を用意して、負荷をかけたときの稼働状況を計測し、問題があれば対策やチューニングを施して負荷耐性を高めていきます。

ここまでの工程を終え、ゲームの運用に必要な要素がすべて揃ったらリリースとなります。リリース後は運用状況を監視します。安定運用に入った後も問題が起こった場合は速やかに原因を特定して必要な対策を立て、常時対応できるようにしています。

サーバーサイドエンジニアに
必要なスキルとマインド

サーバーサイドエンジニアも他の開発者と同じく常にユーザーファーストであることが求められ、最高のユーザー体験を提供できるように日々業務に取り組んでいます。ここでは、サイゲームスのサーバーサイドエンジニアに求められるスキルやマインドをご紹介します。

■プログラミングやデータベースに関する知識

エンジニアとしてのプログラミングの知識はもちろん、データベースの知識も必須です。多くのプロジェクトで、プログラミング言語はPHP、データベースはMySQLを採用しています。
その他にあると良いスキルとしては、ミドルウェア技術、通信プロトコル技術、ネットワーク技術、負荷監視、負荷試験、負荷計測、計算機科学に関する知識が挙げられます。今は持っていなくても、新しい技術や知識を調べて吸収する能力は必要です。メモリーの使用量やCPU使用率、負荷計測や負荷試験について自分なりに調べてみるのも良いです。

■理解できるまでとことん追求する探究心

目の前の事象に真剣に向き合い、柔軟さを持って最後までやりきる探究心や、速度や安定性などに対し常に向上心を持つことが大切です。ユーザーのみなさんに安心してゲームをプレイしてもらうにはどうしたら良いかを考えることもサーバーサイドエンジニアの仕事の1つです。

■ゲームを楽しむ心

サーバーサイド開発を通してゲームを面白くすることが我々の最大のミッションです。そのためにサーバーを安定稼働させることは必須ですが、それだけでなく、プレイヤーとしての目線で面白さに繋がる意見や改善案を出すことも大切です。せっかくゲーム会社で働くのですから、「もっと面白くするにはどうすればよいか」を常に考えて楽しみながら仕事をしてほしいと思っています。

サーバーサイドエンジニアの
やりがいとは?

ネットワークを隔てた向こうに、ゲームを遊んでくださる大勢のユーザーのみなさんがいるところがやりがいを感じられる部分です。サイゲームスのゲームには、合計すると150以上の提供先の地域があり、数千万人以上のユーザーがいます。ユーザー数が非常に多く圧倒的なアクセス量があるからこそ高い技術を求められるので、責任感やプレッシャーも大きいのですが、その分大きなやりがいを感じられます。

実際に、苦労して実装した新機能や負荷対策を行った機能がリリースされ、ユーザーのみなさんに楽しんでもらえたときは何よりの喜びとなります。最近も新規タイトルがおかげさまでヒットし、非常に大量のアクセスが発生した中でも、事前の負荷計測とリリース後の迅速な負荷対策をしたことで、大きな混乱もなく安定稼働を実現できました。

例えば『グランブルーファンタジー』では、平時で1日15億リクエスト(※)、人気イベントの開催時は1日に40億リクエスト、瞬間的には1秒間に28万リクエストに上る処理を安定して捌けるサーバーシステムの構築に成功し、開発者イベントで事例として紹介する機会を持つことができました。もちろん、最初から万全だったわけではなく、次から次へと起こる問題に対処しながら築き上げた体制です。こうした経験は、サイゲームスのサーバーサイドだから得られたものだと言えます。

※リクエスト……例えば、ユーザーの方がゲーム内のボタンやリンクを押すなどの「要求」をすること。リクエストに応じてサーバーはデータベースからデータを取得してHTMLを生成して返すといった「応答」(レスポンス)処理を行う

▲2020年に開催された「Developers Summit 2020(デブサミ2020)」では、サイゲームスのサーバーサイドエンジニアが「『グランブルーファンタジー』を支えるサーバーサイドの技術」の講演を行いました

ゲームにはサーバーがなくては実現できない「面白さ」がたくさんあります。マルチプレイ要素、ランキング要素などがその好例です。サーバーサイドエンジニアはそういった機能開発に関わり、プランナーと仕様について議論したり、エンジニアから提案を出したりしながら「面白い」コンテンツを作り続けています。

サーバーサイドの仕事は、ユーザーのみなさんが直接触れる部分は少ないですが、ゲームで楽しんでいただけていることをカスタマーサポートやSNSを通じて知ると、この仕事をしていて良かったなと感じられます。

サーバーサイドエンジニアのキャリアパス

サーバーサイドエンジニアは、特定のゲームタイトルの開発・運用チームに所属するか、横断部署に所属します。開発・運用チームでは、ゲームの機能改修や新規追加要素などを担当したり、管理画面などの運用ツールを整備したり、あるいは負荷や処理内容の改善、デプロイの改善(※)などより良い運用のためにさまざまな業務に取り組みます。横断部署では、自社製サーバーサイドフレームワークの開発や、公式サイトやお問い合わせシステムといったWebシステム開発、負荷試験、技術検証、海外版対応など、横断部署ならではの知見を活かした業務を担当します。

※デプロイ……アプリケーションやシステムを利用可能な状態にすること

データベースについて非常に詳しい、負荷対策の知見が多いといった特化したスキルを持つなど、特定の分野に対する強みを持つエンジニアの中には、そのスキルを活かして活躍する人もいます。担当するタイトルだけでなく広く社内全体でその知見を活かして助言したり、育成に力を入れたりと、幅広い活躍の仕方があります。

また、チームをまとめることを得意とするタイプのエンジニアであれば、各ゲームタイトルや横断部署でサブリーダー、リーダーへとステップアップしていきます。チームのリーダーで経験値を積んだ後は、サブマネージャーとしてチームの枠を超えて技術の発展や育成に携わり、マネージャーを目指していく人もいます。

新人として入社した人は、開発・運用チームや横断部署で一定の経験を積み、自走できる状態になれば、サーバーサイドエンジニアとして一人前と言えます。設計・実装・運用ができ、他のセクションと円滑に連携ができるようになれば、安心して仕事を任せられます。多くの人が2〜3年ほどで自走できるようになります。
新卒で入社し、現在サーバーサイドエンジニアのサブマネージャーを務めているスタッフがまさにその典型で、入社後に『グランブルーファンタジー』や『プリンセスコネクト!Re:Dive』でサーバー開発の基礎やゲームの運用を学び、経験を積みました。現在は現場での業務を続けつつサーバーサイドのサブマネージャーを兼任しています。

現場の雰囲気は所属チームによってさまざまですが、共通して言えるのはコンテンツに対する熱量が高いことです。ギリギリまで調整をして、リリースされたらみんなで固唾を呑んで見守る。そこで気付いた改善点をもとに、すぐに次の開発が始まります。サーバーが安定してスムーズに動作しているかという観点も重要で、サーバーサイドエンジニアがリリース後から熱心にモニタリングツールで動向を見ていることもよくあります。

サーバーサイドエンジニアを
目指す人へのアドバイス

サイゲームスのサーバーサイド開発は、ゲームの運用と密接に関わっています。世にあるゲームをたくさん遊び、さまざまなゲームの仕掛けや運用のパターンをたくさんインプットしておくと良いでしょう。

大規模なサーバーサイドの開発では、未知のトラブルにぶつかることもあります。大切なのは、記録や計測結果からサーバーで起きている事象を正確に読み解いていくことです。そのとき役立つのが計算機科学の基礎知識です。コンピューターがどのように成り立っているのか、データベースとは何かを知っていて損はありません。

採用では「サイゲームスのビジョンやミッションステートメントにマッチするか」とポテンシャルを重視しており、他業界から来た方も多く在籍しています。
そのため、面接時にはその人が「大事にしていること」をよく聞きます。ゲーム開発の経験がある方であれば、どんなことに気を付けて開発や運用に取り組んでいたかを話してもらえるとうれしいです。サーバーサイド開発の経験がある方であれば、特に負荷や運用に関する考えを聞きたいです。また、ご自身がどんな事を成し遂げたいと思っているかをお話しいただければ、サイゲームスのサーバーサイドセクションがその助けになれるのか話し合えそうです。

サーバーサイドは変化に強い組織を目指しています。ゲームの開発環境は常に変化し続けていますから、時代に適応してより良いものを作る姿勢でいなければならないと考えています。スタッフ個人としても、新しい技術が現れたら前向きに捉え「新しい技術で、これまでにないものを作ってみよう」と挑戦するスタンスの人が多く集まっています。
最高のコンテンツを支えるために、一緒にチャレンジしたいという方々にお会いできればと思います。


以上、サーバーサイドエンジニアの仕事についての解説でした。
現在サイゲームスでは、一緒に働く仲間を募集しています。この記事で興味を持った方は、ぜひ一度こちらをチェックしてみてください。

ゲーム開発エンジニア/サーバーサイド/東京の募集要項

★あわせて読みたいサーバーサイドエンジニアにまつわる記事