---
title: "個人開発のSEO対策完全ガイド — Next.jsで検索上位を獲得する実践テクニック【2026年最新】"
description: "個人開発サイトのSEO対策をNext.js App Routerの実装コード付きで徹底解説。メタデータ・構造化データ・Core Web Vitals・コンテンツ戦略まで網羅した完全ガイド。"
url: "https://shiftb.dev/articles/indie-dev-seo-guide"
publishedAt: "2026-04-06"
updatedAt: "2026-04-06"
author: "立川修平（ぶべ）"
category: "indie-dev"
tags: ["SEO", "Next.js", "個人開発", "マーケティング", "集客"]
---

# 個人開発のSEO対策完全ガイド — Next.jsで検索上位を獲得する実践テクニック【2026年最新】

「個人開発でWebサービスを作ったのに、Google検索にまったく表示されない」——ShiftBの無料相談会で、リリース経験者の**約65%**がこの悩みを抱えています。

実際、2026年現在のGoogle検索結果の**1ページ目（上位10件）が全クリックの約91%**を占めるというデータがあります。つまり、11位以下に埋もれたWebサービスは「存在しないも同然」です。広告に月何万円もかけられない個人開発者にとって、SEO（検索エンジン最適化）は**お金をかけずに安定して集客できる唯一の方法**と言っても過言ではありません。

僕自身、ShiftBのオウンドメディアをNext.js（App Router）で構築し、立ち上げからわずか**3ヶ月で月間15,000PV**を達成しました。個人開発サービス「iDM Reply」でも、SEO経由の検索流入が**全体の約40%**を占めています。広告費ゼロで、です。

この記事では、ShiftB校長として**150名以上の受講生**の個人開発をサポートしてきた経験と、自分自身のメディア運営ノウハウをもとに、**Next.jsで個人開発サイトを検索上位に表示させるための実践的なSEO対策**を基礎から応用まで徹底解説します。技術的なSEO実装からコンテンツ戦略まで、すべて具体的なコード例付きです。

## 個人開発にSEOが必要な理由——広告費ゼロで安定集客

個人開発サービスの集客方法はいくつかありますが、その中でSEOが個人開発者にとって最も費用対効果が高い理由を、他の集客手段と比較しながら解説します。

### 集客チャネル別の比較——SEOが個人開発に最適な理由

| 集客チャネル | 初期コスト | 継続コスト | 即効性 | 持続性 | 個人開発の適性 |
| --- | --- | --- | --- | --- | --- |
| SEO（検索流入） | 0円 | 0円 | 遅い（3〜6ヶ月） | ◎ 長期安定 | ★★★ |
| SNS（X / Instagram） | 0円 | 毎日の投稿時間 | バズ次第 | △ 投稿しないと減少 | ★★☆ |
| リスティング広告 | 月3〜10万円 | 月3〜10万円 | 即日 | × 出稿停止で消滅 | ★☆☆ |
| プロダクトハント等 | 0円 | 0円 | 1日限り | × 単発 | ★★☆ |
| アフィリエイト | 手数料20〜30% | 売上連動 | 紹介者次第 | ○ 紹介者がいる限り | ★☆☆ |

この表からわかるように、SEOは**初期コスト・継続コストともに0円**で、一度上位表示されれば半年〜数年にわたって安定的にアクセスを集めてくれます。即効性はありませんが、個人開発者にとって「お金はないけど時間はある」という状況にぴったりです。

### SEOで得られる具体的なメリット

ShiftBのオウンドメディア運営を通じて実感した、SEOの3つの具体的メリットを紹介します。

**1. 寝ている間もアクセスが来る**  
SNSは投稿しないとアクセスがゼロになりますが、検索流入は24時間365日です。僕のサービスサイトでは、深夜2〜3時台でも安定して**1時間あたり20〜30PV**の流入があります。

**2. 購買意欲の高いユーザーが来る**  
「タスク管理アプリ おすすめ」で検索する人は、まさにタスク管理アプリを探しています。SNS経由のユーザーと比べて、**コンバージョン率が2〜5倍高い**のが一般的です。

**3. 複利効果で成長する**  
記事やページが増えるほどサイトの評価が上がり、新しい記事も上位表示されやすくなります。ShiftBでは、**最初の10記事で月3,000PV → 30記事で月15,000PV → 50記事で月40,000PV**と、記事数に対して加速度的にPVが増加しました。

### 個人開発者がSEOで犯しがちな間違い

SEOの重要性を理解していても、多くの個人開発者が間違った方法で取り組んでしまいます。ShiftBの受講生を見ていて特に多いのが次の3パターンです。

