🌍 「翻訳しながら検索できるブラウザ」が欲しかった

きっかけはごく単純な不満でした。

「フィッシュアンドチップスの作り方」を調べたいとき、日本語で検索すると当然ながら日本語の記事しか出てきません。でも本場イギリスの作り方はやっぱり英語で書かれた記事に詳しいはずで、それを読みたい。

理想はこういうブラウザです。日本語でクエリを入力したら、DeepLのような高精度な翻訳エンジンで各言語に変換し、英語・フランス語・アラビア語……あらゆる言語で書かれたページを横断的に検索して、結果をまとめて日本語で表示してくれる。

そんなブラウザ、誰か作ってくれないかな。いっそ自分で作れないかな。そう考え始めたのが、このツールの出発点でした。

🚧 理想の実現は難しかった

調べてみると、現実の壁はすぐに現れました。

Googleのような検索エンジンのインデックスは言語・地域ごとに分かれています。「日本語クエリで英語ページをまとめて検索する」というのは、既存の検索APIの設計思想とそもそも合っていない。Google Custom Search APIなどを使えば部分的には近いことができますが、無料枠はすぐに消え、結果の精度や多様性も十分ではありませんでした。

「翻訳して横断検索して日本語で表示」という理想を完全に実現するには、自前でクローラーを動かして多言語インデックスを作る……という途方もない規模の話になってしまいます。

そこで、コンセプトを根本から見直しました。

💡 「言語で横断検索」から「文化圏で比較検索」へ

発想の転換はこうです。「翻訳して一カ所に集める」のではなく、「翻訳して各国のGoogleに飛ばす」。

入力した言葉を複数の言語に翻訳して、それぞれの国・地域のGoogle(google.co.jpgoogle.comgoogle.fr……)に対して検索リンクを生成する。あとはそのリンクを自分でクリックして見比べる。

検索結果を一画面に集約することは諦めましたが、それによって逆に面白いことに気づきました。同じ言葉でも、言語・地域によって検索結果が全然違う。

「朝食」で検索したとき、日本のGoogleと中国のGoogleとアラビア語圏のGoogleでは、出てくる画像も記事も文化的背景もまったく異なります。それ自体が発見であり、なかなか面白い体験です。

こうして当初の「翻訳横断検索エンジン」というコンセプトは、「文化圏ごとの検索結果を比較できるツール」へと着地しました。

🗺️ 「国」ではなく「文化圏」で14言語を選んだ理由

言語の選定にはこだわりました。単純に「話者が多い言語トップ14」にするのは簡単ですが、それだと文化圏の偏りが大きくなります。

このツールの目的は「文化の違いを体感すること」なので、できるだけ多様な文化圏をカバーしたい。そこで「話者人口」と「文化圏の独自性」の両面を考慮して14言語を選びました。

言語 文化圏
日本語 東アジア・日本独自文化
中国語 中華圏
英語 アメリカ/国際圏
ヒンディー語 南アジア・インド文化圏
スペイン語 中南米・イベリア圏
フランス語 西欧・旧フランス植民地圏
アラビア語 中東・イスラム圏
ポルトガル語 ブラジル・ポルトガル語圏
ロシア語 スラブ・旧ソ連圏
ドイツ語 中欧・思想文化圏
韓国語 東アジア・韓国文化
トルコ語 オスマン・中央アジア圏
タイ語 東南アジア・仏教王国圏
スワヒリ語 東アフリカ圏

東南アジアは当初インドネシア語・ベトナム語・タイ語の3言語を入れていましたが、アフリカ大陸が完全にゼロになってしまうのが気になり、東南アジアをタイ語1言語に絞ってスワヒリ語(東アフリカ圏の代表的な言語)を追加しました。人口14億以上の南アジアを代表するヒンディー語も当初コメントアウトされていたものを復活させています。

ブラジル・ポルトガル語圏については「スペイン語と似てるのでは」という声もあるかもしれませんが、南米最大の国として独自の文化的背景を持っており、検索結果も明確に異なります。

⚙️ 仕組みをざっくり説明

ツールの動作は大きく3ステップです。

  1. 入力した語句を翻訳APIに投げて、14言語分の翻訳テキストを取得する
  2. 翻訳済みのテキストと、各国Google用のパラメータ(hl=言語コード、gl=国コード)を組み合わせてURLを生成する
  3. 生成したURLを言語ごとに並べて表示。「Web」「Images」の2ボタンでワンクリックアクセス

URLの構造はシンプルで、例えば英語(アメリカ)向けの検索リンクはこうなります。

https://google.com/search?q=beautiful+woman&hl=en&gl=us

hl(表示言語)とgl(国コード)の両方を指定することがポイントです。hlだけだとGoogleがアクセス元のIPや設定を優先してしまい、日本にいながらアメリカのGoogle検索結果が見られないことがあります。gl=usを加えることで、強制的にアメリカ向けの検索インデックスを参照させることができます。

🔄 DeepL APIからGoogle翻訳に乗り換えた理由

