コース一覧
Next.js公開設計:SEO・画像最適化・デプロイ
OGP

Next.js公開設計:SEO・画像最適化・デプロイ

metadata、動的metadata、OGP、Image、フォント最適化、本番ビルド、マネージド環境・自サーバーへの公開、公開前チェックを扱う全13レッスンの公開プロジェクトです。fleamaを検索・SNS・表示速度まで整え、公開URLを持つ本番サービスとして完成させます。

1
メタデータ・OGP・画像
01. メタデータ15分
02. 動的メタデータ15分
03. OGP15分
04. 画像最適化15分
05. フォント最適化15分
06. つくる - 検索とSNSに強く20分
07. 第7章クイズ15分
2
デプロイと総合制作
01. 本番ビルド15分
02. マネージドへ公開15分
03. 自サーバー案15分
04. 公開前チェック15分
05. 自由拡張20分
06. 完成と次のステップ10分

OGP

OGP のカードを組み立てる3点

リンクを貼ったときの見た目

SNS やチャットに URL を貼ると、タイトルと画像の付いたカードが出ることがあります。あれは相手のアプリが気を利かせているのではなく、こちらの HTML に書いてある情報を読んで組み立てています。この決まりを OGP と呼びます。Open Graph Protocol の略で、head に入れる meta タグの一種です。

何も書かないとカードは出ず、URL の文字列がそのまま残ります。fleama の商品を友達に送っても、何の商品か分かりません。

openGraph を metadata の中に書く

Next.js では、専用のタグを手書きするのではなく metadata の中に openGraph を書きます。

TypeScript (JSX)

export const metadata = { title: "fleama", description: "使わなくなったものを、次の人へ", openGraph: { title: "fleama", description: "使わなくなったものを、次の人へ", type: "website", images: ["/og/default.png"], }, };

images は配列です。1枚しか使わないときでも配列で渡します。複数書けるのは、相手のアプリによって選ばれる枚が違うためです。type はページの種類で、サイトのトップなら website を入れておけば十分です。

商品ごとにカードを変える

generateMetadata の戻り値にも同じ openGraph を書けます。商品ごとに違う画像を返せば、商品カード風の見た目になります。

TypeScript (JSX)

return { title: item.title + " | fleama", openGraph: { title: item.title, images: ["/og/" + item.id + ".png"], }, };

ここで気を付けたいのは、レイアウトとページの openGraph は項目ごとに混ざるのではなく、まるごと入れ替わることです。ページ側に openGraph を書いたら、そのページで出したいものはページ側に全部書きます。半分だけ書いてレイアウトの残りが効く、とはなりません。

演習

fleama 全体の OGP と、商品ごとの OGP の両方を設定します。

ヒント

openGraph: { title: "fleama", type: "website", images: ["/og/default.png"] } の形です

images は1枚でも角かっこで囲んで配列にします

商品側は images: ["/og/" + item.id + ".png"] のように文字をつなぎます

レイアウトとページの openGraph はまるごと入れ替わるので、ページ側にも title を書きます

app/items/[id]/page.tsx
layout.tsx
app/page.tsx
プレビュー

できているか

  • ルートレイアウトに openGraph を書いている
  • 商品ページにも openGraph を書いている
  • サイト共通の OGP 画像を指定している
  • OGP の種類を website にしている
  • 商品ページの OGP が商品ごとに変わる
エディタを読み込んでいます