コンテンツにスキップ

技術SEOの基礎

第30講 / 全32講読了目安 約60分
  • 技術SEOが検索順位を直接保証するものではないこと
  • クロール、レンダリング、インデックス、検索結果表示の基本
  • URL、内部リンク、HTTPステータス、canonical、robots、サイトマップの役割
  • JavaScriptサイトで主要コンテンツ・リンク・メタ情報を扱う際の注意
  • PMが要件・テスト・公開後監視へ落とし込む方法

検索エンジンへページが表示されるまでには、複数の段階があります。

flowchart LR
    D[URLを発見] --> C[クロール・取得]
    C --> R[HTML・リソースを解釈・レンダリング]
    R --> I[インデックス候補として処理]
    I --> S[検索クエリに応じて表示]

技術SEOは、検索エンジンが重要なページを発見し、アクセスし、内容・関係・正規URLを理解できるようにする技術的な土台です。

一方、検索結果で高く評価されるかは、

  • コンテンツの有用性
  • 検索意図との一致
  • 信頼性
  • 競合
  • リンク
  • ユーザー体験
  • 鮮度
  • 検索システム

等、多くの要因に左右されます。

「この技術対応をすれば順位が上がる」と保証しません。

検索エンジンは主に次からURLを見つけます。

  • 既に知っているページのリンク
  • XMLサイトマップ
  • 外部サイトのリンク
  • Search Console等からの情報
  • リダイレクト

重要ページが、サイト内の通常リンクから到達できるようにします。

クローラーがURLへHTTPリクエストを送り、HTML・画像・CSS・JavaScript等を取得します。

  • DNS
  • HTTPS
  • サーバー応答
  • robots.txt
  • HTTPステータス
  • リダイレクト
  • 応答速度
  • WAF・Bot制御

がクロールへ影響します。

HTMLと必要なリソースを読み、ページ内容・リンク・構造を理解します。

JavaScriptで内容を生成する場合、スクリプト取得・実行・API通信が必要になることがあります。

取得したページが、検索システムの情報として処理されます。

クロールされたすべてのURLがインデックスされるわけではありません。

  • 重複
  • 内容が少ない
  • noindex
  • エラー
  • canonical
  • 品質判断
  • アクセス制限

等により、登録されない・別URLが正規として選ばれる場合があります。

検索クエリに応じて、インデックスされたページから結果が選ばれます。

titleやdescriptionは検索結果の表示材料になりますが、検索エンジンがクエリに応じて別のテキストを使うことがあります。

「クロールさせない」と「検索結果へ出さない」は同じではありません。

目的主な方法注意
クロール負荷を制御robots.txtURLが外部リンク等からインデックスされる場合がある
HTMLページをインデックスさせないnoindexクローラーがページを取得できる必要がある
非公開情報を守る認証・アクセス制御robots.txt・noindexはセキュリティではない
URLを削除・移動404/410、301等用途に合うHTTP応答を返す

robots.txtでブロックしたページへnoindexを書いても、クローラーがHTMLを読めず、noindexを確認できない場合があります。

秘密・検証環境は認証で保護します。

URLは、利用者・検索エンジン・分析・運用がページを識別する基盤です。

  • 一つのコンテンツへ安定したURL
  • 人間が意味を推測しやすい
  • 不要に長くない
  • 階層・分類と整合
  • 変更頻度が低い
  • 大文字・小文字・末尾スラッシュ等のルールが一貫
  • セッションID等の不要な変動値を含まない
  • フィルター・並び替えURLの増殖を管理
flowchart TD
    C[コンテンツ] --> U[正規URL]
    U --> L[内部リンク]
    U --> S[サイトマップ]
    U --> K[canonical]
    U --> A[計測・運用]

URLをリニューアルの見た目だけで変更すると、リダイレクト・分析・検索・外部リンク・ブックマークへの影響が増えます。

変更理由と便益を比較します。

