「ドラゴンクエスト」「ファイナルファンタジー」などの開発・販売元であるゲームソフト大手のスクウェア・エニックス。同社はAWSのPaaSを使い、スマートフォン向けのゲームアプリ「FINAL FANTASY XV POCKET EDITION(FFXVPE)」を支えるシステムをサーバーレス構成で開発した。

 同アプリは2018年2月にiOSおよびAndroid向けに世界150カ国で配信し、累計ダウンロード数が300万件を超える。AWSを活用したのは、アプリ内課金の販売記録であるレシート検証用のシステムが必要になったからだ。

不正利用を防止

 レシート検証用システムの開発は「ゲームの不正利用を防ぐため」と、スクウェア・エニックス テクノロジー推進部 リードオンラインエンジニアの重国和宏氏は話す。

 App StoreやGoogle Playといったアプリストアでアプリを購入した場合、課金の証明としてレシートが発行される。正規のレシートかどうかの検証は、端末側で処理するか、レシート検証用システムを用意してアプリストアの検証サーバーに問い合わせる方法がある。

 端末側で検証すると、レシートを複製・偽造されるなどにより、不正利用の恐れがある。そこで重国氏らは、AWSを使ってレシート検証用システムを開発する方針を選んだ。

 レシート検証部分のシステムはPaaSのみで開発することにより、仮想マシンを使わないサーバーレス化を実現した。利用したPaaSは、APIを作成・管理するAmazon API Gateway、サーバーレスコード実行のAWS Lambda、NoSQLデータベースのAmazon DynamoDBだ(図1)。

図1 アプリ購入のレシート検証システムをサーバーレスで構築
[画像のクリックで拡大表示]

 アプリ購入時にアプリストアからレシートが送られると、API Gatewayを介してLambdaが起動。Lambdaは、アプリストアのレシート検証サーバーにレシートを送る。

 レシート検証サーバーは、正しいレシートかどうかなどの検証結果を返す。Lambdaはレシート検証結果を受け取り、DynamoDBに必要な情報を保持する。

 FFXVPEは10章構成のゲームになっており、1章は無料で2章以降が有料になる。2章以降の購入時は、LambdaがDynamoDBの保持情報も照合し、正しいユーザーかどうかを追加判定する。

 アプリ本体には、LambdaからAPI Gatewayを経由して検証結果が送られる。検証結果に問題がなければ、ゲームを開始できる仕組みだ。

 クラウドを選んだ理由について、スクウェア・エニックスのゲーム開発子会社であるLuminous Productionsに所属するプログラマーの堀内要介氏は、「リリース時の高負荷に耐えられる拡張性と、リリース後はシステムのリソースを縮小できる柔軟性があるから」と話す。

 同アプリの場合、リリース後のコンテンツ追加はない。堀内氏は「リリース時やセール時以外はアクセス負荷が下がる。負荷に応じて柔軟にリソースを変えやすい構成にしたい」と考えた。

6人月でシステム構築

 運用負荷の低減や可用性を高める狙いもあった。レシート検証の仕組みはゲーム本編の面白さには貢献しないが、システムが止まると正規購入した顧客も利用できなくなる。スクウェア・エニックスの重国氏は「低コストと高可用性を両立するには、クラウド以外の選択肢はなかった」と話す。

 AWSを採用したのはサーバーレス構成の実績を重視したため。重国氏は「厳密に複数のサービスを評価したわけではないが、API Gateway、Lambda、DynamoDBを組み合わせたサーバーレス構成の事例は数多くあり、ノウハウを得やすかった」と説明する。

 結果として担当者3人が通常業務と兼務しながら、約6人月でシステムを構築できた。低負荷時のAWS利用料は「月額数万円程度に抑えられている。運用負荷はほとんどかからない」と重国氏は語る。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら