世界を動かす技術を、日本語で。

私の言語を当てないでください

2025年5月19日原文(vitonsky.net)

概要

  • IPジオロケーションによる言語判定は 誤った前提 に基づくため推奨不可。
  • 国と使用言語には 1対1の対応関係がない ことを強調。
  • Accept-Languageヘッダー の利用が適切な方法であると提案。
  • ユーザー体験を損なうリスクについて 具体例 で説明。
  • 最適な実装方法について 明確な指針 を提示。

IPジオロケーションによる言語選択の問題点

  • IPアドレスは リクエスト元の場所 しか示さず、ユーザーの 言語希望や理解力 を示さないことを確認。
  • VPN利用者、海外旅行者、海外在住者、 多言語国家 などのケースで 頻繁に誤判定 が発生することを指摘。
  • この実装は ユーザー体験の低下 を招き、技術的な工夫ではなく 怠慢 とみなされることを強調。
  • 「大手サイトがやっているから正しい」という 思考停止 を否定し、 独自判断 の重要性を提案。

国と言語の非対応性

  • ベルギー(3言語)、スイス(4言語)、インド(22言語)、カナダ(公用2言語・非公式多言語)など、 多言語国家 の存在を例示。
  • ユーザーはこれらの国に 居住・旅行・VPN経由 など多様な状況があり、 国=言語 という単純化は誤りであることを確認。
  • ジオIPデータベースに基づく UI強制 は、 不正確な推測 による設計ミスとすること。

Accept-Languageヘッダーの活用

  • すべてのブラウザは Accept-Languageヘッダー を送信し、これは ユーザーのOSやブラウザ設定 に基づく言語希望を示すことを説明。
  • ユーザーはこの設定を 任意で調整可能 であり、例としてAccept-Language: en-US,en;q=0.9,de;q=0.8のような形式を提示。
  • このヘッダーは 正確・無料・ライセンス不要・メンテナンス不要 であり、推測や手間が発生しないメリットを強調。
  • 画面解像度やカラースキームを 独自推測で上書きしない のと同様、言語も 推測で上書きしない 姿勢を提案。

IPベース言語判定の弊害事例

  • VPN利用時、Google等で ランダムな言語 が表示され、ユーザーが内容を理解できなくなる体験を共有。
  • ドイツ在住のフランス語話者に英語を表示、ブリュッセルのフランス語話者にオランダ語を表示、香港VPN利用者に中国語を表示など、 誤表示の具体例 を列挙。
  • ユーザーが 離脱 したり、UIで 言語設定を探して修正 する手間を強いることを問題視。
  • 信頼性の低いIPデータベース を使い、ブラウザの正確なヘッダーを無視することのリスクを指摘。

正しいアプローチ

  • Accept-Languageヘッダーを読み取ること を第一に提案。
  • ヘッダー内容を尊重すること を基本方針とすること。
  • ユーザーが 言語設定を変更できるUI を用意し、その選択を CookieやURLパラメータ で記憶することを推奨。
  • GeoIPを使う場合は、 通貨・配送・法的要件 などに限定し、 言語判定には使わない ことを徹底。
  • ソフトウェアが 実際の人間 を対象とする場合、ユーザーの好みを 推測で上書きしない ことを強調。

まとめ

  • IPジオロケーションによる言語選択は時代遅れ であり、 Accept-Languageヘッダー の活用が最適解であることを再確認。
  • ユーザー尊重の姿勢を持ち、 正確な言語判定柔軟な変更手段 の提供を徹底することが、 優れたUX 実現への近道であることを提案。

Hackerたちの意見

一番イライラするのはGoogleだよ。自分が誰か、旅行中だってこと、言語の好み(英語)も知ってるくせに、特定のページでは位置情報に基づいた言語が表示されるんだ。Googleに追跡させてるんだから、もうちょっと良いユーザー体験に使ってほしいよ、広告だけじゃなくてさ。

Googleがこういう風にUXを改善するインセンティブって何だろう?そうあるべきだとは思うけど、重要なのは(1)全ユーザーの中では完全に無視される存在で、(2)ほとんどの人は追跡を気にして、それを回避しようとしてるよね。

確かに、Googleがこの件で最悪の犯人だよね。最近、地元の言語を英語に自動翻訳するのは間違ってるって決めたみたい。あらゆる他の言語は英語に翻訳するのに、なぜか私がこの場所に住んでるから地元の言語を話さなきゃいけないってことになって、英語は必要ないって。検索結果も同様。地元の言語でウィキペディアを見たいでしょ!ずっとそこにいるんだから!地元の言語で検索してるんだから、それはあなたの好みのサインであって、地元の言語を使わなきゃいけないってことじゃないよね。これも「私たちはソフトウェアを賢くして、あなたの好みをすべて推測しなきゃ」っていう考えに当てはまる。Googleはこれに一貫して失敗してるから、なぜ彼らが続けるのか理解できないよ、企業の自己満足以外に。

