【SEO基礎】エンジニアがSEO担当者とやり取りする際に最低限知っておきたい知識

# 目的
SEO担当者の意図を理解した上で開発出来るようになる。

エンジニア側もSEOの知識を備えていないと、知らないところでサイト順位を下げてしまう原因になり兼ねない。（意図しない重複ページなど）
今回はそれを未然に防ぐ為にエンジニアが知っておきたい知識について調べてみた。

## titleタグ
```html
<head>
  <title>ページタイトル|サイト名</title>
</head>
```
head内に記述する。「|」を挟んで後ろにサイト名を入れるのがポピュラーな形。
titleタグに設定した内容は、
・検索結果の見出し
・ブラウザのタブ名
に使われる。

長すぎると検索結果のタイトルが「・・・」で省略されてしまうの、で文字の長さは約30文字程度推奨。

**titleタグには狙っているキーワードを必ず含める。**
クローラーはtitleタグでの内容を見て何についてのページなのかを見分けている。
1キーワード1記事が基本。複数あると評価が分散してしまう。

## descriptionタグ
```html
<head>
  <meta name="description" content="ページ内容の要約を書く">
</head>
```
検索結果のタイトルの見出しの下に表示される。
ページの内容を正確に要約する事をGoogleは推奨している。

闇雲にキーワードを羅列するのはNG。
**descriptionの内容はSEO順位には影響がない。**
あくまでCTRを左右する要素。

## keywordsタグ
```html
<head>
  <meta name="keywords" content="キーワードA, キーワードB, キーワードC">
</head>
```

現在は使われていない。検索精度の低かった頃に使われていた。

## 見出しタグ
```html
<h1>見出し1</h1>
<h2>見出し2</h2>
<h3>見出し3</h3>
<h4>見出し4</h4>
<h5>見出し5</h5>
<h6>見出し6</h6>
```

ユーザーとクローラにコンテンツ内容の認識の手助けをするもの。

「文字を大きくしたいから」など見た目をを整える目的で見出しタグを使用するのはNG。
見出しタグは順番に使う。h1の次にh4が現れるのはNG。

## sitemap.xml
```
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/</loc>
    <lastmod>2019-01-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>
```

サイト内のURLを一覧化したもの。クローラーの巡回を促進する。

新規ページを早く検索結果にインデックスしてもらうために登録する。URLの数が多い大規模ページで推奨。
**クローラーに認識されるにはサーバ上にsitemap.xmlをアップした後、サーチコンソールから送信する必要がある。**

