文系プログラマによるTIPSブログ

文系プログラマ的思考でアフィリエイト・SEO・solr・MySQL等のTIPSを掲載しています!

WEBプログラマの私が開発現場で学んだSEOを一挙公開!

SEO

誰もが悩むSEOですが、私が沢山のWEBサイトを開発してきた中で、これさえ対応すればSEOは問題無いよ!というものをまとめたので、公開してみようと思います。

SEOは Search Engine Optimize の略で、言葉通り検索エンジンに対する最適化です。決してユーザビリティの向上等、ユーザへの施策では無い事を理解しましょう。

プログラマーなら)最低限SEOをやっておくべきであり、その後にマーケティングやユーザビリティ向上を目指しましょう。


では早速見ていきます。


ちょっと長いですが、頑張っていきましょう!!

■ htmlタグ

titleタグ

対応しないとどうなるか

titleタグが無い場合や「無題ドキュメント」等となっている場合、検索エンジンが頑張って自動的にタイトルを表示してくれます。すると自分でtitleをコントロールできないので、狙った検索ワードで自サイトをヒットさせる事が非常に難しくなります。

注意点

短い程良いです。具体的に何文字くらいがいいかはgoogleスニペットの仕様によって変わりますが、省略表示されないくらいに短くしましょう。また、人間の目線は左から右に動くので、左に最重要なワードを、右に重要でないワードを書きます。検索して欲しいワードを先頭に持っていけるといいです。

曖昧な言葉は良くないです。googleの立場になって考えると、ユーザが知りたい事は曖昧な言葉ではなく、より具体的ですぐ答えに辿り着けるサイトを優先して表示させるからです。

amazon等はサイト名にブランド力があるため先頭に「Amazon.co.jp: 商品名」としていますが、これは普通のブランド力の無いサイトでは非推奨です。amazon等は商品名よりもブランド名の方がユーザに安心感を与えたり、訴求力があるから先頭にブランド名を持ってきています。

同一サイト内に同じタイトルが複数存在してはいけません。
例えばECサイトなら、一意な商品コード等を末尾に付けるとよいです。

meta description

何故必要か

検索エンジンスニペットに表示され、サイトの概要をユーザに伝えられます。SERP上でブラウザ検索でワードを探すユーザもいるため、検索させたいワードを含めておくとよいです。

対応しないとどうなるか

titleタグと全く同じ事が起きます。検索エンジン任せになってしまいます。

注意点

省略されないギリギリの文字数を意識して下さい。更に、ユーザは全部読んでくれる程優しくないので、1行目でそのページの概要が解るくらいに簡潔に書いてある事が望ましいです。2行目・3行目は補足説明を書きます。

meta keywords

不要です。現在の検索エンジンはkeywordsタグは一切評価しないので、入れるだけ無駄です。

パンダアップデートより遥か昔、このkeywordsに大量のキーワードを埋め込み、全く関係無いワードをヒットさせて不正にユーザを流入させる手法が横行したため、googleを筆頭に検索エンジンはkeywordsを評価しなくなりました。

rel="canonical"

何故必要か

重複コンテンツの対策のため必要です。非常に重要です。また、ページランクの集約により、分散した低いページランクを1ページに集約してランクアップできます。(1 + 1 = 2という単純な足し算ではありませんが)

対応しないとどうなるか

重複コンテンツが増え、サイトの評価が落ちます。また、ページランクが分散してしまい、検索結果の1ページ目に表示されにくくなります。

注意点:1ページ目に集約しない

検索結果画面など、ページングがあるページの場合、
http://localhost/list?page=2http://localhost/list に正規化しないで下さい。
1ページ目と2ページ目のコンテンツは異なります。
ユーザは2ページ目にあるコンテンツが検索したいのに、canonicalで1ページ目に集約してしまったばかりに、検索にヒットせず流入を逃してしまいます。

これはソートにも言える事です。
http://localhost/list?sort=1http://localhost/list?sort=2 の表示内容は異なります。

ポイント

極力全ページにcanonicalを設定すべきです。
utm_medium・utm_source等のトラッキングのURLパラメータ付きでアクセスされる事があり、パラメータが有るURLと無いURLで重複コンテンツが発生する可能性があります。また、検索エンジンにパラメータ付きでインデックスされてしまう可能性があります。

