Hop step XHTML―ホップ ステップ XHTML

Appendix C:サーチエンジン最適化(SEO)

 多くの WWW ページは,公開しておくと検索エンジンのロボットがリンクをたどって訪れ,情報を収集し,検索エンジンの検索結果に掲載されることになる。

 その検索エンジンを多くの人が利用している。検索エンジンは,利用者に目的のページを示すサービスを提供する一方,ページを“格付け”する力を持っているという現実がある。

検索エンジンの種類

 検索エンジンには,大きくディレクトリ型ロボット型(全文検索型)がある。

 ディレクトリは,直訳すると“人名簿”であり,多くは,手動で編集される。サイトはカテゴリ・ジャンル別に整理されている。Yahoo! カテゴリのほか,infoseek などがディレクトリサービスを提供している。

 インターネットが一般化に広まり始めた頃には,多くのディレクトリが,多くのサイトを収載することに熱心であった。申請すればほぼ間違いなく掲載され,さらにはディレクトリの編集者から掲載依頼が来ることもあった。しかし今では,相当な独自性があるサイトでないと申請は通らず,また,掲載に際し料金が必要なディレクトリもある。

 一方,ロボット型は,ロボットスパイダー)と呼ばれる情報収集プログラムが,WWW からページの情報を収集し,それを処理して,検索要求に対してある規則にのっとって合致したとみなしたページをリストする。原則的に処理は自動化されている。Google や Yahoo! など,さまざまなロボット型検索エンジンがある。異なる検索エンジンサイトで,同一のデータを使用している場合も多い。

 これらを比較すると,一般に,ディレクトリ型は登録サイトは少ないものの,サイトが整理されている。一方,ロボット型は,膨大なページが検索対象になるが,求めていないページが検索結果に現れたり,検索にテクニックが必要になったりする。もっとも,ロボット型検索エンジンは,利用者の求めているページを間違いなく提示できるよう,日々改良が重ねられている。

検索エンジンへの掲載

 ディレクトリ型の検索エンジンに関しては,原則的に編集主体に申請をしなければならない。

 ロボット型については,ページを公開すると,ロボットがリンクをたどって情報を収集しに来る。逆にいうと,リンクされていないページは,ロボットが訪れることができない。

 作成したばかりなど,リンクでたどれないページは,検索エンジンのロボットに,そこへの来訪を促すことができる。たとえば,Yahoo! JAPAN の場合“検索結果に表示させる方法”,Google では“サイトの登録/削除”のページから,検索結果に含めてほしいページの URI を送信する。

 ロボットが訪れてから検索結果にリストされるようになるまで,数週間,かかる場合はひと月程度を要する。

サーチエンジン最適化

 検索エンジンを通じて WWW を利用する形態が一般的になった今,検索エンジンの役割と影響はあまりにも大きくなった。ある語句で検索した結果,先頭にリストされるページは,訪れられる確率が高いといえる。そこで,ページビューを増やすために,“検索エンジンで上位にリストされるようにする工夫”をすることがある。これを,サーチエンジン最適化(SEO)という。SEO は,それがビジネスにもなっている。

 究極的な SEO は,検索エンジンがどのように検索に合致したページを順位付けするのかを知り,それに合ったページの記述をすればよい。しかし,一般に,ロボット型検索エンジンは,どのように検索に合致したページを順位づけするのか,公表しない。検索エンジンの処理が知られてしまうと,利用者の望んでいないページがリストさせる作為が可能になり,それによって利用者の利便は損なわれ,ひいては検索エンジンの信用の失墜につながるからである。利用者やサイト制作者は,検索結果から処理内容を推測するしかない。

 また,検索エンジンの処理手法は,日々更新される。そのため,積極的すぎる SEO がいつサーチエンジンスパムとみなされるかもしれない。