開発初期は翻訳エンジンにDeepL APIを使っていました。DeepLは翻訳精度が非常に高く、自然な文体での翻訳が得意です。しかし実際に使い始めて、いくつかの問題が発覚しました。

DeepLの問題点

  • 対応言語が少ない:DeepLは高品質な反面、対応言語が限られています。トルコ語・タイ語・スワヒリ語・ヒンディー語などは非対応で、14言語のうち4言語が翻訳できませんでした
  • 非対応言語で全件エラー:当初の実装では非対応言語に当たると「翻訳に失敗しました 😢」が並ぶ残念な画面になっていました
  • APIキーの管理コスト:無料枠の範囲内でも、キーの管理・更新が必要です

Google翻訳(非公式エンドポイント)への移行

そこでバックエンドをGoogle翻訳に切り替えました。具体的には translate.googleapis.com の非公式エンドポイントを利用しています。

https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl={対象言語}&dt=t&q={テキスト}

メリットとデメリットをまとめると以下の通りです。

  • APIキー不要:設定なしですぐ動く
  • 対応言語が多い:14言語すべてをカバー
  • 入力言語の自動判定sl=auto):日本語でも英語でも、どの言語で入力しても正しく翻訳される
  • ⚠️ 非公式エンドポイント:Googleの公式サポートがなく、仕様変更により突然使えなくなる可能性がある
  • ⚠️ 翻訳精度はDeepLより劣る場合がある:特に文学的・ニュアンスの強い表現では差が出ることも

このツールの用途(検索キーワードの変換)においては、文学的な精度よりも言語の網羅性の方が重要と判断し、Google翻訳を採用しています。

🎯 こんな言葉で試してみよう

実際に使ってみて「これは面白い」と感じた検索ワードをご紹介します。文化の違いが如実に出るものを選びました。

  • 美人・美男:美の基準が文化圏で激しく異なります。特に画像検索(Imagesボタン)が面白い
  • 朝食:米・パン・スープ・揚げ物……食卓の風景が全然違う
  • 結婚式:衣装の色・セレモニーの形式・会場の雰囲気がまったく異なる
  • 英雄:国によって出てくる人物像や概念が違う
  • 理想の家:建築様式・庭の概念・間取りの考え方が文化圏で大きく異なる
  • かわいい:日本発のこの概念が他の文化圏でどう解釈されているかが興味深い
  • 漫画:日本発のカルチャーが各国でどう広がっているかが見える
  • 老後の生活:高齢者の扱われ方・生活スタイルの違いが如実に出る
  • 子育て:教育観・遊ばせ方・抱き方まで文化で変わる
  • お祝い:色・飾り・集まり方が文化圏でまったく違う
  • 街並み:各地域の都市景観の違いが画像検索で一目瞭然
  • お墓:死生観の違いが形に出る
  • スポーツ:地域によって何がスポーツかも変わる
  • 神様:宗教観・神の姿の表現が文化圏によって大きく異なる
  • 学校:教室の風景・制服・授業スタイルの違いが出る
  • 市場:食材・雰囲気・売り方の文化差が面白い
  • おやつ:各国のおやつ文化の違いが見える
  • 正装:フォーマルウェアの概念が文化圏で全然違う
  • 花嫁:婚礼衣装の違いが色・形・文化的意味まで異なる
  • ファストフード:各国のファストフード事情と食文化の違いが垣間見える

🛠️ 技術的に工夫した点

翻訳は非同期で順番に処理

14言語分の翻訳リクエストを一気に並列で投げると、サーバーへの負荷やレート制限の問題が出ることがあります。そこでループ処理で1言語ずつ順番にリクエストし、翻訳が完了するたびに結果を画面に追加表示するようにしています。ページが一気に更新されるより、少しずつ結果が積み上がっていく方がユーザーとしても処理中であることが直感的にわかりやすいという利点もあります。

gl= パラメータで本当の現地検索結果を取得

最初は hl=(表示言語)だけをURLに付けていましたが、それだと日本からアクセスしても日本向けのGoogleインデックスを参照してしまい、現地の検索結果が得られませんでした。gl=(国コード)を組み合わせることで、実際にその国のGoogleを使っているときと同等の検索結果を引き出せるようになっています。

dottiqのデザインシステムに統合

このツールはdottiqのツール群の一つとして公開しています。ヘッダー・フッターは共通のPHPパーツを使い、スタイルはツール共通の tools.css にクラス命名規則を揃えて追記しています(.tool-search-* というプレフィックスで統一)。将来的に別ツールを追加するときも干渉しない設計です。

お気軽に遊んでみてください(๑´ω`๑)

「翻訳しながら横断検索できるブラウザを作りたい」という夢は叶いませんでしたが、その過程で「文化を比べる窓」として別の面白さを持つツールができました。

難しいことは何もありません。気になる言葉を入れてリンクをクリックするだけ。ぜひ「朝食」や「漫画」あたりから気軽に試してみてください。世界がちょっと広く見えるかもしれません。