また、サブドメイン有無によって、 http://www.hoge.com/http://hoge.com/ がアクセスできる場合、両者は全く同じ内容なのに別々のURLとして検索エンジンに登録され、ページランクが分散する可能性があり、重複コンテンツの温床にも成り得ます。意図しないドメイン検索エンジンに登録させないためにも、canonicalは全ページに設定すべきです。

rel="prev" rel="next"

何故必要か

検索エンジンに確実に次のページのURLを伝える事ができます。

対応しないとどうなるか

特に不都合はありませんが、書いたほうがより正確に検索エンジンに次・前のページのURLを伝える事ができます。

注意点

pageやsortなどのパラメータも必ず付けて下さい。
例えば現在のURLが「http://localhost/list?page=1&sort=1」の時、

<link rel="prev" href="http://localhost/list?page=1" />
<link rel="next" href="http://localhost/list?page=3" />

等としてしまうと、ソートが有る場合の1ページ目とソートが無い場合の1ページ目はコンテンツが異なる可能性があり、googleに正確にコンテンツを伝えられなくなります。

noindex

何故必要か

例えば会員専用画面等、googleの検索結果に表示させたくない場合に使用します。また、似たようなページが複数あって、1ページ以外にnoindexを付けてgoogleに表示させるのは代表する1ページのみにする、等で使います。

注意点

noindexを付けてもページランクが付与される事があります。また、googleの検索結果には表示されないのに、noindexページを起点にクロールを行う事があります。この点を理解しておかないと、無駄なクロール・ページランクの分散がされてしまいます。

ポイント

管理画面等がある場合、インデックスされてしまうと大変な事になる可能性があるので、noindex、nofollow、noarchiveを付けておい方がよいです。

nofollow

何故必要か

リンク先に対して、ページランクを付与するかどうかを決める事ができます。検索エンジンはアンカーリンクにnofollow属性が無い場合、そのサイトをクロール対象にし、更にページランクを付与しようとします。

よくある例として、ブログのコメント欄にアダルトサイトのスパムリンクを大量に貼られた時にnofollow属性が無いと、大量の被リンクとページランクをスパムサイトに与えてしまいます。その場合、googleから「あなたのサイトはスパムサイトの協力者(スパムサイトの自作自演サイト)なのか?」という疑いがかけられ、ペナルティを受けてしまう可能性もあります。

注意点

基本的に外部サイトへのリンクは

<a href="ほげ" rel="nofollow">ほげ</a>

として下さい。信用できる事が解りきっている場合のみ、nofollowを付けなくて大丈夫です。内部リンクの場合は付けなくて大丈夫です。

■ クロール補助

ウェブマスターツールの登録

何故必要か

検索エンジンに自サイトの存在を伝える事ができ、クロールして貰えます。サイトマップxmlの登録や被リンク一覧やtitleタグの重複等、非常に重要な情報を確認する事ができます。googleだけでなくbingもありますので、なるべく登録しておくとよいです。

注意点

主にmetaタグに識別キーを登録する方法と、識別ファイルをアップロードする方法があります。

個人的にはmetaタグを推奨します。大抵のサイトはtilesやmayaa等のテンプレートエンジンを使っていると思うので、テンプレートファイルに1行metaタグを書くだけで全ページに反映する事ができます。

一方htmlファイル形式の場合、主にDocumentRoot配下に置く事になりますが、ウェブマスターツールのアカウントを変更したりして新旧識別キーファイルが残ってしまって困ったり、どのファイルがどの検索エンジンの識別キーなのか解り難かったりします。

更に、場合によってはapacheのProxyPass等で個別にアクセスを許可しないと参照できない環境の場合もあります。

サイトマップxml

対応しないとどうなるか

対応しなくても大丈夫ですが、対応した場合は検索エンジンに自サイトにはこういうURLが存在し、それぞれのページがこれくらいの頻度で更新されるよ、という事を伝える事ができます。

動線が無いページや階層が非常に深いクロールされにくいページがあっても、サイトマップxmlを用意する事でURLの存在を伝え、クロール頻度もある程度コントロールする事が可能になります。

