この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:atom
更新日時:2026-06-11 07:29:05

タイトル: SEO
SEOタイトル: Web サイト SEO 基礎完全ガイド(title / meta / 構造化データ / Core Web Vitals)

この記事の要点
  • SEO(Search Engine Optimization): Google 等の検索エンジンで上位表示させる施策の総称
  • 基本: title タグ(60 文字以内)meta description(160 文字)見出し階層(h1 → h2 → h3)
  • 構造化データ: JSON-LD(schema.org 語彙)でリッチリザルト対応。Article / Product / FAQPage / BreadcrumbList
  • Core Web Vitals: LCP < 2.5s / FID < 100ms / CLS < 0.1(2024 から INP に置換)
  • 基盤: HTTPS 必須 / canonical URL / sitemap.xml + robots.txt / Google Search Console 登録

SEO の全体像

SEO は大きく 3 つの軸で考えます:

内容主な施策
テクニカル SEOクローラビリティ・インデックスsitemap、robots.txt、canonical、HTTPS、表示速度
コンテンツ SEO検索意図に合う質の高い記事title、description、見出し、本文、画像 alt
外部 SEO被リンク・E-E-A-T権威性のあるサイトからの自然リンク、著者情報

title タグ(最重要)

検索結果のクリック率を最も左右します。

<!-- ✅ 良い例 -->
<title>Laravel バリデーション完全ガイド(Form Request / カスタムルール) | CWiki</title>

<!-- ❌ 悪い例 -->
<title>Home</title>
<title>ページ1</title>
<title>すごく長くてキーワードを詰め込みすぎたタイトル...60 文字を大きく超えて検索結果で省略されてしまう</title>
  • 30〜60 文字(日本語 30 文字前後)
  • 主要キーワードを前半に配置
  • サイト名は末尾に | サイト名 形式
  • ページごとにユニーク

meta description

<meta name="description" content="Laravel のバリデーションを基本から応用まで網羅。$request->validate() の使い方、Form Request クラス、カスタムルール、エラーメッセージのローカライズ、API レスポンスまでサンプルコード付きで解説します。">
  • 120〜160 文字(PC 検索結果の表示幅)
  • 記事の結論と読み終わるメリットを含める
  • キーワードは含めるが詰め込みすぎない(自然な文)

見出し階層(h1 / h2 / h3)

<!-- ✅ 正しい階層 -->
<h1>Laravel バリデーション完全ガイド</h1>
  <h2>基本: $request->validate()</h2>
    <h3>失敗時の挙動</h3>
  <h2>Form Request クラス</h2>
    <h3>authorize()</h3>
    <h3>rules()</h3>

<!-- ❌ 階層スキップは NG -->
<h1>...</h1>
  <h4>サブセクション</h4>  <!-- h2 / h3 を飛ばしている -->

構造化データ(JSON-LD)

Google が記事の意味を理解するための機械可読なメタ情報。リッチリザルト(強調表示)の対象になります。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Laravel バリデーション完全ガイド",
  "image": "https://example.com/article-cover.jpg",
  "datePublished": "2026-05-17T00:00:00+09:00",
  "dateModified": "2026-05-17T00:00:00+09:00",
  "author": {
    "@type": "Person",
    "name": "山田太郎"
  },
  "publisher": {
    "@type": "Organization",
    "name": "CWiki",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  }
}
</script>

FAQ 形式のページは FAQPage スキーマで Q&A が直接検索結果に表示されます:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Laravel のバリデーションはどこに書くのが良い?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "小規模ならコントローラに、規模が大きくなったら Form Request クラスに分離するのが推奨です。"
    }
  }]
}
</script>

Open Graph / Twitter Card

SNS シェア時のサムネ・タイトル・説明文を制御します:

<!-- Open Graph (Facebook / LINE 等共通) -->
<meta property="og:title" content="Laravel バリデーション完全ガイド">
<meta property="og:description" content="$request->validate() から Form Request まで...">
<meta property="og:image" content="https://example.com/ogp.png">
<meta property="og:url" content="https://example.com/articles/123">
<meta property="og:type" content="article">
<meta property="og:site_name" content="CWiki">

<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Laravel バリデーション完全ガイド">
<meta name="twitter:description" content="...">
<meta name="twitter:image" content="https://example.com/ogp.png">

sitemap.xml と robots.txt

<?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-17</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/articles/123</loc>
    <lastmod>2026-05-17</lastmod>
  </url>
</urlset>
# robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/

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

canonical URL(URL 正規化)

同じ内容が複数 URL で見える場合、評価が分散しないよう正規 URL を指定します:

<!-- https://example.com/articles/123?utm_source=twitter にアクセスされた時 -->
<link rel="canonical" href="https://example.com/articles/123">

Core Web Vitals(表示速度・UX)

指標意味目標
LCP (Largest Contentful Paint)最大要素の表示時間< 2.5 秒
INP (Interaction to Next Paint)入力 → 反映までの遅延(旧 FID)< 200ms
CLS (Cumulative Layout Shift)レイアウトのずれ量< 0.1

計測ツール: PageSpeed Insights / Lighthouse / Chrome DevTools Performance

必須の運用ツール

  • Google Search Console: クロール状況、検索パフォーマンス、インデックス登録、Core Web Vitals 確認
  • Google Analytics 4 (GA4): 流入元、ユーザー行動、コンバージョン
  • Bing Webmaster Tools: Bing への登録
  • PageSpeed Insights: ページ速度の継続計測

SEO アンチパターン

NG 行為リスク
キーワード詰め込み(同じ語の反復)スパム判定でランクダウン
隠しテキスト(白背景に白文字)手動ペナルティ
低品質ページの大量生成(コピペ・自動生成)Helpful Content Update で全サイト評価低下
有料リンク購入 / 相互リンク集リンクスパムでペナルティ
cloaking(クローラと人で表示を変える)インデックス削除

FAQ

Q: SEO の効果はどれくらいで出る?
A: 一般に 3〜6 ヶ月。新規ドメインは 1 年以上かかることもあります。

Q: AI 生成記事は SEO に不利?
A: Google は「生成手段でなく品質で判定」と公式アナウンス。ただし低品質な大量生成は Helpful Content で減点されます。

Q: モバイル対応はどの程度重要?
A: Google はモバイルファーストインデックスを採用済。スマホでの表示・速度が評価の基本となります。