タイトル: SEO
SEOタイトル: Web サイト SEO 基礎完全ガイド(title / meta / 構造化データ / Core Web Vitals)
| この記事の要点 |
|
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 はモバイルファーストインデックスを採用済。スマホでの表示・速度が評価の基本となります。