クローラーはリンクをたどってページを発見し、サイト内の関係を理解します。

  • HTMLの通常リンクとして到達できる
  • hrefに有効なURLがある
  • 重要ページが孤立していない
  • アンカーテキストが目的を表す
  • パンくず・カテゴリ・関連記事
  • モバイルでも同じ主要リンクがある
  • JavaScript操作だけでしか到達できないページがない
  • リンク切れ・リダイレクト連鎖がない

検索フォームへ条件を入力しないと到達できない詳細ページは、リンク・サイトマップ等でも発見できるようにします。

HTTPステータスは、URLの状態を検索エンジンへ伝えます。

状態主な用途
200正常なページ
301/308恒久的な移動
302/307一時的な移動
404ページが存在しない
410意図的に削除され、戻らない
401/403認証・権限が必要
429リクエスト過多
5xxサーバー・サービスのエラー

存在しないページで、見た目は「ありません」と表示しながら200を返す状態です。

利用者・検索エンジンへURLの状態を正しく伝えられません。

404ページをデザインしても、HTTPステータスが200なら技術的には正常ページとして応答しています。

404ページには、

  • ページがないこと
  • トップ・検索・主要カテゴリ
  • 問い合わせ
  • 正しいHTTPステータス

を用意します。

5xxをすべてトップへ転送すると、障害を隠し、切り分けにくくなります。

URLが変わったとき、利用者と検索エンジンを新URLへ案内します。

301または308等を使います。

302または307等を使います。

sequenceDiagram
    participant B as ブラウザ・クローラー
    participant O as 旧URL
    participant N as 新URL

    B->>O: 旧URLを要求
    O-->>B: 301 新URL
    B->>N: 新URLを要求
    N-->>B: 200 コンテンツ
  • 旧URLから最も対応する新URLへ直接転送
  • すべてトップへ転送しない
  • 複数段の連鎖を避ける
  • ループを避ける
  • HTTP→HTTPS、www有無、末尾スラッシュ等を統一
  • リダイレクト先が200である
  • 内部リンクは最終URLへ更新

リダイレクトは、古いURLの評価・利用者導線を新URLへ引き継ぐ重要な仕組みですが、内容が無関係なら適切な引継ぎになりません。

rel="canonical"は、重複または非常に似たページ群の中で、優先する正規URLを示すシグナルです。

例:

  • パラメータ違い
  • 印刷用
  • 同じ商品への複数経路
  • www有無等の重複
  • 配信先の重複ページ
flowchart LR
    D1[重複URL A] --> C[正規URL]
    D2[重複URL B] --> C
    D3[重複URL C] --> C
  • canonicalは転送ではない
  • 利用者は元URLに残る
  • 検索エンジンへの強制命令ではなくシグナル
  • ページ内容・内部リンク・サイトマップ・リダイレクトと整合させる
  • インデックスさせたいページ自身を正規として示す
  • 存在しない・無関係なURLへ向けない
  • JavaScriptで元HTMLと異なるcanonicalへ変更しない

URLを完全に移動したなら、canonicalだけでなくリダイレクトを使います。

robots.txtは、主にクローラーのアクセスを管理するファイルです。

例:

  • クロール不要な検索パラメータ
  • 大量生成される低価値URL
  • クロール負荷を抑えたい領域
  • 個人情報・管理画面の保護
  • 秘密URLの非公開化
  • HTMLページの確実なインデックス除外
  • 不正Botの完全遮断

robots.txtは公開ファイルであり、記載したパスを誰でも読めます。

CSS・JavaScriptをブロックすると、ページの理解・レンダリングを妨げる場合があります。

HTMLのrobots metaタグやHTTPのX-Robots-Tagで、インデックス・スニペット等を制御できます。

  • サイト内検索結果
  • ログイン前提で公開URLになっているページ
  • 一時的なキャンペーン後のページ
  • PDF等の非HTMLファイルへの制御
  • 重複ページを検索結果へ出したくない場合

noindexページをサイトマップへ入れ続ける、canonicalで別の指示を出す等、矛盾を避けます。

noindexは検索結果制御であり、機密情報保護ではありません。

