コンピュータエンターテインメント協会(CESA)は、9月2日~4日の期間、オンラインにて、国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2020」(CEDEC 2020)を開催した。
本稿では、9月4日に実施された講演「開発から運用まで - スマートフォンゲームの国際化対応における課題と解決手法」のレポートをお届けしていく。
セッションには、ドリコムの岩切伸哉氏が登壇。ネイティブゲームでの経験を元に、ブラウザゲームでの開発における、国際化対応についての紹介が行われた。
▲岩切伸哉氏。2013年ドリコム入社。現在は第4プロダクション技術2グループ長、開発エンジニアリーダーを担当している。
■運用チームの構成・バージョンアップフローの紹介
プロダクトでは、国内版の開発・運用をするチームと海外版の開発・運用をするチームに分かれていると言う岩切氏。海外版では複数のバイナリを運用しており、リリースしているコンテンツも時系列が違っているそうだ。
リリースを行うコンテンツの時期も、日本版が先行し、海外版は少し遅れてコンテンツをリリースするなど、それぞれ別となっている。現在は国内版と海外版は、およそ半年ほどのバージョンの差分がある状態で運用が行われている。
国内版のコードが凍結してリリースができる状態になると、国内版のリリースブランチが作られるようになる。海外版は年間スケジュールを管理し、必要なバージョンを決定。そして、国内版のリリースブランチを取り込み、海外版のブランチを作成。そこで、海外用に必要なレイアウトの調整を行っていく。調整後にテストを行い、リリースを行うという流れになっている。
続いて、岩切氏は国内のバージョンを取り込む際に発生していた問題点を挙げていく。問題点としてまず挙げられたのが、海外で修正したコードが国内にマージがされないという点だ。海外で修正したコードは、国内のコードと乖離して差分が出てしまう。リリースバージョンを取り込むタイミングの都度、国内・海外のコード差分が大きくなってしまうのだ。
この問題に対して岩切氏は、ブランチの運用方法を改善。海外のブランチは、取り込む国内バージョンのリリースブランチからフィーチャーブランチを切るようにしたそうだ。これにより、国内へ海外のコードを定期的にマージするできるフローができ、今では定期的な国内海外のブランチがマージされていると続けた。
マージした際のコンフリクトが分かりにくいという問題に対しては、コードベースでの差分を分かりやすいように改善。運用施策の時間軸が違っていたために解放する機能が異なる問題については、ユーザーの育成度を考慮して、コンテンツの開放を運用ごとに違いを出すことに決めたという。さらに、フィーチャートグルを導入し、機能別に簡単にオン・オフができるように設定。ifdefを使用してコード内でトグルが有効であれば、処理を有効にして無効な場合は処理が無くなるように実装をしているそうだ。
また、対応言語が増えると、修正量が増えるという問題もある。そのため、海外版では英語の値をデフォルトととし、他の言語は調整を行いたい部分だけを別で調整。他の言語で調整が必要な場合は、調整が必要なkeyをその言語だけ複製し、変更したい値だけを差分としてデータにしているそうだ。
▲海外対応において修正が必要となるパターンは、大きく分けて6つ。国際化対応するための修正箇所は多いが、修正するパターンはそれほど多くないことが分かる。
■国際化対応のために行ったレイアウト調整の工夫を紹介
海外対応のレイアウトの調整について、岩切氏は以下の7つのパターンに分けて説明する。
①縦横に自動でスクロールするテキスト
国内版でギリギリのサイズにテキストを埋め込んでいると、日本語で範囲内に収まってレイアウトが、他の言語だと収まらなくなる場合がある。自動でスクロールするテキストインスタンスを作成することで、範囲内にテキストが収めることが可能となる。
②個数表示の工夫
個数の表示は英語の場合、複数形・単数形の指定で問題が発生してしまう。このような対応は「単位(s)」のように表現することが可能だが、単語によっては難しい特定のテキストでかなり長くなってしまう場合がある。この問題に対して、「アイテム名×100」のように表示することで、個数表示によるブレを無くすことに成功したそうだ。
③時間表記を残り時間に
イベント期間の表示に関して、「9/4 12:00まで」という表記だと、配信した国によってタイムゾーンを考慮する必要が出てしまう。この場合は「残り時間 12時間」のように、残り時間で表現することでタイムゾーンを考慮する手間が省ける。
④日付表記の工夫
JST(日本時間)やPST(お知らせ時間)といった時間表記がバラバラなままでの情報の共有では、チーム内が混乱してしまう場面がある。日付の書き方も国によって異なるため、お知らせに数字のみの表記があると、開発者が勘違いを起こしてしまう原因にも繋がってしまう。そこで、プロダクトでは「Event start at Nov.11」のように月の短縮文字を使用するようにしているそうだ。
⑤端末のタイムゾーンの利用
④にあった短縮表記以外にも、日付の表記を端末のタイムゾーンを取得して表示する工夫もある。お知らせに埋め込まれている日付表記を、端末のタイムゾーンに合わせるようにしている。
⑥翻訳前の日本語を短く
日本語の時点でテキストがギリギリなレイアウトの時は、画面全体を見て内容を削れそうな箇所がないかを検討し、文章を短くしていく。
画面全体の表示を確認し、説明が重複していたり、冗長な説明テキストであればあれば日本語の時点でテキストを短くし、企画担当者や翻訳者に提案。コードを修正することでレイアウトを調整する必要がなくなるため、国内海外のコード差分が増加することを防いでいるそうだ。
⑦Text Mesh Proの使用
ボタンの上にある画像には、「Text Mesh Pro」を使用しているそうだ。Text Mesh Proはテキストにエフェクトをかけて表現することができるため、ボタンに乗せるテキストをリッチに表現。リソース管理のコスト削減や、工数削減、ダウンロード量削減といったメリットが期待できる。
■チームのエンジニアで協力していること
チームのエンジニアで協力していることとして、岩切氏はワークフローを改善したことを挙げる。コードレビューは国内海外のエンジニアで相互レビューし、定期的なMTGを国内海外で行いなど、連携を密に取っていたと紹介。
海外チームのエンジニアがレビューをする際には、日本語がコード内に埋め込まれていないか、レイアウトの国際化対応が漏れてないかを念入りにチェックを行っているそうだ。文字連結や日本語フォントと海外フォントの違いについても、入念に確認を行っていると続けた。
岩切氏はストアの海外対応で苦労した点として、Google Play ストアからの海外アプリのインストールのハードルが高いこと、海外タイトルのアプリ内の課金商品が日本円で表示されてしまうことを挙げる。
日本円で表示されてしまうエラーに関しては、「Google Play ストア」のキャッシュを削除し、再度VPNでIPアドレスを変更したまま「Google Play ストア」を起動、ストアが変更したい国に変わっていることを確認してから自分のアプリを起動して商品一覧を確認し、無事解決に至ったそうだ。
また、課金アイテムの通貨表示について、通貨表示の確認は全てのパターンを確認するのは手またかかるため、余裕を持ったレイアウトにするべきだと説明した。
最後に、岩切氏は「当セッションの内容を皆さんの国際化対応時のヒントにしていただき、面白いコンテンツが世界中に広まる手助けになれば幸いです」とメッセージを送り、本公演を締めくくった。
(取材・文 ライター:島中一郎)
会社情報
- 会社名
- 株式会社ドリコム
- 設立
- 2001年11月
- 代表者
- 代表取締役社長 内藤 裕紀
- 決算期
- 3月
- 直近業績
- 売上高97億7900万円、営業利益9億300万円、経常利益7億9300万円、最終利益1億400万円(2024年3月期)
- 上場区分
- 東証グロース
- 証券コード
- 3793