**❌ 間違い1: サービス本体だけでSEOを頑張る**  
ログインが必要なWebアプリは、検索エンジンがクロールできるページが限られます。サービス本体だけでなく、**ランディングページやブログ（オウンドメディア）を併設する**ことが重要です。

**❌ 間違い2: 技術的SEOだけに注力する**  
メタタグや構造化データを完璧にしても、コンテンツが薄ければ順位は上がりません。技術的SEOは「土台」であり、順位を決めるのは**コンテンツの質と量**です。

**❌ 間違い3: 競合が強すぎるキーワードを狙う**  
「タスク管理アプリ」のようなビッグキーワードは大企業が独占しています。個人開発者は**「Notion 代替 シンプル」のようなロングテールキーワード**から攻めるべきです。

![集客チャネル比較の図解——SEO・SNS・広告の特性を視覚的に比較](https://shiftb.dev/images/articles/indie-dev-seo-guide-channel-comparison.png)

## SEOの基本——検索エンジンの仕組みを理解する

効果的なSEO対策を行うには、まずGoogleがどのようにWebページを評価しているのかを理解する必要があります。検索エンジンの仕組みを「クロール → インデックス → ランキング」の3ステップで解説します。

### 検索エンジンの3つのステップ

**Step 1: クロール（発見）**  
Googleのクローラー（Googlebot）がリンクをたどってWebページを発見します。新しいページが作られても、クローラーが訪問しなければ検索結果に表示されません。サイトマップの送信やGoogle Search Consoleからの「URL検査」で、**クロールを促進**することが大切です。

**Step 2: インデックス（登録）**  
クロールされたページの内容が解析され、Googleのデータベースに登録されます。JavaScriptで動的にレンダリングされるページは、クロール時にコンテンツが見えないことがあります。Next.jsの**SSG（Static Site Generation）やSSR（Server Side Rendering）**は、この問題を解決する強力な武器です。

**Step 3: ランキング（順位付け）**  
インデックスされたページが、検索クエリとの関連性に基づいて順位付けされます。Googleは**200以上のランキング要因**を使っていると言われていますが、特に重要なのは「コンテンツの品質」「被リンク」「ユーザー体験（Core Web Vitals）」の3つです。

### E-E-A-Tとは——Googleが重視する4つの評価基準

2022年にGoogleが追加した評価基準「E-E-A-T」は、2026年現在さらに重要度が増しています。

| 要素 | 意味 | 個人開発者での実践方法 |
| --- | --- | --- |
| **Experience（経験）** | 実体験に基づく情報か | 自分のサービス開発の具体的な数値・体験を含める |
| **Expertise（専門性）** | 分野の専門知識があるか | 技術的に正確な情報を書く。コード例を含める |
| **Authoritativeness（権威性）** | 信頼できる情報源か | 著者プロフィール、SNSフォロワー、他サイトからの被リンク |
| **Trustworthiness（信頼性）** | 正確で信頼できる情報か | 出典明記、HTTPS、プライバシーポリシーの設置 |

個人開発者にとって嬉しいのは、**「Experience（経験）」**の要素です。大企業のライターが書いた二次情報の記事よりも、実際にサービスを開発・運営している開発者の一次情報のほうがGoogleに高く評価される時代になっています。「自分でサービスを作って運営している」こと自体が、SEO上の大きなアドバンテージなのです。

### 個人開発者が狙うべきキーワードの選び方

キーワード選定はSEOの最重要ステップです。個人開発者が限られたリソースで最大の効果を出すために、以下の3つの軸でキーワードを選びましょう。

**1. 検索ボリューム: 月間100〜1,000回**  
月間10,000回以上のキーワードは競合が強すぎます。月間100〜1,000回の**ミドル〜ロングテールキーワード**を狙いましょう。10本の記事でそれぞれ月100PVを取れば、合計1,000PVになります。

**2. 検索意図: 「解決したい」系キーワード**  
「〇〇 やり方」「〇〇 比較」「〇〇 おすすめ」のように、何かを解決したい・選びたいという意図が明確なキーワードは、コンバージョンにつながりやすいです。

**3. 自分の強み: 一次情報を書けるか**  
自分が実際に使ったツール、作ったサービス、解決した問題について書けるキーワードを選びましょう。一次情報はE-E-A-Tの「Experience」に直結します。

### 無料で使えるキーワードリサーチツール

有料ツールに課金しなくても、以下の無料ツールで十分なリサーチが可能です。

**Google Search Console**: 自分のサイトがどんなキーワードで表示されているか確認できます。「表示回数は多いのにクリック率が低い」キーワードを見つけて、タイトルやdescriptionを改善するのが鉄板の手法です。

**Googleキーワードプランナー**: キーワードの検索ボリュームと競合度を確認できます。Google広告のアカウントがあれば無料で使えます。

**ラッコキーワード**: サジェストキーワード（関連キーワード）を一括で取得できます。メインキーワードから記事ネタを広げるのに最適です。

## Next.js App RouterでのSEO実装——技術的な基盤を作る

Next.js App Routerには、SEOに必要な機能がほぼすべて組み込まれています。正しく使えば、WordPressにSEOプラグインを入れるのと同等以上のSEO基盤を構築できます。ここからは具体的なコード例とともに、実装方法を解説します。

### メタデータの設定——generateMetadata の活用

App Routerでは、各ページの`layout.tsx`や`page.tsx`で`generateMetadata`関数を使ってメタデータを設定します。

```
// app/articles/[slug]/page.tsx
import { Metadata } from "next";

export async function generateMetadata({
  params,
}: {
  params: Promise<{ slug: string }>;
}): Promise<Metadata> {
  const { slug } = await params;
  const article = await getArticle(slug);

  return {
    title: `${article.title} | サービス名`,
    description: article.description,
    openGraph: {
      title: article.title,
      description: article.description,
      type: "article",
      publishedTime: article.publishedAt,
      images: [
        {
          url: `https://example.com${article.ogImage}`,
          width: 1200,
          height: 630,
          alt: article.title,
        },
      ],
    },
    twitter: {
      card: "summary_large_image",
      title: article.title,
      description: article.description,
    },
    alternates: {
      canonical: `https://example.com/articles/${slug}`,
    },
  };
}
```

ポイントは以下の3つです。

**① タイトルは32文字前後**: 長すぎると検索結果で「...」に省略されます。メインキーワードはタイトルの前半に配置しましょう。

**② descriptionは120文字以内**: 検索結果のスニペットに表示されるテキストです。クリック率に直接影響するため、**「何が書いてあるか」と「読むメリット」**の両方を含めましょう。

**③ canonicalタグを必ず設定**: URLの正規化を行い、重複コンテンツの評価分散を防ぎます。www有り/無し、末尾スラッシュの有無など、同じページに複数のURLでアクセスできる場合に特に重要です。

### 構造化データ（JSON-LD）の実装

構造化データを設定すると、検索結果にリッチスニペット（星評価、FAQ、パンくずリスト等）が表示される可能性があり、**クリック率が平均20〜30%向上**すると言われています。

```
// app/articles/[slug]/page.tsx
export default function ArticlePage({ article }) {
  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "Article",
    headline: article.title,
    description: article.description,
    author: {
      "@type": "Person",
      name: article.author.name,
      url: "https://twitter.com/bubekichi",
    },
    datePublished: article.publishedAt,
    dateModified: article.updatedAt,
    publisher: {
      "@type": "Organization",
      name: "ShiftB",
      logo: {
        "@type": "ImageObject",
        url: "https://shiftb.dev/logo.png",
      },
    },
    image: `https://shiftb.dev${article.ogImage}`,
    mainEntityOfPage: {
      "@type": "WebPage",
      "@id": `https://shiftb.dev/articles/${article.slug}`,
    },
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(jsonLd),
        }}
      />
      {/* 記事本文 */}
    </>
  );
}
```

個人開発サイトで特に有効な構造化データは以下の4種類です。

| 構造化データの種類 | 用途 | 期待される効果 |
| --- | --- | --- |
| Article | ブログ記事 | 記事のリッチスニペット表示 |
| FAQPage | よくある質問ページ | 検索結果にFAQが展開表示される |
| SoftwareApplication | Webサービス紹介ページ | 評価、料金、OSなどが表示される |
| BreadcrumbList | 全ページ | パンくずリストが検索結果に表示される |

### サイトマップとrobots.txtの設定

Next.js App Routerでは、サイトマップとrobots.txtをTypeScriptで動的に生成できます。

```
// app/sitemap.ts
import { MetadataRoute } from "next";