重要語抽出の基本

 検索エンジンの基本的処理は,そのページのキーワードが何であるかを割り出すことである。(これが実際に用いられているかは別として)そのための基本的な方法として,tf-idf 法が知られている。

 文書中で出現頻度が高い語は,その文書で重要な語であると考えられる。しかし,ほかの文書にも同じ語が大量に現れていたら,その語は実は大して重要ではないということになる。であるから,多くの文書に出てくる語ほど重要度を低く算定すればよい。

 ある語 t がある文書 d に出てくる頻度を tf(t, d) とし,一連の文書で t が出てきた文書の数を df(t, d) とする。全文書が N 個だとして,idf(t) = log(N / df(t)) と定める。これは,df が大きくなると idf が小さくなることを理解していただけばよい。それで,文書 d における t 重みを tf(t, d) × idf(t) と定める。この量は,tf が大きくなると大きくなるが,idf が小さくなると(=df が大きくなると=多くの文書に t が出現すると)小さくなる。

 このように,“その文書を特徴づける語”が計算される。

WWW とリンク構造

 WWW では,検索の結果に,その特徴であるリンクが勘案されることが多い。リンクはすなわち“参照”,つまりリンクが張られたページは“参考にされている”ページで,価値が高いと考えられるからである。

 しかし,ただやみくもにリンクされていればよいというわけではない。たとえば Google では,“リンク元のページの価値が高ければ,リンク先のページも価値が高いはず”という仮定のもとで,PageRank という指標を計算し,検索結果を出力する材料としている。さらに,PageRank をつり上げるための過剰なリンクは,サーチエンジンスパムとしてペナルティの対象になるという。

人間のページの読み方とロボットのページの読み方

 ロボット型検索エンジンは,自動でページを読み,自動でページを評価する。ここで,人間がページを評価して,有用だと判断するページと,ロボットが“読んで”有用だと判断するページは,必ずしも一致しないのである。もちろん,検索エンジンの技術者は,ロボットが人間と同じように有用なページを判断できるように,処理を改良していることだろう。

 ここで,これが“自動処理”であることがポイントである。適切な XHTML(HTML)で記述されているページは,“機械でも読める”すなわち自動処理がしやすいのである。

 だからといって,これを逆手に取ったトリックは避けなければならない。構造と表現の整合性がとれていない場合,つまりロボットには“構造”で読ませ,人間には“表現”で読ませるページである場合,これはロボットをあざむいていることになる。ロボットは,ページの表現まで立ち入って構造との整合性を確かめているはずである。

 しかしロボットは,ページの要旨や主張といった意味内容には立ち入りづらい。内容が優れていても検索エンジンに評価されないページになってしまう恐れもあるのである。積極的すぎる SEO で読者に負担をかけたり,意味内容が損なわれてしまったりということは本末転倒であるが,人間が読んでもわかりやすく内容があり,機械が読んでも処理しやすいページを目指すとよいだろう。これは,ゆくゆくはセマンティックウェブへとつながっていく。

サーチエンジンスパム

 検索エンジンをあざむき,検索結果にページをリストさせようとする行為をサーチエンジンスパムという。サーチエンジンスパムと判断されたページは,検索結果のきわめて低い順位にリストされるか,検索結果から除外される。

 一般に,“人間が見るはずのページとロボットに読ませるページが異なる”場合にサーチエンジンスパムと判断される。たとえば次のような場合が該当する。

  • 一般の UA(ブラウザなど)とロボットとで,異なるページが提供される(ファントムページ攻撃)
  • 検索で合致させたい語句が,見えないテキスト(背景色と同じ文字色,異常に小さな文字,読者がわからない位置)として書き込まれている(隠しテキスト攻撃)
  • 同一内容のページを多数作成し,検索結果リストを独占しようとする(複製ページ攻撃)
  • あるページへの導入ページを大量に用意する(ドアウェイページ攻撃)
  • 過剰なリンクによって,ページが有用であると見せかける(リンクファーム攻撃)

 また,Section 19 でも述べたように,かつては meta 要素で指定されたキーワードが参考にされていたが,ここに内容と無関係な語句を詰め込む攻撃が横行したため,現在はこれは軽視される傾向にある。

 サーチエンジンスパムは,WWW のアクセシビリティ・ユーザビリティを低下させる行為でもある。たとえば,隠しテキスト攻撃においては,視覚表現のブラウザではそのテキストは見えないかもしれないが,読み上げられたら聞きたくもない喧伝けんでんを延々と聞かされるはめになるだろう。

 わたしたちは,このような“情報を利用しにくくさせる行為”に対して,その当座の誘惑に負けることなく,厳然とした態度を取るべきなのであろう。