サイトマップxmljavaで生成する

以前以下の記事を書きましたので、合わせて御覧ください。
javaでサイトマップxmlを生成するならsitemapgen4jで決まり! - 文系プログラマによるTIPSブログ

注意点

一般的には階層の浅いページをサイトマップxmlにのせる事は推奨しません。

例えばECサイトの場合、カテゴリ選択画面のURLパラメータが複数存在し、その組み合わせを全通りサイトマップxmlに載せる事はやめた方がいいです。

理由は、検索エンジンで1ページに来るサイトは基本的に「具体的なページ」である事がほとんどだからです。例えば「外付けハードディスク」というカテゴリページよりも「IO-DATA 型番XXXXX」といった商品ページの方が検索エンジンの1ページ目に来やすいので、極力詳細画面のURLを載せるべきだと私は考えています。

階層の浅い、具体性の低いページのクロールよりも、具体性の高い詳細ページをクロールして貰った方がクロール速度が上がるでしょう。

ソフト404対応

何故必要か

例えば検索結果画面で0件ヒットの場合、画面にコンテンツは表示されていません。
この場合、0件ヒットでコンテンツが無いのに、HTTPステータスコード200を返しています。HTTPステータス200を返してしまうと、検索エンジンはコンテンツが無いページをクロールしようとします。

検索エンジンが一度にクロールできる量は決まっているので、コンテンツが無いページをクロールさせるよりも、コンテンツがあるページをクロールして、なるべく新しいページを速くインデックス化して欲しいですよね。

そのために、0件ヒットのページやコンテンツが無いページは明示的にHTTPステータス404を返すと、検索エンジンはこのページはクロールは不要と判断し、インデックスからも削除してくれます。インデクス数は減りますが、ユーザにコンテンツが無いページを見せる機会を減らす事ができ、クロール対象ページを減らす事でクロール速度の上昇が見込めます。

対応しないとどうなるか

ソフト404対応をしないと、検索エンジンはコンテンツが無いページをクロールしてしまいます。また、検索エンジンの検索結果画面にコンテンツが無いページがヒットしてしまい、ユーザの直帰率を上げてしまう要因にもなってしまいます。不要なページへのクロールと直帰率の上昇により、サイトのインデックス化速度の低下とサイトの品質の低下につながります。

更に、グローバル公開したばかりのサイトの場合、最初にドカッとコンテンツが無いページもインデックス化され、一見すると大量にインデックスされて「凄いね!」と言われます。しかし検索エンジンはコンテンツが無いページを徐々に削除していくので、ある日インデックス数を確認するとインデックス数が激減し「何が起きているんだ!すぐに何とかしろ!」等と言われる事があります。

動線の確認

何故必要か

動線というのは、目的のページへのリンクが存在するかどうかの事です。例えば、URL直打ちだと表示できるけど、画面から辿れないページがある状態の場合は「動線が無い」状態になります。

対応しないとどうなるか

クローラは主にアンカーリンクを辿って次のページを発見するので、動線が無いとクローラがクロールできないページが発生する可能性があります。

リンクはjsではなく必ずaタグで行う

対応しないとどうなるか

検索エンジンにもよりますが、通常クローラはアンカーリンク(aタグ)を辿ってクロールします。アンカーリンクではなくjavascriptで画面遷移させる実装だと、クローラがそのjsを実行できず、次の画面にクロールできない可能性があるので、極力jsでのリンクは控えた方がいいです。

■ URL設計

静的URLと動的URL

具体的には以下のようなURLの事を指します。

動的URL http://localhost/list?page=1&sort=1
静的URL http://localhost/list/page=1,sort=1
どちらがいいのか

動的URLの方が実装が楽でメンテナンスコストは低いです。なので、動的URLを推奨します。動的URLの場合、ウェブマスターツールでそのURLパラメータがどんな用途で存在するのかを設定する事ができ、クローラの補助をする事ができます。

一方静的URLの場合、ウェブマスターツールで設定できず、無駄にクロールするページが増えてしまい、サイトのクロール速度が低下する恐れがあります。クロールページが増えてしまうのは、動的URLと違い、URLのどの部分がページパラメータを指しているのかを理解するのに時間がかかったり、理解されなかったりするので、クロール量の上昇とクロール速度の低下を招いてしまいます。

