OGPの`og:title`を極める:検索エンジン用タイトルとSNS用タイトルの「二刀流」戦略
フロントエンド開発の現場にいると、必ず一度は「OGPのタイトル、`
正直なところ、HTMLの`
今回は、ただの「設定方法」に留まらず、SNSのクローラーが何を求めているのか、そして実務でトラブルを避けるためのベストプラクティスを深掘りしていきましょう。
—
1. なぜ `` と `og:title` を分ける必要があるのか?
まず大前提として、`
- `
`タグの制約: SEOの観点から、検索キーワードを含める必要があり、かつ長すぎると省略されるリスクがあるため、どうしても「硬い」表現になりがちです。 - `og:title`の役割: SNSという「感情でクリックする場所」に最適化するためのものです。ここではSEOよりも、ユーザーの興味を惹きつける「引き」の強さが求められます。
この2つを無理やり同一にせず、それぞれの役割に合わせて出し分けるのが、一流のエンジニアの作法です。
—
2. ブラウザとクローラーの裏側:何が起きているのか
私たちがブラウザにURLを貼り付けると、裏側では何が起きているのでしょうか。
実は、ブラウザがページを表示する際、`og:title`は完全に無視されます。これを読み込んでいるのは、SNS各社のクローラー(Facebookの「Facebot」やTwitterの「Twitterbot」など)です。
彼らはページを巡回する際、HTMLの上から順にパース(解析)を行い、``という記述を探します。もしこの記述がなければ、彼らは苦肉の策として`
ここで重要なのは、クローラーは「JavaScriptが実行される前のHTML」を見ていることが多いという点です。Next.jsやNuxtなどのSSR(サーバーサイドレンダリング)環境であれば問題ありませんが、クライアントサイドで動的にOGPを書き換えようとしてハマるエンジニアが後を絶ちません。OGPの設定は、必ず「サーバーから返されるHTML」に含めること。これが鉄則です。
—
3. 実践:そのまま使えるOGP実装サンプル
実務では、動的にタイトルを生成することがほとんどでしょう。以下に、メンテナンス性を意識したクリーンな実装パターンを提示します。
—
4. 現場で生きる「ちょっとした工夫」
最後に、現場で評価されるプロのエンジニアがやっている「プラスアルファ」のTipsを共有します。
- 文字数制限をCSSに頼らない:
`og:title`はHTMLのメタタグとして書き出すものです。CSSで `text-overflow: ellipsis` をかけても意味がありません。必ずサーバーサイド(またはビルド時)のロジックで、文字数をトリミングするバリデーションを入れましょう。
- OGPデバッガーを使い倒す:
実装したら必ず [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/) や [Twitter Card Validator](https://cards-dev.twitter.com/validator) を叩いてください。「直したはずなのに反映されない!」というトラブルの9割は、SNS側のキャッシュが原因です。デバッガーを使うことで、強制的にキャッシュをクリアできます。
- 文字化け・エスケープ漏れを防ぐ:
特にタイトルに「&」や「”」などの記号が入る場合、HTMLエンティティ化を忘れるとメタタグが途中で切れるという悲劇が起きます。テンプレートエンジンやフレームワークの自動エスケープ機能を過信せず、出力時にチェックする癖をつけてください。
—
まとめ
`og:title`は、単なるメタタグではありません。あなたの書いたコードがSNSという大海原へ飛び出した時、ユーザーが最初に触れる「看板」です。
`

コメント