今さら聞けない? SEが知っておくべきSEOの基礎


システム発注をする際、担当SEさんにSEO的な要件を入れたRFPを渡すと「なるほど~はじめて知りましたー」と言われることも多い気がするので、システム設計に関わる方に見ていただくSEOの基本説明資料を作ろうと思っています。

※基本中の基本なので、わかってる人は読まなくていいくらいの基礎だけです。


Web担に書こうかと思ったけど、荒削りなので、ここにエントリ。
追記していって、まとまったら、 Web担に書こうかな。



SEOの基本

Google・Yahoo・MSNなどの検索エンジンの仕組みは、クローラー(ロボット/スパイダー)が、色々なWebページを拾ってDBに情報を収めるというものです。ページのデータがDBに格納されている状態を「インデックスされる」と呼んでいます。

インデックスされたWebページは、各検索エンジン独自の考え方と技術によって(=アルゴリズムによって)重要度が付けられ、検索結果として表示されます。

SEO専業とかになると、もっと深いところまで考える必要があるのですが、普通にWebシステムを作るのであれば、下記のように検索結果が作られていると考えてください(実際とは少し違いますけど、基礎としては下記の認識があれば十分だと思います)


 (1)クローラーがくる
   ↓
 (2)インデックスされる
   ↓
 (3)アルゴリズムによって表示順位などが決定される



このエントリではSEOの深い技術ではなく、「適切にクローラーが巡回してきて、インデックスをしてもらえるシステムを構築する」という基礎だけを考えることにします。




クローラーが巡回できるページを設計する

独自ドメインをとって、HTMLでスタティックなページを作って、検索エンジンに登録さえすれば時間はかかりますし例外もありますが、普通はクローラーが訪問してきますが、Webサイトによってはクローラーが到達しづらいページや、クローラーに嫌われるページがあります。

逆に言えばクローラーが巡回してくれるページを設計するというよりは、巡回しづらいシステムを作らなければ良いというだけで、Webシステム設計者の方は、この部分だけ押さえておけば、とりあえずは問題のないものが作れると思います。多分。



■JSにはNOSCRIPTを。
最近のクローラーJavascriptを理解しているものもある気もするのですが、Javascriptを理解しないクローラーでも巡回できるようにしておくのが基本です。
ただし、JSのON/OFFでリンク先やページの意味が大きく変化するようなNOSCRIPTを仕込むのはスパム行為になるので控えてください。


■FORMは使ってくれません。
これ、意外と知らない人が多くてビックリなのですが、例えばECサイトを作る時に商品カテゴリなどをフォームからのPOST/GET(またはJSなど)で取るようにしてあると、そこから先にクローラーは来てくれません。
クローラーはフォームデータを送信しません(←これ重要)
デザインの時点でクローラーも巡回できるよう設計にしておくのが大事なのです。
(他の方法もあるのですが、スパムにならない方法を説明するのがダルいので省略しますw)


■URLを一意にする
フォワード/インクルードを連発するJAVA屋さんがハマりやすい罠なのですが、クローラーはURLを一意の基準としてページを巡回しています。
クローラーはURLを変えずに遷移させるページを上手く巡回できないので、ちゃんとURL変えてください。
フレームワークの仕様で変えられないとか言わないでね、本気で困るから(笑)

逆にURLに、PHPSESSID=******を含む場合や、input type="image"の際に送信されてしまうクリック座標データを含むURLなども問題です。

Googleは「同じページにURLが複数ある状態」について下記のように教えてくれています。

ウェブマスター向けガイドライン -Google

セッション ID やサイト内のパスを追跡する引数がなくても、検索ロボットがサイトをクロールできるようにする。 これらの技術は個々のユーザーの行動を追跡する場合には便利ですが、ロボットがアクセスするパターンとはまったく異なります。 これらの技術を使用すると、実際は同じページにリンクしている、異なる URL をロボットが排除できず、そのサイトのインデックスが不完全なものになる可能性があります。

「同じページにURLが複数ある状態」のと「違うページだけどURLは同じ状態」は、どちらもダメって覚えてください。(←これ重要)


上記のGoogleガイドラインにも書いてありますが、ほぼ同一のコンテンツでURLに含むパラメーター少しだけ違う動的ページが大量にある(=ページが大量にある)ような場合、クローラーは(そのサイトへの負荷なども考えて)大量にインデックスすることをしないようにしています。
つまり、インデックスされない可能性や、アルゴリズムによる評価が低くなる可能性があるということです。


もちろん、それだけではなくセッション・クッキーやリファラーによって表示を変えるページもクローラーを惑わせるので、上手に設計する必要があります。(変なことするとスパムになることもあるから注意)


以前と違い、最近の検索エンジンは動的なページもインデックスしてくれますが、それは上記のように「URLを一意にする」を守っている場合です。GETで引き回すシステムを作る時に、同じ検索結果なのに様々なURLがあるシステムを作ってしまうことがあります。例えば下記のような場合です。


uchi.gif「メーカー名→カテゴリ→素材」と遷移してきた場合と「カテゴリ→素材→メーカー名」と遷移した場合で、同じ検索結果を返していてもURLは違う・・・なんてことはありませんか?
これらは同じURLを返すように設計すべきです。

または、下記のようにメインの検索ルートは動的なURLを使用せず、フリーワードや絞込みの際にフォワードやフォームを使ったページを返すというのが、一般的な手法だと思います。

kakaku.gif
また、URLにGETのパラメーターを表示している、いないに関わらず気をつけなくてはならないのがスパイダートラップです。


生ログを見ればわかると思いますが、大手検索エンジンが放つクローラーは非常に行儀がよろしいので、できる限り巡回先のサーバーに負荷をかけないように考えて動いています。

ですが、サイトの設計によっては、クローラーがURLに含むパラメーター違いなだけの似たページを巡回しているうちに無限ループさせられることがあります(最近のクローラーは賢いから気づくっぽいけど)

当然、そういったサイトは検索エンジンから好かれることはありませんので、クローラーのループが発生しないような設計が必要です。




・・・なんてものを書いていたら、SEOmoz 動的サイトにおけるSEOの施策という素晴らしい記事が公開されているじゃないですか。ぼくのエントリより、これ読む方がいいかも。とほほ。

つ、疲れた・・・今日はこれ以上書く気力が起きないので、気が向いたら続編を書きます。。。