日本語URL

例えば http://localhost/detail/おーいお茶 といった、静的URLに日本語名を入れ込んで日本語URL化しても、クロールの補助にはなりません。実装の手間が増えるだけで、メリットはほぼ無いと思われます。

■ リダイレクト

301リダイレクト

何故必要か

よくある例として、旧サイトから新サイトへ移行する時にURL構造を刷新した場合、検索エンジンには旧サイトのURLがインデックスされている状態になります。新サイトを公開したら新URLでアクセスして欲しいですよね。301リダイレクトを設定する事で、旧URLのページランクを引き継いだまま、新URLに更新してくれます。

HTTPステータス301は恒久的なURL変更で、検索エンジンのURLも更新されます。302の場合は一時的なURL変更なので、検索エンジンに旧URLが残り続けます。

対応しないとどうなるか

検索エンジンに旧サイトのURLが残り続けてしまい、ずっと旧URLからのアクセスが続きます。301どころかリダイレクトも設定していない場合、旧URLにアクセスされて404になってしまうという最悪の自体を招き、自サイトが全滅する恐れがあります。

従って、URL構造を変更した場合は「絶対に」301リダイレクトを設定すべきです。

httpとhttpsのリダイレクト

何故必要か

http://localhost/listhttps://localhost/list は全く同じですが、検索エンジンは別のページと認識し、重複コンテンツの温床となったり、ページランクの分散が発生してしまいます。これを避けるため、本来httpsの画面にhttpでアクセスされた場合、httpsに301リダイレクトしてあげると、重複コンテンツの発生を抑制する事ができます。

対応しないとどうなるか

httpとhttpsの重複コンテンツが発生する可能性と、何故かhttpsの画面がhttpで検索エンジンに登録される場合があります。

また、apacheの設定によってはhttpsでしか画面を表示できない(httpだと表示できない)ページが発生する事もあり、httpでアクセスしてきたユーザが全滅してしまい、多大な機会損失が発生する可能性もあります。

PCサイトとスマホサイトの相互リダイレクト

何故必要か

検索エンジンはPCとスマホで別々の検索結果を返すよう努力していますが、PC版の検索結果画面にスマホサイトがインデックスされてしまったり、その逆が発生したりします。一般的にはユーザーエージェントを元に、iphoneandroidwindows phoneの場合はスマホサイトにリダイレクトしたりします。

対応しないとどうなるか

自力でPCサイトを表示したり、自力でスマホサイトを表示してくれるユーザもいますが、大抵のユーザは「もういいや」と離脱します。この離脱が多いと直帰率が上昇し、サイト評価の低下を招き、機会損失を招きます。

■ その他

サイト名

サイト名は極力短く、極力具体性をもったサイト名を選んで下さい。

後からサイト名を変更すると、検索エンジンにそれを浸透させるのに時間がかかったり、既にリンクして貰っているサイトに迷惑がかかったりするので、サイト名は慎重に時間をかけて考える事を推奨します。

ユーザ名

サイト名と同様です。

雑感


長文を読んで頂きありがとうございます。

SEO業者でなくても、これくらいはプログラマーなら全部対応可能だと思います。
もしSEO業者を利用している場合、こんな事を指摘させるのは避けましょう

SEOに関してはこの記事に書いてある事ができていれば基本的に問題ないので、SEO業者にはサイトのブランディングやマーケティング(SEM)をさせて下さい。SEOをやらせるなんてお金が勿体無いです。この記事に書いてある事程度しか指摘できないような無能なSEO業者は今すぐ切ってやって下さい。
2014年はSEO業者は役に立たないので自力で頑張りましょう! - 文系プログラマによるTIPSブログ

新版 SEM:リスティング広告 Googleアドワーズ&Yahoo!リスティング広告対応 Web担当者が身につけておくべき新・100の法則。

新版 SEM:リスティング広告 Googleアドワーズ&Yahoo!リスティング広告対応 Web担当者が身につけておくべき新・100の法則。

検索連動型広告を成功に導くSEM戦略 増補改訂版

検索連動型広告を成功に導くSEM戦略 増補改訂版