📚 ナレッジベース

03-06_テクニカルSEO

最終更新 2026年08月25日 / 21_ナレッジベース/マニュアル_ナレッジ/制作部署/03-06_テクニカルSEO.md

出典: 制作部署マニュアル テクニカルSEO(自動ミラー・正本は /Users/oogushiyuuki/manual-terasu)

テクニカルSEOとは

サイトの「技術基盤」を整える施策。コンテンツ・被リンクが良くても、技術が破綻してたら検索順位は上がらない。

テクニカルSEOは「土俵」。これが整ってないとどんなSEO努力も無駄になる。


テクニカルSEO の7大要素

# 要素 重要度
1 サイト速度(Core Web Vitals) 最重要
2 モバイルフレンドリー 最重要
3 HTTPS(SSL) 必須
4 クロール・インデックス可能性 最重要
5 sitemap.xml / robots.txt 必須
6 構造化データ 重要
7 URL 正規化(canonical) 重要

1. サイト速度(Core Web Vitals)

ページ表示速度が遅いと、Google順位は確実に下がる

Core Web Vitals 3指標

指標 正式名称 良好ライン 内容
LCP Largest Contentful Paint 2.5秒以内 最大要素(ヒーロー画像等)の表示時間
CLS Cumulative Layout Shift 0.1以下 レイアウトのズレ
INP Interaction to Next Paint 200ms以内 操作(クリック等)への応答速度

→ 3つすべて「良好」が必須。1つでも黄色・赤なら順位への悪影響あり。

計測ツール

ツール 用途
PageSpeed Insights URL入力で即測定(PC/モバイル両方)
Chrome DevTools F12 → Lighthouse
Search Console「Core Web Vitals」 実ユーザーデータ
WebPageTest 詳細分析
GTmetrix わかりやすい指標

LCP 改善ポイント

  • ヒーロー画像の WebP/AVIF 化
  • 画像の preload(最重要画像)
  • フォントの preload
  • サーバー応答速度(TTFB)改善
  • CDN利用(Cloudflare等)
  • 不要なJSの削減

CLS 改善ポイント

  • 画像に width/height 属性明記
  • 動的に挿入される要素のサイズ確保
  • フォント読み込み時のレイアウトずれ防止(font-display: swap + サイズ事前指定)
  • 広告領域の事前確保

INP 改善ポイント

  • 重い JavaScript の削減・分割
  • サードパーティスクリプトの最小化
  • メインスレッドのブロック時間削減
  • イベントリスナーの最適化

2. モバイルフレンドリー

モバイルファーストインデックス(2021年〜完全移行)

Google はモバイル版を主評価対象としている。PC版だけ最適化はNG。

必須対応

  • レスポンシブデザイン
  • viewport設定
  • 文字サイズ16px以上
  • タップ範囲44×44px以上
  • 横スクロール発生なし
  • ポップアップで本文を覆わない(特にモバイル)

viewport設定

<meta name="viewport" content="width=device-width, initial-scale=1.0">

モバイルフレンドリーテスト


3. HTTPS(SSL)

HTTPS化されてないサイトは順位的にも信頼的にも不利