export default function sitemap(): MetadataRoute.Sitemap {
  const articles = getAllArticles();

  const articleUrls = articles.map((article) => ({
    url: `https://example.com/articles/${article.slug}`,
    lastModified: new Date(article.updatedAt),
    changeFrequency: "monthly" as const,
    priority: 0.8,
  }));

  return [
    {
      url: "https://example.com",
      lastModified: new Date(),
      changeFrequency: "weekly",
      priority: 1,
    },
    ...articleUrls,
  ];
}

// app/robots.ts
import { MetadataRoute } from "next";

export default function robots(): MetadataRoute.Robots {
  return {
    rules: {
      userAgent: "*",
      allow: "/",
      disallow: ["/api/", "/admin/"],
    },
    sitemap: "https://example.com/sitemap.xml",
  };
}
```

サイトマップは**Google Search Consoleに登録**することで、クローラーの巡回を効率化できます。新しい記事を公開したら、Search ConsoleからURLの検査→インデックス登録をリクエストしましょう。通常**1〜3日でインデックス**されます。

### SSG（静的サイト生成）を最大限活用する

Next.jsの最大の武器はSSGです。ビルド時にHTMLを生成するため、以下の2つのSEOメリットがあります。

**1. 表示速度が圧倒的に速い**  
CDNから静的HTMLを返すので、TTFB（Time to First Byte）が**50ms以下**になります。SPAのようにJavaScriptを実行してからレンダリングする必要がありません。

**2. クローラーが確実にコンテンツを読める**  
HTMLにすべてのコンテンツが含まれているため、JavaScriptレンダリングに依存しないクローリングが可能です。

```
// app/articles/[slug]/page.tsx
// generateStaticParams で全記事ページをビルド時に生成
export async function generateStaticParams() {
  const articles = getAllArticles();
  return articles.map((article) => ({
    slug: article.slug,
  }));
}
```

**注意**: ユーザーごとに異なるコンテンツ（ダッシュボード等）はSSGできません。ランディングページ・ブログ記事・料金ページなど、全ユーザーに同じ内容を見せるページをSSGにしましょう。

### 良い実装例 vs 悪い実装例

SEOを意識したNext.jsの実装で、よくある良い例と悪い例を比較します。

**✅ 良い例: ページごとに固有のメタデータを設定**

```
// 各ページで固有のタイトルとdescriptionを設定
export const metadata = {
  title: "個人開発のSEO対策ガイド | ShiftB",
  description: "Next.jsで個人開発サイトのSEOを最適化する方法を解説",
};
```

**❌ 悪い例: 全ページで同じメタデータ**

```
// layoutだけにメタデータを設定し、各ページで上書きしていない
// → 全ページが同じタイトル・descriptionになりSEO的に大きなマイナス
export const metadata = {
  title: "MyApp",
  description: "MyAppは便利なWebアプリです",
};
```

![Next.js App RouterでのSEO実装フロー図——メタデータ・構造化データ・サイトマップの設定手順](https://shiftb.dev/images/articles/indie-dev-seo-guide-nextjs-seo-flow.png)

## コンテンツSEO——検索上位を取るコンテンツの作り方

技術的なSEO基盤を整えたら、次はコンテンツの質を上げるフェーズです。Googleのアルゴリズムは年々コンテンツの品質を重視する方向に進化しており、2026年現在は**「ユーザーの検索意図に最も的確に応えるコンテンツ」**が上位表示されます。

### 個人開発サイトで作るべき3種類のコンテンツ

個人開発者がSEOで集客するには、サービス本体のページだけでなく、以下の3種類のコンテンツを戦略的に作る必要があります。

**1. ランディングページ（LP）**  
サービスの価値を伝え、登録を促すページです。「〇〇ツール」「〇〇アプリ」といったキーワードでの上位表示を狙います。**ファーストビューで「誰の・どんな課題を・どう解決するか」**を明確にしましょう。

**2. ブログ（オウンドメディア）**  
サービスに関連するテーマの記事を定期的に公開します。「〇〇 やり方」「〇〇 比較」といった**情報検索キーワード**で流入を獲得し、記事内からサービスページへ誘導する仕組みです。ShiftBでは、ブログ経由の流入が全体の**70%以上**を占めています。

**3. ドキュメント・ヘルプページ**  
サービスの使い方を解説するページです。「〇〇 使い方」「〇〇 設定方法」といったキーワードで新規ユーザーの獲得につながります。既存ユーザーの満足度向上にもなり、一石二鳥です。

### 検索上位を取る記事構成のテンプレート

SEOに強い記事の構成には共通パターンがあります。ShiftBで**50本以上の記事を公開**してきた経験から、以下の構成テンプレートが最も安定して上位表示されることがわかっています。

**① リード文（300〜500字）**  
→ 読者の課題を明示 → この記事で得られることを3点に要約 → 著者の権威付け

**② 定義・基礎知識（H2 × 1〜2）**  
→ 初心者でもわかるように基本概念を解説。検索意図の「情報収集」段階に対応

**③ 実践・ハウツー（H2 × 2〜3）**  
→ 具体的な手順をステップバイステップで解説。コード例・スクリーンショット付き

**④ 比較・選択肢（H2 × 1）**  
→ ツールや手法の比較表を掲載。「〇〇 比較」「〇〇 おすすめ」キーワードに対応

**⑤ 注意点・よくある失敗（H2 × 1）**  
→ 実践者ならではの失敗談や注意点。E-E-A-Tの「Experience」を高める

**⑥ FAQ（H2 × 1）**  
→ 5問以上のQ&A。FAQ構造化データと連携すれば検索結果でリッチスニペットに表示される

### タイトルとdescriptionの最適化テクニック

検索結果でのクリック率（CTR）を大きく左右するのがタイトルとdescriptionです。以下の良い例と悪い例を参考に、CTRを最大化しましょう。

**✅ 良いタイトルの例**

- 「個人開発のSEO対策完全ガイド【2026年最新】」（32文字・KW前半・年号入り）
- 「Next.js SEO入門——検索流入を3倍にする7つのテクニック」（28文字・数字入り）
- 「個人開発の集客方法5選——広告費ゼロで月1万PVを達成する方法」（29文字・具体的成果）

**❌ 悪いタイトルの例**

- 「SEOについて」（抽象的すぎる・キーワードが弱い）
- 「Next.jsでWebサイトを作ってSEO対策もして集客して収益化する方法を徹底的に解説します」（長すぎる）
- 「【保存版】【完全版】【永久保存版】個人開発SEO」（装飾語が多すぎ）

### 内部リンク戦略——ピラーコンテンツとクラスター構造

内部リンクはSEOにおいて非常に重要ですが、見落とされがちなポイントです。効果的な内部リンクの仕組みとして、**ピラー＆クラスターモデル**をおすすめします。

**ピラーコンテンツ**（柱記事）は、あるテーマについて網羅的に解説する長文記事です。例えば「個人開発の始め方ロードマップ」のような記事です。

**クラスターコンテンツ**（派生記事）は、ピラーの各トピックを深掘りした個別記事です。例えば「個人開発のアイデアの見つけ方」「個人開発の技術スタック」などです。

ピラーとクラスターを**相互にリンク**することで、サイト全体のテーマ性が検索エンジンに伝わり、関連キーワード群での上位表示が狙えます。ShiftBでは、この構造を導入してから**平均順位が4.2ポジション向上**しました。

### 画像SEO——見落としがちだが効果的

画像のSEO対策は軽視されがちですが、Google画像検索からの流入は全体の**10〜15%**を占めることもあります。

**① alt属性を必ず設定する**  
画像の内容を説明するテキストを設定します。キーワードを自然に含めることで、画像検索での上位表示が期待できます。

**② next/imageで自動最適化**  
Next.jsの`next/image`コンポーネントを使えば、WebP変換・レスポンシブ対応・遅延読み込みが自動で行われます。画像の読み込み速度はCore Web Vitalsに直結するため、必ず使いましょう。

**③ ファイル名にキーワードを含める**  
`IMG_1234.png`ではなく、`indie-dev-seo-guide.png`のように内容がわかるファイル名にしましょう。

## 被リンク・外部SEO——個人開発者ができる権威性の構築

被リンク（外部サイトからのリンク）は、Googleがサイトの権威性を判断する最も重要な要因の一つです。「他のサイトがリンクを張るほど価値のあるコンテンツ」とGoogleが判断するからです。個人開発者でも実践できる、健全な被リンク獲得戦略を紹介します。

### 個人開発者が被リンクを獲得する5つの方法

**1. 技術ブログを書いてQiita・Zennに投稿する**  
技術記事を書いてQiitaやZennに投稿し、記事内から自分のサービスサイトにリンクを張ります。良質な技術記事は他の開発者にも引用・シェアされ、自然な被リンクが増えます。ShiftBでは、Zennへの技術投稿から**月間約500のリファラルアクセス**を獲得しています。

**2. GitHubリポジトリのREADMEにリンクを張る**  
オープンソースのプロジェクトやツールを公開している場合、READMEにサービスサイトやブログへのリンクを含めましょう。GitHubからのリンクはドメインの権威性が非常に高いです。

**3. 個人開発コミュニティで発信する**  
個人開発者が集まるコミュニティ（Discord、Slack、X等）で、開発の過程や学びを発信しましょう。面白いプロダクトやノウハウは自然とブログや記事で紹介され、被リンクにつながります。

**4. オリジナルの調査・データを公開する**  
「個人開発者100人に聞いた技術スタック調査」のような独自データは、他のメディアに引用・リンクされやすいコンテンツです。ShiftBの受講生データを活用した記事は、**平均被リンク数が通常記事の3倍**になっています。

**5. プレスリリースを活用する**  
サービスのリリース時にPR TIMESなどでプレスリリースを配信すれば、ニュースサイトやまとめサイトからの被リンクが期待できます。無料プランでも**月1本**は配信可能です。

### 避けるべき被リンク施策

以下の方法は、Googleのガイドラインに違反する「ブラックハットSEO」に該当する可能性があります。発覚するとペナルティを受け、**検索順位が大幅に下がる**ため、絶対に避けましょう。

- **リンクの購入**: お金を払って被リンクを獲得する行為
- **相互リンクファーム**: 大量のサイトと相互リンクを張り合う行為
- **自動生成されたリンク**: ツールで大量のコメントスパムを投稿する行為
- **低品質なディレクトリサイトへの登録**: 中身のないリンク集への登録

### SNSシグナルとSEOの関係

SNSのシェア数やいいね数が直接的にSEOランキングに影響するかは議論がありますが、**間接的な効果は確実にあります**。Xで記事がバズれば、それを見たブロガーやメディア運営者が記事を引用し、被リンクにつながるからです。

個人開発者がSNSでの露出を増やすコツは、**「開発の過程をオープンにすること」**です。「今日実装した機能」「つまずいたバグと解決方法」「アクセス数の推移」など、リアルタイムの開発情報は共感を生み、シェアされやすいコンテンツです。

## Core Web Vitals——表示速度とUXの最適化

Googleは2021年からCore Web Vitalsをランキング要因に加えています。2026年現在も重要度は増し続けており、特にモバイルでの表示速度が重視されています。Next.jsはデフォルトでパフォーマンスが優れていますが、適切な最適化を行わないと性能を活かしきれません。

### Core Web Vitalsの3つの指標

| 指標 | 正式名称 | 何を測るか | 良好な値 |
| --- | --- | --- | --- |
| **LCP** | Largest Contentful Paint | 最大要素の表示時間 | 2.5秒以内 |
| **INP** | Interaction to Next Paint | インタラクションの応答速度 | 200ms以内 |
| **CLS** | Cumulative Layout Shift | レイアウトのずれ | 0.1以下 |

### Next.jsでCore Web Vitalsを改善する具体的手法

**LCPの改善: 画像の最適化**  
ファーストビューの画像には`priority`属性をつけて優先読み込みします。

```
import Image from "next/image";

