Tarotas By Inithouse: 1つのドメインで5言語を管理する方法
私たちはInithouseでツールを開発しています。製品の一つに、タロットカードアプリのTarotasがあります。私たちは、チェコ語、英語、ポーランド語、スロバキア語、ドイツ語の5言語でコンテンツを提供しています。これらすべては1つのドメイン上で運用されています。
多言語設定のための構造を選択する必要がありました。私たちは以下の3つの選択肢を検討しました。
- 国別コードTLD (example.cz)
- サブドメイン (cs.example.com)
- サブディレクトリ (example.com/cs/)
私たちはサブディレクトリを選択しました。その理由は以下の通りです。
サブディレクトリなら、すべてを1か所にまとめて管理できます。デプロイ、SSL証明書、Search Consoleのプロパティを1つずつ用意するだけで済みます。また、リンクの権威性(link authority)を1つの場所に集約できるのも利点です。これは、立ち上げ初期の製品にとって非常に重要です。
他の選択肢には高いコストがかかります。
- TLDは強力な地域ターゲティングが可能ですが、複数のドメインとDNSレコードを管理しなければなりません。これにより、運用上のオーバーヘッドが膨大になります。
- サブドメインは、半独立したサイトとして機能します。そのため、リンクの権威性が分散してしまいます。また、それぞれに対して個別のSearch Consoleプロパティが必要になります。
技術スタックもこの選択に影響を与えました。TarotasはReactを使用しています。サブディレクトリは単なるルート(route)であり、私たちのルーターで簡単に処理できます。一方、サブドメインを使用する場合は、複雑なDNS設定やデプロイの変更が必要になります。
これを実現するために、私たちはhreflangタグを使用しています。これらのタグは、検索エンジンに対してどの言語を表示すべきかを伝えます。しかし、その実装は一筋縄ではいきません。
多言語SEOを台無しにするよくある間違い:
- 双方向リンクの欠如。ページAがページBにリンクしている場合、ページBからもページAへリンクを返す必要があります。
- 誤ったcanonicalタグ。各言語のページは、そのページ自身をcanonical URLとして指定しなければなりません。すべての言語のページを1つの英語のURLに向けてしまうと、Googleは他の言語のページをインデックスから削除してしまいます。
- クライアントサイドでのインジェクション。JavaScriptだけでタグを注入している場合、検索エンジンがタグを認識できない可能性があります。メタタグが初期HTMLに含まれるようにする必要があります。
- x-defaultの指定漏れ。言語が一致しないユーザーのために、フォールバック言語(代替言語)を用意しておく必要があります。
多言語製品を展開する際のアドバイス:
- シンプルさと権威性の共有を重視するなら、サブディレクトリを使用してください。
- 言語よりも地域ターゲティングや現地価格の設定が重要な場合は、TLDを使用してください。
- すべての言語において、canonical URLが自己参照(self-referencing)になっていることを確認してください。
- コンテンツが国境を越えて通用するものであれば、言語のみのタグを使用してください。
- 重複コンテンツの警告が出ていないか、Google Search Consoleを監視してください。
- 結果が出るまで数週間は待ってください。Googleがこれらのシグナルを処理するには時間がかかります。
海外からのトラフィックが少ないと感じる場合は、まずcanonicalタグを確認してください。通常、エラーの原因はそこにあります。
