国内音ゲー、「ベトナム語版がバグる」原因が開発者らの恐怖を呼ぶ。“カンマとピリオド逆問題”による数字のワナ
国内個人開発者THIQXIS氏は12月19日、Twitter上で海外ユーザーに起きた不具合とその原因について投稿した。文化の違いに端を発する問題は開発者を中心に瞬く間に話題となり、驚きや共感の声が寄せられている。問題の原因は、国ごとでの「数字区切りに用いる記号」の違いだった。
THIQXIS氏は、モバイル向け音楽ゲーム『TAKUMI³』などを手がける国内個人開発者だ。同氏は先ごろ、自身のTwitterアカウントにて「ベトナムのユーザーから不具合の報告があり、その原因がわかった」と投稿。解決法についてゲーム開発者たちにアドバイスを求めていた。どうやら、国によって違う「数字区切りにおけるピリオドとカンマ(コンマ)の使い方」が、不具合の原因になっていたようだ。
筆者がAndroid実機で『TAKUMI³』をプレイしてみたところ、たしかに問題が確認できた。Androidの言語設定が日本語や英語であれば、何事もなく遊べる。しかし、ベトナム語設定では、本来きちんと表示されるはずの譜面が非表示になったり、または横に広く伸びてしまったりという現象が確認できた。この現象はほかの地域言語でも発生。ドイツ語でも同じ症状が出たほか、フランス語ではそもそも曲一覧が表示されない不具合に見舞われた。
これらの現象の原因となっているのが、数字区切りにおけるピリオドとカンマの使い方だ。日本やアメリカでは、4桁以上の数字や小数点を表す際に「1,000.00」と表記。3桁ごとの区切りには「,(カンマ)」小数点以下の表記には「.(ピリオド)」を用いる。一方で、ベトナムやドイツでは「1.000,00」とこれが逆転。またフランス語では「1 000,00」といった具合にスペースで数字を区切るのだ。日本人からすれば、ベトナム式の記述を知らなければ1000が1となってしまう。人間であれば、数字に文脈があれば戸惑いつつ「これは1000ですか?1ですか?」と確認するかもしれない。
しかし、プログラムは戸惑わない。もしも、日本やアメリカの基準でデータを解釈するプログラムが、「1.000,00」との文字列を受け取ったらどう解釈するか。「1ですね!」と即座に納得してしまうのである。また、「1,234」などの数値を受け取った場合も問題だ。カンマを小数点として解釈する仕組みになっていなければ、「1234」とそのまま1000倍の数値として受け取ってしまう。結果として、横幅1.234ユニットに設定したはずのオブジェクトが、1000倍に拡大されてしまうなどの現象が起こるのだ。
『TAKUMI³』においても、そうした現象が起きていたと考えられる。幸いにも、THIQXIS氏は助けを借りて解決法を見いだせたようだ。同作がベトナムなど各国でも遊べる日は近いだろう。また、同氏のツイートには多数の反応も寄せられている。国ごとの記法の違いで戸惑ったとの共感の声もあり、他国からの見積書を見て驚いたとするユーザーもいる。たしかに、100万円請求されるところが表記上1円になっていれば何事かと思ってしまう。数字記述の差はプログラムだけではなく、会計の上でも悩みのタネのようだ。また、ヨーロッパ圏の記法がベトナムで浸透している点について、歴史的背景に思いを馳せる人もいるようだ。
なお、『ポケットモンスター ブリリアントダイヤモンド・シャイニングパール』も、記述法の違いに起因すると見られる不具合に見舞われている。こちらのケースでは、Nintendo Switch本体の言語設定により、電卓が奇妙な振る舞いを見せていた。不具合が出る言語もドイツ語、フランス語など、今回のケースと共通している(関連記事)。ロケール(言語環境)と数字区切りにまつわる問題は、今後も作品の世界展開を目指す開発者の足元を掬うかもしれない。
※ The English version of this article is available here