サイトマップは、検索エンジンへ重要URLを知らせるファイルです。

特に次で有効です。

  • 大規模サイト
  • 新規サイト
  • 内部リンクが複雑
  • 動画・画像・ニュース
  • 更新ページを把握したい
flowchart LR
    CMS[CMS・DB] --> GEN[サイトマップ生成]
    GEN --> XML[XMLサイトマップ]
    XML --> SC[Search Console等]
    XML --> BOT[クローラー]
  • 正規URL
  • 200を返す
  • インデックスさせたい
  • 最新のURL
  • canonicalと一致
  • リダイレクト
  • 404
  • noindex
  • 重複の非正規URL
  • 検証環境
  • ログイン専用

サイトマップ送信はクロール・インデックスを保証しません。

検索エンジンがURLを発見・処理する助けと、エラー監視の手段です。

ページの主題を表し、ブラウザ・検索結果・共有等で使われます。

  • ページごとに固有
  • 内容を具体的に表す
  • テンプレートだけで冗長にしない
  • CMSで未入力・重複を防ぐ
  • JavaScript実行前後で矛盾しない

ページ内容の要約候補です。

検索エンジンが必ずそのまま表示するとは限りません。

  • ページごとに意味のある要約
  • 利用者が内容を判断できる
  • キーワードの詰め込みではない
  • 自動生成時に不自然・重複にならない

「文字数を完全に固定すれば順位が上がる」ものではありません。

適切なHTML見出し・本文・リンクは、利用者・支援技術・検索エンジンが内容を理解する土台です。

  • 一ページの主題
  • 論理的な見出し
  • 主要内容を画像だけにしない
  • テキストで説明
  • 関連ページへのリンク
  • パンくず
  • 表・リスト
  • 日付・著者・更新情報

技術SEOとアクセシビリティ・コンテンツ設計は重なる部分があります。

検索エンジンだけに見せる隠しテキスト等は行いません。

JavaScriptを使うサイトでも検索結果へ表示できますが、次の失敗点が増えます。

sequenceDiagram
    participant G as Googlebot
    participant S as サーバー/CDN
    participant J as JavaScript
    participant A as API

    G->>S: URL取得
    S-->>G: HTML・JS
    G->>J: レンダリング
    J->>A: データ取得
    A-->>J: コンテンツ
    J-->>G: 画面・リンク・メタ情報
  • 初期HTMLに主要内容があるか
  • JavaScriptが正常に取得・実行できるか
  • APIがクローラーから利用できるか
  • 読み込み失敗時の内容
  • URLごとに固有の内容
  • 通常のリンクとしてたどれるか
  • title、canonical等
  • 404・401等の意味あるステータス
  • lazy loadが利用者操作だけに依存しないか
  • robots.txtで必要リソースをブロックしていないか

Googleは動的レンダリングを長期的な推奨策としておらず、サーバーサイドレンダリング、静的レンダリング、ハイドレーション等を推奨しています。

「クローラーだけ別内容を返す」複雑な仕組みを安易に採用しません。

主要内容がJavaScript実行後に現れる場合、レンダリング・API・エラー・初期表示を慎重に確認します。

アクセス時にHTMLを返しやすい一方、API障害、遅延、誤ステータス、キャッシュ等の問題があります。

生成済みHTMLを返しやすく、配信も単純です。

ただしCMS更新・ビルド失敗、古い内容、全ページ生成、サイトマップ更新を管理します。

ページごとに方式を変える場合、URL一覧と生成方式を対応づけます。

SEOは方式名だけで決まらず、最終的なHTTP応答・HTML・リンク・内容で確認します。

構造化データは、ページ内容の種類・属性を検索エンジンへ機械可読な形式で伝えます。

例:

  • パンくず
  • 商品
  • 求人
  • イベント
  • 組織
  • FAQ等
  • ページ上で利用者へ見える内容と一致
  • 適用ガイドラインを満たす
  • 必須・推奨項目
  • 自動生成データの正しさ
  • 公開・終了日時
  • CMS変更時
  • 検証ツール
  • 検索結果の拡張表示を保証しない