必須対応

  • 全ページHTTPS化(http://はリダイレクトでhttps://へ)
  • SSL証明書の有効性(期限切れ注意)
  • 混在コンテンツ(Mixed Content)の解消(http://リソースが混ざってないか)

Cloudflareなら無料・自動

  • Cloudflare Pages / Workers 使用なら SSL は自動発行・自動更新
  • Let's Encrypt も無料で使える

確認方法

  • ブラウザのアドレスバーで🔒鍵マーク
  • DevTools の Console で Mixed Content 警告がないか

4. クロール・インデックス可能性

クロールとは

Googlebotがサイトを巡回してページを発見すること。

クロールを助ける施策

1. sitemap.xml を送信

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/about/</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>
  • Search Console に送信
  • ルートに配置(/sitemap.xml
  • 全URL列挙(最大50,000 / 50MB)
  • lastmod を実際の更新日に

2. robots.txt で誘導

User-agent: *
Allow: /

Disallow: /admin/
Disallow: /internal/
Disallow: /thanks

Sitemap: https://example.com/sitemap.xml

3. 内部リンクでクローラー誘導

孤立ページ(どこからもリンクされてないページ)はクロールされにくい。

4. クロール頻度

更新頻度が高いサイトほどクロールが頻繁に。定期更新が大事。

インデックス確認方法

方法1:Search Console URL検査

  • 特定URLを入力 → 「インデックス済み / 未登録」確認
  • 未登録なら「インデックス登録をリクエスト」

方法2:site: 検索

site:example.com

→ Google にインデックスされてるページ一覧が出る。

方法3:Search Console カバレッジレポート

  • インデックス済み / 除外 / エラー の内訳が見える

5. インデックス制御

noindex で除外

「インデックスしないでほしいページ」(サンクスページ・管理画面等):

<meta name="robots" content="noindex, nofollow">

使い時

  • サンクスページ(フォーム送信後)
  • 検索結果ページ
  • ログインページ
  • 仮公開・テストページ

NG:本番ページに noindex 残し

開発時の noindex を本番に残すと検索結果から消える致命バグ。デプロイ前に必ず確認。

canonical でURL正規化

同じ内容のページが複数URLでアクセスできる場合、「これが正規」と伝える:

<link rel="canonical" href="https://example.com/service/">

重複URLのパターン

  • https://example.com/https://example.com/index.html
  • http://https://
  • www. あり・なし
  • パラメータ付き(?utm_source=twitter
  • 大文字・小文字違い

→ 全部 canonical で正規URLを明示。


6. 構造化データ

詳細は前章(s2-c05 オンページSEO)参照。

テクニカル観点でのポイント

  • JSON-LD形式推奨(Microdata/RDFaより新しい)
  • <head> 内 or <body> 内どちらでもOK
  • 検証Rich Results Test
  • Search Console「拡張」レポートでエラー監視

主要な構造化データ

<!-- 組織情報 -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "TERASU",
  "url": "https://terasu.scale-group.co.jp/",
  "logo": "https://terasu.scale-group.co.jp/logo.png"
}
</script>

<!-- サイト全体 -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "TERASU",
  "url": "https://terasu.scale-group.co.jp/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://terasu.scale-group.co.jp/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>

<!-- パンくず -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "ホーム", "item": "https://example.com/"},
    {"@type": "ListItem", "position": 2, "name": "サービス", "item": "https://example.com/service/"},
    {"@type": "ListItem", "position": 3, "name": "HP制作", "item": "https://example.com/service/web/"}
  ]
}
</script>

7. URL構造とリダイレクト

301リダイレクト(恒久的移転)

古いURLから新URLへのSEO評価を引き継ぐリダイレクト。

# .htaccess の例
Redirect 301 /old-page/ https://example.com/new-page/

# Cloudflare Pages の _redirects ファイル
/old-page/ /new-page/ 301

使い時

  • ドメイン移管
  • URL変更(サイトリニューアル)
  • 重複URLの統合

302リダイレクト(一時的移転)

評価を引き継がない。「一時的に別ページを見せる」場合のみ

NG

  • リニューアルで全部302 → SEO評価が失われる
  • 301を使うべき場面で302を使う

リダイレクトチェーン回避

A → B → C → D のような連鎖はNG。A → D に直接リダイレクトするように整理。


8. ページ表示速度の改善テクニック

画像の最適化

<!-- レスポンシブ画像 -->
<img
  src="hero.webp"
  srcset="hero-400.webp 400w, hero-800.webp 800w, hero-1600.webp 1600w"
  sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1600px"
  alt="ヒーロー画像"
  width="1600"
  height="900"
  loading="lazy"
  decoding="async"
>

preload で先読み

<!-- ヒーロー画像を先読み -->
<link rel="preload" as="image" href="/hero.webp">

<!-- フォント先読み -->
<link rel="preload" as="font" href="/font.woff2" type="font/woff2" crossorigin>

<!-- 別ドメインの接続を先に確立 -->
<link rel="preconnect" href="https://fonts.googleapis.com">

JavaScript の最適化

<!-- 通常 -->
<script src="app.js"></script>

<!-- 非同期読込(順序問わず・即実行) -->
<script src="analytics.js" async></script>

<!-- 遅延読込(HTML解析後に実行) -->
<script src="non-critical.js" defer></script>

CSS の最適化

  • Critical CSS をインライン化(首画面分)
  • 残りは外部読込
  • 未使用CSSの削除

CDN(Content Delivery Network)

  • Cloudflare(無料プランあり・最強)
  • CloudFront(AWS)
  • Fastly

→ 世界各地から高速配信。


9. クロール予算(Crawl Budget)

