Next.js ポートフォリオを Google に見せる:本当に効く SEO
ファビコン、サイト名、構造化データ、多言語サイトマップ——検索結果でのあなたのサイトの見え方を決める、具体的な技術シグナル。そして、このポートフォリオでそれらをどう調整したか。
問題:上位表示されても、見栄えが良いとは限らない
私の名前を Google で検索すると、私のポートフォリオが一番上に出ます。SEO は効いています。しかし、良い順位は良い見せ方を保証しません。リンクの横に表示されるアイコン、サイト名、説明文——それらはすべて、Google があなたのコードから読み取る、正確な技術シグナルで決まります。
この記事では、ありきたりな検索結果と、信頼を呼ぶ検索結果とを分ける設定を詳しく見ていきます。
ファビコン:ほとんど誰も守らない制約
Google は各検索結果の左にアイコンを表示します。それが汎用のフォールバックではなくあなたのものになるには、三つの条件があります。
- ファビコンは安定した URL で配信し、
<link rel="icon">で宣言すること。 - サイズは 48px の倍数(48、96、144……)でなければならない。よくある
64×64は、Google に単純に無視されます。 - ごく小さなサイズでも読めること:モノグラムか記号であって、決して細部の多いロゴではないこと。
Next.js では、シンプルな app/icon.tsx ファイルがファビコンを生成し、<link> タグを自動で挿入します。落とし穴は、書き出されるサイズに潜んでいます。
完璧なファビコンでも、
64×64では Google の検索結果に決して現れません。何週間もの疑念を生む細部です。
「サイト名」:Google が表示するものの主導権を取り戻す
既定では、Google はしばしば実際の名前の代わりにドメイン(monsite.com)を表示します。正しい名前を課すには、厳密に一致すべき三つのシグナルを揃えなければなりません。
WebSite構造化データ(JSON-LD)のnameフィールド。og:site_nameタグ(Open Graph)。application-nameメタ。
この三つの値が食い違えば——たとえ片方が「Jean Portfolio」、もう片方が「Jean — Portfolio」というだけでも——Google は諦めてドメインに戻ります。一貫性こそが唯一のルールです。
構造化データ:あなたが何者かを説明する
Person の JSON-LD は、サイトが特定の個人——職業、所在地、SNS プロフィールを持つ人物——について語っていると Google に理解させるものです。最も重みのあるフィールド:
name、jobTitle、description— 基本のアイデンティティ。sameAs— あなたのプロフィール(GitHub、LinkedIn)の一覧。これがサイトをあなたのオンライン上の存在に結びつけ、ナレッジパネルを育てます。image— 写真。リッチリザルトに役立ちます。
各エンティティを @id 識別子(#person、#website)で結ぶと、重複を避け、孤立したカードの寄せ集めではなく、きれいなグラフを Google に渡せます。
多言語サイトマップ:hreflang に飲み込まれない
複数言語のサイトは、どのバージョンを誰に見せるかを Google に伝えなければなりません。それがないと、各言語がインデックス上で共食いします。ルール:各 URL は alternates.languages で自らの言語バリアントすべてと、x-default を宣言します。
Next.js は、各エントリが hreflang を担うネイティブな sitemap.ts を生成します。[locale] 型の動的ルートをしばしば取りこぼすサードパーティ製プラグインより信頼できます。
本当に大切なこと、優先順に
新しいプロジェクトで優先順位を付けるなら:
- Google Search Console — これなしでは、あなたは目隠し状態です。サイトマップを送信し、インデックス登録を申請しましょう。
- アイデンティティシグナルの一貫性 — 準拠したファビコン、揃ったサイト名、きれいな JSON-LD。
- 本物のコンテンツ — 1 ページきりのサイトはすぐ頭打ちになります。この記事のような技術記事が、あなたを実際の検索クエリ上に存在させます。
- Core Web Vitals — 速いサイトは、より上位に来るサイトです。まず計測し、それから最適化を。
技術的 SEO に魔法はありません。明快なシグナルをきれいに送り、あとは Google が再クロールするまでの時間に委ねる——その連なりです。残りは、辛抱が引き受けます。