リッチリザルトを得る目的だけで、存在しない評価・価格・FAQをマークアップしません。

複数言語・地域向けページでは、

  • 言語ごとに固有URL
  • ページ内容の翻訳
  • HTMLの言語指定
  • hreflang
  • canonical
  • 内部リンク
  • サイトマップ
  • 未翻訳時
  • 自動転送
  • 地域・通貨

を設計します。

hreflangは対応する言語・地域バージョンを伝えるための仕組みです。

各言語ページが相互に参照し、自分自身も含め、canonicalとの整合を取ります。

IP・ブラウザ言語だけで強制転送し、利用者・クローラーが他言語へ到達できない状態を避けます。

Googleはモバイル版のコンテンツを主にクロール・インデックス・ランキングへ利用するモバイルファーストインデックスを採用しています。

  • モバイルにも主要本文・リンクがある
  • 画像代替・構造化データが一致
  • lazy loadが操作依存でない
  • robots設定が同じ
  • モバイルだけエラー・非表示にならない
  • 折りたたみ内容も利用可能
  • 広告・バナーが主要内容を妨げない

レスポンシブデザインで同じHTMLを使う場合も、CSSやJavaScriptで重要内容を消していないか確認します。

表示性能は利用者体験と検索システムの一要素です。

Core Web Vitals等の指標は、

  • 主要コンテンツの表示
  • 操作応答
  • レイアウトの安定

を測る材料です。

  • 対象ページ
  • ラボ・実利用者データ
  • モバイル・地域
  • 画像・フォント
  • JavaScript
  • 広告・計測タグ
  • API・サーバー
  • 公開後の監視

指標だけを改善し、コンテンツや機能を削って利用価値を下げないようにします。

Google Search Consoleでは、Google検索に関する状態を確認できます。

  • 所有権
  • 検索パフォーマンス
  • インデックス
  • サイトマップ
  • URL検査
  • モバイル・構造化データ等のレポート
  • 手動対策
  • セキュリティ問題
  • 通知
  • クライアント所有のプロパティ
  • 制作・保守担当への権限
  • 共有メール
  • 公開前の所有権確認
  • サイトマップ送信
  • リニューアル後の監視
  • 月次・変更時確認
  • 退場時の権限削除

Search Consoleの数値は、GA等のアクセス解析と定義・集計が異なります。

完全一致を前提にしません。

公開前に自動・手動で確認します。

  • 200、301、404等
  • リダイレクト連鎖
  • HTTPS
  • 大文字・末尾スラッシュ
  • canonical
  • title
  • description
  • h1・見出し
  • robots meta
  • 言語
  • 構造化データ
  • 主要本文
  • 内部リンク
  • robots.txt
  • サイトマップ
  • 認証
  • WAF・Bot制御
  • JavaScript・API
  • ページネーション
  • 旧新URL
  • リダイレクト
  • 404
  • 内部リンク
  • Search Console
  • 計測

ツールのクロール結果だけでなく、代表ページをブラウザ・URL検査等で確認します。

  • CMSから全公開URLを生成
  • title・canonical・言語
  • 一覧・関連記事の内部リンク
  • サイトマップ
  • 404
  • CMS非公開時の削除・リダイレクト
  • ビルド失敗時の旧版
  • 検索インデックス

を公開フローへ含めます。

条件の組み合わせで大量URLが生成される場合、

  • インデックスさせる代表ページ
  • クロール不要なパラメータ
  • canonical
  • 内部リンク
  • サイトマップ
  • 内容の薄い組み合わせ
  • 0件ページ

を設計します。

すべての検索結果URLを検索エンジンへ登録する必要はありません。

ブラウザで見えることだけで判断せず、

  • 初期HTML
  • レンダリング後HTML
  • APIエラー
  • HTTPステータス
  • リンク
  • title・canonical
  • URLごとの内容