Googleの開発者とこの議論をしたことがある。彼は、効率のためにコンテンツのレンダリングに異なる段階があって、メインページの構造にはまだユーザー情報がないって言ってた。私の意見ではそれはナンセンスだよ、受け入れ言語ヘッダーはその段階で簡単に利用できるはずだから。

そう、Googleが最悪の犯人だってすごいよね。これって、Googleの半分がキャリフォルニアでキャリアを過ごしてるから、他の言語や単位、タイムゾーンについて全く知らないからだと思う。変だよね、たくさんの外国人を雇ってキャリフォルニアに連れてくるのに。だけど、到着するとみんなベイエリアの外の存在を忘れちゃうみたい。他の会社はこれをうまくやってるのに。Googleはユーザーに敵対的だよ。いや、私は絶対に自転車や徒歩、公共交通機関でアメリカ独自の単位を使ってナビゲートすることはない。

ルーマニアでIELTSを受けていたとき、Googleマップが使えなかったんだ。Googleアカウントでは、優先言語を英語、ウクライナ語、ロシア語の順に設定していて、Accept Languageヘッダーも英語だけにしてたのに、それじゃ設定ミス扱いされてルーマニア語が表示された。運良くGoogle検索を使ったら、英語のクエリに対して「ローカル」結果を表示することはなかったから、サポートスレッドを見つけて、Accept Languageに英語以外の言語を第二言語として設定するように言われたんだ。そしたら、ページがそれを尊重するようになったよ。

確かに。カタルーニャ語を話す人たちは、Googleアカウントにスペイン語が一切関連していなくても、スペイン語を押し付けられるんだ。私の場合、アメリカに住んでるけど、Googleはカタルーニャ関連のクエリでもスペイン語の結果を出そうとする。例えば、スペイン語のウィキペディアを優先する。検索エンジンの挙動は年々変わってきたけど、良くなったことはない。これは、スペイン以外のカタルーニャ語を話す地域や、スペイン語が理解できない子供たちにとって大きな問題だよ。私の経験では、Geminiはカタルーニャのコンテンツを簡単に危険だとマークして、会話を続けられなくする。例えば「この記事を要約して」みたいなプロンプトでもね。最近は改善されたかもしれないけど、まだまだ。Googleはかつて、世界の多様性に敏感で責任ある大手プレイヤーの例だったのに、今はその優先順位が明らかに下がってる。

一番最悪だったのは、新しい国に着いた後、Playストアがローカルアプリを表示しなかったこと。Googleアカウントが古い国に割り当てられてたから。国を変更するのは簡単じゃなくて、古い国とそのアプリを捨てることになった。ちょっと行ったり来たりするから、結局二台目の電話を買って、新しい国用のアカウントを作ったよ。

Googleが俺がイギリスに住んでて英語を話すって知ってるのが変だよね。スペインのホテルの部屋でサインインして英語のYouTube動画を見てると、スペインの広告が出てくるんだ。全然理解できないのに、彼らは俺が理解できないってことを知ってるのに、広告主には請求するんだから、ほんとバカみたいだよ。

それがめっちゃイライラするんだよね。新しいデバイスやブラウザを使うたびに、Googleやそのサービスがヘブライ語で始まるんだ。サインインして英語に何度も変えてるのにさ。読めないわけじゃないけど、翻訳じゃなくて、みんなが使える言語で統一してほしいんだよね。

すべてのブラウザはAccept-Languageヘッダーを送信するんだ。それはユーザーが好む言語を示していて、位置情報やIPに基づいてるわけじゃなくて、OSやブラウザの設定に基づいてるんだよ。確かに、ユーザーは気にすれば調整できるけど、これもまた壊れた前提だね。まず、Accept-Languageは順序付きリストで、日常的に多言語を使う人は絶対的な優先順位を持ってないし、むしろトピックごとの好みのリストを持ってる。例えば、英語のニュースサイトで翻訳されたフランス語版があったとしても、フランス語が得意でも英語版が欲しいってことがある。で、最初のポイントの影響で、ユーザーは実際の好みじゃなくて、最も実用的な言語を指定することが多い。例えば、現地の非英語サイトは国際的な英語サイトよりもトラブルが少ないから、言語を英語に設定しておくと、前者では英語表示が強制されるけど、他のサイトにはあまり影響しない。フランス語のサイトがすべての好みを無視してデフォルトでフランス語版を押し出すのは、実際には助けになることもある。何より、サイトの運営者が可愛くしようとしたり賢くしようとしたりせずに、他のバージョンに切り替えるための明確で迅速なインターフェースを持ってくれたらいいのに。例えば、Wikipediaはそれをうまくやってるよね。

で、最初のポイントの影響で、ユーザーは実際の好みじゃなくて、最も実用的な言語を指定することが多い。この前提はどこから来てるの?多くの(ほとんど?ほぼすべて?)サイトがAccept-Languageヘッダーを尊重しない事実を考えると、ユーザーがこの設定を決めるときにゲーム理論が働いてるとは思えないんだけど。

Hacker Newsで議論の続きを見る