
Now in REALITY Tech #5 海外進出について
REALITYでAndroidエンジニアをしている営業終了大魔王です。最近は魚の捌き方に興味があります。画像は近所の魚屋で購入した鯛です。1200円でした。
今回はREALITYの最近の海外進出について紹介します。
過去の記事で、日本限定で日本語のみの対応でリリースされていたREALITYが、どのように最初の進出地域であるタイにリリースされたかについて紹介しました。
あれから月日が経ち、現在では63の地域でリリースされていています。2021年6月の時点のデータでは75%のアクティブユーザーが日本以外のユーザーになりました。
今回の記事では、日本とタイのみから現在の63の地域に進出するまでにやったことを紹介したいと思います。
アプリのリリースと地域のリリースの分離
アプリストアの配信地域とは別に、REALITYではアプリに固有の地域の概念があります。この地域は配信一覧画面などで、同じ地域の人の配信を上位に表示するロジックなどに使われています。地域はユーザーの端末の地域設定より自動に割り当てられますが、後から手動で変更することも可能です。
海外進出の当初はAndroidとiOSがそれぞれに地域の一覧を保持していました。この状態だと以下のような問題が起こります。
- 新しい地域に配信する時にアプリのリリースが必須になる
- ストアの審査の都合でAndroidとiOSでリリースタイミングがずれる
- メンテナンス中に地域を増やすのが難しい
そこで、配信地域のデータをFirebase Remote Configで管理することによって、二つのOSを一括で、かつ、リリースの必要なく配信地域を追加できるようにしました。
Remote ConfigにはJSON形式で保存していて、構造は下記のような感じです。
{
"regions": [
{"region":"JP",
"translations":[
"ja":"日本",
"en":"Japan"
]
},
{"region":"TH",
"translations":[
"ja":"タイ",
"en":"Thailand"
]
}
]
...
}
最初は手作業でJSONを書いてましたが、配信地域が増えてきたタイミングからはspreadsheetからexportしたcsvファイルから変換できるスクリプトを作成してそちらで運用しています。
地域別の計測項目の追加
過去の記事でも紹介しましたが、アプリの起動時間を短縮するプロジェクトを実施しました。その際も、日本の裏側のブラジルでもアプリの起動時間に問題がないかわかるようにダッシュボード化し、この値は毎週エンジニアが確認するようになっています。
言語設定に起因する問題の修正
地域が増えていく中で発生した問題として、ポルトガル語などの一部の言語で、アバターが動かなくなる問題がありました。調査をしたところ、アバターの動作に必要なデータを変換していく過程で呼んでいるString.formatがLocaleに依存していたことが原因でした。
String.format("%f", 3.14)
>> 3.140000 //端末の設定による
String.format(Locale.US, "%f", 3.14)
>> 3.140000
String.format(Locale("PT"), "%f", 3.14)
>> 3,140000
他にも、たくさんの細かい修正を継続的に続けてきました。最初の海外リリース時にはまだ、日本語以外だと違和感を感じる点が多くありましたが、継続的な改善によって、どの地域の人が触っても違和感なく使えるアプリに近づいてるのではないかと思います。
REALITYにはまだ、一部のゲームやギフトが日本語にしか対応していないなど、海外進出のためにやるべきことはたくさんあります。REALITYでは一緒に全人類をアバター化する仲間を募集しています。我こそはという方からの応募お待ちしています。
カジュアル面談も受け付けています!