を確認します。

  • SEOをクロール・インデックスの土台と、コンテンツ評価に分けて説明している
  • 重要ページのURL一覧と発見経路を把握している
  • URL命名・末尾スラッシュ・www・HTTPS等のルールを決めている
  • 重要ページへ通常の内部リンクで到達できる
  • URLの状態に合う200・301・404・401・5xx等を返している
  • ソフト404、リダイレクト連鎖・ループを検査している
  • canonical、内部リンク、サイトマップ、リダイレクトが整合している
  • robots.txtを非公開・noindexの代わりに使っていない
  • noindexページをクロール可能にし、サイトマップから除外している
  • サイトマップへ正規・200・インデックス対象URLだけを含めている
  • title・description・見出しをページ内容とCMSモデルへ対応させている
  • JavaScript実行前後の主要本文・リンク・メタ情報を確認している
  • CSR・SSR・SSGを方式名でなく最終HTTP・HTMLで検証している
  • 構造化データを可視内容・公開状態と一致させている
  • 多言語URL、canonical、hreflang、内部リンクを整合させている
  • モバイルでも主要内容・リンク・メタ情報が同等である
  • Search Consoleの所有・権限・サイトマップ・監視担当を決めている
  • 公開前クロールと公開後のインデックス・検索流入監視を計画している

「XMLサイトマップを送ればすべてインデックスされる」

Section titled “「XMLサイトマップを送ればすべてインデックスされる」”

サイトマップは発見を助けるヒントです。品質、重複、noindex、canonical、エラー等により登録されない場合があります。

「robots.txtでブロックすれば検索結果から消える」

Section titled “「robots.txtでブロックすれば検索結果から消える」”

URLが外部から知られている場合、説明なしで検索結果に出る可能性があります。インデックス除外はnoindex、非公開情報は認証を使います。

「canonicalを付ければ旧URLから新URLへ移行できる」

Section titled “「canonicalを付ければ旧URLから新URLへ移行できる」”

canonicalは正規URLのシグナルであり、利用者を転送しません。恒久移動では301等を使います。

title、リンク、ステータス、canonical、内容、速度、重複等が必要です。SSRでも誤実装は起きます。

「検索順位の下落は技術SEO担当のミス」

Section titled “「検索順位の下落は技術SEO担当のミス」”

移行・競合・検索意図・コンテンツ・季節・アルゴリズム等の要因があります。技術状態と内容・市場を分けて調査します。

Q1. クロールとインデックスの違いは何ですか。

Section titled “Q1. クロールとインデックスの違いは何ですか。”
回答と解説 クロールはクローラーがURL・リソースを取得すること、インデックスは取得・解釈した内容を検索システムの候補として処理することです。クロールされても登録されない場合があります。

Q2. robots.txtとnoindexの主な役割の違いは何ですか。

Section titled “Q2. robots.txtとnoindexの主な役割の違いは何ですか。”
回答と解説 robots.txtは主にクロールを制御し、noindexはページを検索インデックスへ登録しないよう伝えます。noindexを読むにはページをクロールできる必要があります。

Q3. canonicalと301リダイレクトの違いは何ですか。

Section titled “Q3. canonicalと301リダイレクトの違いは何ですか。”
回答と解説 canonicalは重複ページ群の優先URLを示すシグナルで、利用者を転送しません。301はURLが恒久的に移動したことを伝え、利用者・クローラーを新URLへ転送します。

Q4. JavaScriptサイトで確認するSEO上の重要事項を挙げてください。

Section titled “Q4. JavaScriptサイトで確認するSEO上の重要事項を挙げてください。”
回答と解説 主要本文、リンク、title、canonical、HTTPステータス、API・JSの取得、エラー時、URLごとの固有内容、robotsによるリソース遮断等です。

Q5. サイトマップに含めるべきURLはどのようなURLですか。

Section titled “Q5. サイトマップに含めるべきURLはどのようなURLですか。”
回答と解説 200を返し、正規URLで、インデックスさせたい最新のURLです。リダイレクト、404、noindex、重複の非正規URLは除外します。