参考：[サイトマップの XML 形式](https://www.sitemaps.org/ja/protocol.html)
### changefreqタグ
ページの更新頻度を表す。指定可能な内容は以下の通り。
- always
- hourly
- daily
- weekly
- monthly
- yearly
- never
あくまで参考情報とのこと。必ずしも指定した期間でクローラーが走るわけではない。

### priorityタグ
サイト内で他のURLとの相対的な優先度を表す。優先度を下げたからといって、SEO順位に影響はない。
0.0~1.0まで指定可能。デフォルト値は0.5。
クローラーは優先度の高いURLを優先的にインデックス登録する。

### 画像用サイトマップ
```
<url>
  <loc>http://example.com/sample.html</loc>
  <image:image>
    <image:loc>http://example.com/image.jpg</image:loc>
  </image:image>
  <image:image>
    <image:loc>http://example.com/photo.jpg</image:loc>
  </image:image>
</url> 
```

サイト内の画像が画像検索で検索で検出されやすくなる。
画像サイトマップを作成することで、JavaScriptでだし分けている画像なども検出できるようになる。

個別でサイトマップを作成しても良いし、既存のサイトマップに画像情報を追加しても良い。
通常のサイトマップ同様個別で作る場合サーチコンソールに登録させる必要がある。

参考：[サイトマップを管理する](https://support.google.com/webmasters/answer/178636?hl=ja)

他にも動画サイトマップ・ニュースサイトマップがある。
参考：[Google ニュース サイトマップを作成する](https://support.google.com/webmasters/answer/74288?hl=ja&ref_topic=4581190)
参考：[動画サイトマップとサイトマップの代わり](https://support.google.com/webmasters/answer/80471?hl=ja&ref_topic=4581190)

## カスタム404ページ
SEO順位に影響はないがGoogleは作成することを推奨している。
ユーザーが何かしらの原因で404ページへ流入した際、人気コンテンツや関連するコンテンツへの導線を用意しておく事でユーザーに無駄な遷移をさせる事なくコンテンツを表示することが出来る。

**カスタム404ページがGoogleにインデックスされないように注意。**
質の低いコンテンツをみなされサイトの評価が分散してしまう。Googleにインデックスされない為にはnoindexの設定をする必要がある。

## noindex
```:html
<head>
  <meta name=”robots” content=”noindex”>
</head>
```

Googleの検索エンジンにインデックスされない様に出来る。
インデックスされないだけで、クローラー自体は巡回している。

フォーム内やダウンロードページなど、ページとしては必要だが検索結果には表示させたくない時、**SEO的に質の低いページを評価させてサイト全体の順位を落としたくない時**に使われる。

## nofollow
```:html
<a href="" rel="nofollow">アンカーテキスト</a>
```

クローラーがリンクをたどるのを防ぐ。
主に、外部サイトに対して被リンクを与えたくない場合、外部サイトの影響をこちら側が受けたくない時に設定する。
Googleの活用事例として、ブログのコメントや掲示板へのリンクを含む書き込みに対してnofollowの設定が推奨されている。

```:html
<head>
  <meta name=”robots” content=”nofollow”>
</head>
```

headのなかにmetaタグとして記述することで、ページ内のすべてのリンクに対してnofollowを設定できる。

## 重複コンテンツ
同じ内容のページが複数存在すると低品質なコンテンツとしてペナルティ対象になる。
URLの正規化漏れ、動的なページ生成など、製作者が意図していない所で発生しやすい。
- http://hoge.jp
- https://hoge.jp
- https://www.hoge.jp
- https://www.hoge.jp/index.html
- https://www.hoge.jp/index.html?kwd=seo
正規化していないとこれらが別々の重複コンテンツとして認識されてしまう。
他にもURLパラメーターの有無でも同様のことが発生する。

## canonical属性
```:html
<head>
  <link rel=”canonical” href=”正しいURL”>
</head>
```

canonical属性を使うことで分散した重複コンテンツへの評価を1つに統合することができる。
**複数のcanonical属性が設定されていると、どちらも無視されてしまうので注意。**

## 301リダイレクト
リダイレクトとはページに訪れたユーザーに別のページを見せること。
301リダイレクトでは移動前のページの評価を移動先のページへ引き継ぐことができる。
ドメインの変更やページのURLを変更した際に有効。

他には意図していないキーワードで記事が評価されてしまう且つ、それが別のキーワードと重複してしまっている際に一方の記事を301リダイレクトをして評価の分散を防ぐこともある。

## 最後に
特殊な環境のページでは仕様書通りではなく、こちらからより良い提案をしていきたいです。
そのためにも、SEOに関する知識はエンジニア側としてもある程度は知っておきたいと思いました。
実際調べてみると、知らなかった役割や仕様が多々ありとても勉強になりました。

## 参考サイト
- https://support.google.com/webmasters/answer/7451184?hl=ja
- https://support.google.com/webmasters/answer/7451184?hl=ja
- https://www.sitemaps.org/ja/protocol.html
- https://support.google.com/webmasters/answer/178636?hl=ja
- https://support.google.com/webmasters/answer/80471?hl=ja&ref_topic=4581190
- https://support.google.com/webmasters/answer/74288?hl=ja&ref_topic=4581190
- https://wacul-ai.com/blog/seo/internal-seo/noindex-seo/
- https://digital-marketing.jp/seo/about-noindex-and-nofollow/
- https://service.plan-b.co.jp/blog/seo/8539/
- https://www.allegro-inc.com/seo/canonical-url