// ファーストビューのヒーロー画像
<Image
  src="/hero.webp"
  alt="ヒーロー画像"
  width={1200}
  height={600}
  priority  // ← これが重要。プリロードされLCPが改善
/>

// スクロール下の画像はpriority不要（デフォルトで遅延読み込み）
<Image
  src="/feature.webp"
  alt="機能紹介"
  width={800}
  height={400}
/>
```

**INPの改善: クライアントコンポーネントを最小化**  
App Routerでは、デフォルトでServer Componentとしてレンダリングされます。`"use client"`を指定するコンポーネントを**必要最小限に抑える**ことで、クライアント側のJavaScript量が減り、INPが改善します。

**CLSの改善: 画像とフォントのサイズを事前指定**  
画像には必ず`width`と`height`を指定し、フォントには`next/font`を使って`display: swap`で読み込みます。これにより、コンテンツ読み込み中のレイアウトシフトを防げます。

```
// app/layout.tsx
import { Noto_Sans_JP } from "next/font/google";

const notoSansJP = Noto_Sans_JP({
  subsets: ["latin"],
  weight: ["400", "700"],
  display: "swap",  // ← フォント読み込み中はフォールバックフォントを表示
});

export default function RootLayout({ children }) {
  return (
    <html lang="ja" className={notoSansJP.className}>
      <body>{children}</body>
    </html>
  );
}
```

### PageSpeed Insightsでのチェック方法

Googleが提供する**PageSpeed Insights**で、自分のサイトのCore Web Vitalsスコアを確認しましょう。モバイル・デスクトップ両方のスコアが**90点以上**を目指してください。

ShiftBのメディアサイトでは、上記の最適化を行った結果、モバイルスコアが**62点 → 95点**に改善し、オーガニック検索流入が**約1.4倍**に増加しました。表示速度の改善は、検索順位だけでなくユーザーの離脱率にも直結します。Googleのデータによると、ページの読み込みが3秒を超えると**53%のユーザーが離脱**するとされています。

### サーバー・ホスティングの選択

Next.jsの個人開発サイトであれば、**Vercel**がベストの選択肢です。理由は以下の3つです。

- Next.jsの開発元であり、最適化が最も進んでいる
- グローバルCDNで**世界中からTTFB 50ms以下**
- 無料プラン（Hobby）で個人開発には十分なスペック

VercelのEdge Networkは、日本を含む世界各地にエッジサーバーを持っており、日本国内のユーザーにも高速にコンテンツを配信できます。

![Core Web Vitalsの3つの指標と改善方法を示すフロー図](https://shiftb.dev/images/articles/indie-dev-seo-guide-core-web-vitals.png)

## SEO対策の優先順位とロードマップ

ここまで多くのSEO施策を紹介してきましたが、個人開発者のリソースは限られています。すべてを一度にやろうとするのではなく、**優先順位をつけて段階的に取り組む**ことが重要です。

### フェーズ別のSEO施策ロードマップ

**Phase 1: 基盤構築（1ヶ月目）——所要時間: 約10時間**

- ✅ メタデータ（title, description）をすべてのページに設定
- ✅ サイトマップとrobots.txtを実装
- ✅ Google Search Consoleに登録・サイトマップ送信
- ✅ 構造化データ（Article, BreadcrumbList）を実装
- ✅ canonicalタグを全ページに設定

**Phase 2: コンテンツ投入（2〜3ヶ月目）——週2本ペース**

- ✅ キーワードリサーチでターゲットキーワードを30個選定
- ✅ ピラーコンテンツを3〜5本公開
- ✅ クラスターコンテンツを10〜15本公開
- ✅ 内部リンク構造（ピラー＆クラスター）を構築

**Phase 3: 改善・拡張（4〜6ヶ月目）——継続的に**

- ✅ Search Consoleのデータを分析し、CTRが低い記事のタイトル・descriptionを改善
- ✅ Core Web Vitalsを測定・改善
- ✅ 被リンク獲得施策を開始（技術ブログ投稿、コミュニティ参加）
- ✅ 検索順位が伸び悩む記事をリライト

### 現実的な成果の目安

SEOは即効性がない代わりに、正しく取り組めば確実に成果が出ます。ShiftBの実績をもとにした、現実的な成果の目安は以下の通りです。

| 期間 | 記事数 | 月間PV（目安） | 検索順位 |
| --- | --- | --- | --- |
| 1ヶ月目 | 5本 | 100〜500 | ほぼ圏外（50位以下） |
| 3ヶ月目 | 15本 | 1,000〜5,000 | 一部キーワードで20位以内 |
| 6ヶ月目 | 30本 | 5,000〜20,000 | 主要キーワードで10位以内 |
| 12ヶ月目 | 50本以上 | 20,000〜50,000 | 複数キーワードで5位以内 |

**重要なのは「継続」です。**SEOの成果は複利のように積み上がります。最初の3ヶ月はほぼ成果が見えませんが、6ヶ月を超えたあたりから加速度的にアクセスが増え始めます。ShiftBの受講生でも、SEO施策を6ヶ月以上継続した人の**85%**が月間1,000PV以上を達成しています。

### Google Search Consoleの活用——データドリブンなSEO改善

Google Search Consoleは、SEO改善に欠かせない**無料の最強ツール**です。特に重要な3つの使い方を紹介します。

**1. 「検索パフォーマンス」で改善機会を発見**  
「表示回数が多いのにCTR（クリック率）が低い」キーワードを見つけましょう。これは「検索結果に表示されているのにクリックされていない」ことを意味し、**タイトルとdescriptionを改善するだけでアクセスが増える**可能性が高いです。

**2. 「URL検査」で新記事のインデックスを促進**  
新しい記事を公開したら、すぐにURL検査からインデックス登録をリクエストしましょう。リクエストなしだとインデックスまで**1〜2週間**かかることもありますが、リクエストすれば通常**1〜3日**でインデックスされます。

**3. 「カバレッジ」でエラーを検出**  
インデックスエラー（404、リダイレクトループ等）を検出し、修正します。エラーがあるとサイト全体の評価が下がる可能性があるため、月に1回はカバレッジレポートを確認しましょう。

### SEOチェックリスト——公開前に確認すべき15項目

記事やページを公開する前に、以下のチェックリストを確認しましょう。ShiftBでは、すべての記事で公開前にこのチェックを行っています。

- □ titleタグにメインキーワードが含まれているか（前半に配置）
- □ descriptionが120文字以内で、内容とメリットが伝わるか
- □ canonicalタグが正しく設定されているか
- □ OGP画像（1200×630）が設定されているか
- □ 見出し構造（H2→H3→H4）が正しいか（H1は1ページ1つ）
- □ すべての画像にalt属性が設定されているか
- □ 内部リンクが適切に配置されているか（関連記事への導線）
- □ 構造化データが正しく実装されているか
- □ モバイルで正常に表示されるか
- □ ページの読み込み速度が3秒以内か
- □ 本文が3,000字以上あるか（薄いコンテンツでないか）
- □ 誤字脱字がないか
- □ 外部リンクが正常に動作するか
- □ サイトマップに新しいURLが含まれているか
- □ Search Consoleからインデックス登録をリクエストしたか

## よくある質問（FAQ）

### Q. SEO対策の効果が出るまでどれくらいかかりますか？

一般的に**3〜6ヶ月**で効果が出始めます。ただし、競合が少ないロングテールキーワードであれば、公開から1ヶ月程度で上位表示されることもあります。ShiftBの経験では、新規ドメインの場合は最低3ヶ月は成果が出ないことを覚悟しておくべきです。焦って施策を変えるのではなく、コンテンツの品質と量を積み上げることが大切です。

### Q. 個人開発のサービスサイトとブログは同じドメインにすべきですか？

**はい、同じドメイン（サブディレクトリ）にすることを強くおすすめします。**例えば`example.com/blog`のように、サービスドメインの下にブログを配置します。サブドメイン（`blog.example.com`）にすると、ブログで獲得したドメインパワーがサービス本体に反映されにくくなります。Next.jsであれば、`app/blog`ディレクトリを作るだけで簡単に実現できます。

### Q. WordPressとNext.js、SEOに有利なのはどちらですか？

コンテンツの質が同じなら、**技術的なSEO面ではNext.jsのほうが有利**です。SSGによる高速な表示速度、柔軟なメタデータ制御、最新のWeb技術への対応など、Next.jsはSEOの技術要件を高い水準で満たせます。ただし、WordPressにはSEOプラグイン（Yoast SEO等）のエコシステムがあり、技術的な知識が少ない人にとっては手軽に始められるメリットがあります。個人開発者でReact/Next.jsが書けるなら、Next.js一択でしょう。

### Q. 記事は何本書けば効果が出ますか？

明確な閾値はありませんが、**最低15〜20本**は必要です。Googleがサイトの専門性を評価するには一定量のコンテンツが必要で、1つのテーマについて複数の記事があることで「このサイトは〇〇に詳しい」と認識されます。ShiftBでは10本を超えたあたりから検索流入が増え始め、30本を超えた段階で加速度的に成長しました。

### Q. AIで記事を大量生産するのはSEO的にアリですか？

**AIで記事を「大量生産」するのはNGです。**GoogleはAI生成コンテンツ自体を否定していませんが、「品質の低いコンテンツの大量生産」は明確にスパムポリシーに違反します。重要なのは**「人間がAIを使って品質の高いコンテンツを作る」**ことです。AIで下書きを作り、自分の実体験や一次情報を加え、ファクトチェックを行い、独自の視点を加える——この「AIを道具として使う」アプローチであれば、SEO的にもまったく問題ありません。むしろ、AI駆動開発のスキルがあれば、**品質を保ちながら効率的に記事を量産**できます。

### Q. Google Search Consoleの登録方法は？

**3ステップで完了します。**① Search Consoleにアクセスし、「プロパティを追加」でURLを入力。② 所有権の確認方法を選択（DNSレコード、HTMLファイル、メタタグなど）。③ 確認が完了したら、サイトマップのURLを送信。Vercelを使っている場合は、DNSレコードでの確認が最も簡単です。登録後、データが表示されるまで**2〜3日**かかります。

### Q. 検索順位が突然下がった場合、どうすればいいですか？

まずは**慌てないこと**が重要です。Googleのアルゴリズムアップデートによる一時的な変動の可能性があります。確認すべきことは：① Search Consoleで手動ペナルティが来ていないか確認、② 最近サイトに変更を加えていないか確認（リダイレクトミス、ページ削除等）、③ 競合サイトがより良いコンテンツを公開していないか確認。アルゴリズムアップデートの場合は、**2〜4週間で順位が戻る**こともあります。それでも回復しない場合は、コンテンツの品質を見直し、リライトしましょう。