1サイトあたりのクロール回数には限度がある

大規模サイトでは特に重要

  • 数万ページ規模になると、Googlebot が全部巡回しきれない
  • クロールされないページは更新が反映されない

クロール予算を効率化

施策 効果
sitemap.xml で重要ページを優先指定 クロール優先度UP
robots.txt で不要ページを Disallow クロール無駄を削減
404ページを減らす クロール無駄を削減
重複ページを canonical で統合 クロール無駄を削減
サーバー応答速度を上げる 単位時間あたりのクロール数UP

10. JavaScript SEO(SPA・React/Vue系)

注意点

  • Google は JavaScript をレンダリングできるが時間差がある
  • 古いクローラーは JS 未対応

対策

SSR(サーバーサイドレンダリング)

Next.js / Nuxt.js でサーバー側でHTML生成 → クローラーが即読める。

SSG(静的サイト生成)

Astro / Hugo / Eleventy 等で事前に静的HTML生成。

Dynamic Rendering(動的レンダリング)

クローラーには事前レンダリングHTML、ユーザーにはSPA、を出し分け。

→ TERASUの場合、静的HTMLサイトまたはCloudflare Pagesベースが理想(SEO最優先)。


11. hreflang(多言語対応)

複数言語版のサイトを運営する場合:

<link rel="alternate" hreflang="ja" href="https://example.com/ja/page">
<link rel="alternate" hreflang="en" href="https://example.com/en/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">

→ Googleが「どの言語ユーザーに見せるべきか」を判断。


12. AMP(Accelerated Mobile Pages)

近年は重要度低下。Google は AMP の優遇を2021年に廃止。Core Web Vitals 改善が代替。

→ 新規サイトはAMP導入する必要なし。


13. セキュリティヘッダ

ヘッダー 効果
Strict-Transport-Security HTTPS強制
X-Content-Type-Options: nosniff MIMEタイプスニッフィング防止
X-Frame-Options: SAMEORIGIN iframe埋込制限
Referrer-Policy リファラー制御
Content-Security-Policy XSS対策

Cloudflare Pages での設定(_headers ファイル)

/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin

検証ツール:securityheaders.com で A 以上を目指す。


テクニカルSEO チェックリスト

必須

  • [ ] HTTPS化(http→httpsリダイレクト)
  • [ ] viewport meta タグ設置
  • [ ] sitemap.xml 設置 + Search Console送信
  • [ ] robots.txt 設置
  • [ ] canonical URL 全ページ設定
  • [ ] 構造化データ(最低Organization + WebSite)
  • [ ] PageSpeed モバイル90+ / PC95+
  • [ ] Core Web Vitals 3項目すべて緑
  • [ ] モバイルフレンドリーテスト合格
  • [ ] 全画像 alt + width/height + lazy

推奨

  • [ ] CDN利用(Cloudflare等)
  • [ ] WebP/AVIF 画像形式
  • [ ] preload で重要リソース先読み
  • [ ] JS の async / defer
  • [ ] セキュリティヘッダ設定
  • [ ] 404ページ専用ページ
  • [ ] 301リダイレクトでURL変更対応

大規模サイト向け

  • [ ] クロール予算の最適化
  • [ ] パンくず構造化データ
  • [ ] hreflang(多言語)
  • [ ] SSR / SSG の検討

テクニカルSEO NG

NG 結果
robots.txt: Disallow: / を本番に残す 全ページ検索結果から消える
本番ページに noindex 残し インデックス除外
開発URL を canonical 指定 評価が分散・誤解
http のままサイト運営 「保護されてない通信」警告
画像WebP化なし 表示遅延
width/height なし画像 CLS悪化
JS 重すぎ INP悪化
重複URL放置 評価分散
301の代わりに302 SEO評価引き継ぎ失敗

参考:テクニカルSEO の良例

サイト 学べる点
Stripe Core Web Vitals 完璧
Linear SPA でも SEO 対応
Vercel Next.js による SSR/SSG
Google テクニカル全要素の教科書

ツール一覧

カテゴリ ツール
速度測定 PageSpeed Insights / Lighthouse / WebPageTest
Core Web Vitals Search Console / CrUX
クロール Screaming Frog / Sitebulb
構造化データ検証 Rich Results Test / Schema Markup Validator
sitemap生成 XML-sitemaps.com
モバイルテスト Search Console
セキュリティヘッダ securityheaders.com
HTTPS検証 SSL Labs