Sitemaps

Sitemaps（サイトマップ）標準は、ウェブマスターがサーチエンジンに、サイト内でクロールすべきURLを教えるための方式を規定するものである。サイトマップは、当該サイトにおけるURL全てをリストした、XMLファイルとして提供し、ウェブサイト運営者は各URLに付加的情報として、最終更新日時や更新頻度、他のURLとの相対的な重要度を加えたりできる。Sitemapsに対応したサーチエンジンでは、この情報を使って、サイトのクロールをより効率的に行えるようになる。サイトマップはサーチエンジンへのURL追加規約であり、URL排除規約であるrobots.txtを補完するものである。 サイトマップがウェブサイトにおいて特に役立つ点は以下の点である: ブラウザに対するインタフェースを通じてたどり着けないようなサイト内の箇所を示すことができる。 ウェブサイトが、AjaxやSilverlight、Flashといったリッチなコンテンツを使っているような場合、サーチエンジンでは通常処理できないため、この部分のコンテンツ内容へ誘導できる。 ウェブマスターは、サイト内の全URLを含むようなサイトマップを作成し、それをサーチエンジンに登録する。現在、Google, Bing, Yahoo, Askといったサーチエンジンがサイトマップ標準に対応しているため、サイトマップに対応すれば、事実上、主要なサーチエンジン群に更新ページ情報を伝えることができる。 サイトマップは通常のクロールによるページURL発見のメカニズムを補完するだけで、完全に置き換えるものではない。また、この標準に対応したからといって、サーチエンジンにそのページが登録されることを保証しておらず、また、検索結果におけるランキングでの扱いにも影響を与えるものでもない。 2005年6月にGoogleサーチエンジンが、ウェブ開発者がサイト内のリンクリストを発行できるツールとして、Sitemaps 0.84を最初に導入したSitemaps 0.84。2006年11月には、グーグル、MSN、Yahooの3社がサイトマッププロトコルの共通対応化を発表した[1]。スキーマバージョンは「Sitemaps 0.90」と変更されたが、内容面での変更はされなかった。 2007年4月、Ask.comとIBMもサイトマップ対応を発表した[2]。くわえて、Google, Yahoo, MSの3社がrobots.txtからのサイトマップファイルの自動検出のための方式を発表した。2007年5月、アリゾナ州、カリフォルニア州、ユタ州、バージニア州の州政府が各州政府サイトでサイトマップ利用を行うと発表した。 サイトマッププロトコルは「Crawler-friendly Web Servers」論文におけるアイデアに基づいている。 サイトマッププロトコル形式はXML文書により提供される。ファイルの文字コードはUTF-8で符号化しなければならない。サイトマップはまた単純なURLをリストしたテキストファイルとしても構成される場合がある。また、これらのファイルは.gz形式で圧縮されたものとして提供される場合がある。 以下に、単一URLとオプション要素を含むサイトマップの例を示す： <?xml version="1.0" encoding="utf-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> <url> <loc>http://example.com/</loc> <lastmod>2006-11-18</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> </urlset> サイトマッププロトコルにおいてつかわれるXML要素の定義を以下に示す: 必須要素以外のものにたいする対応状況はまちまちで、サーチエンジンごとに異なる。 サイトマップXMLプロトコルを拡張して、「サイトマップ・インデックス」ファイルを通じて複数のサイトマップファイルを提供する方法もある。サイトマップファイルの最大サイズは10MBまたは5万URLとされており、これよりも巨大なサイトに対応するため、サイトマップ・インデックスが必要となった。サイトマップはサイトマップ・インデックスと同一のディレクトリに置かれる必要がある。サイトマップインデックスは、複数のサブドメインからなるようなウェブサイト群に対して用いることができ、各サブドメインのサイトマップをサイトマップインデックスにまとめ、robots.txtから参照しておくというような使い方ができる。 サイトマッププロトコルでは、単なるURLリストをテキストファイルに書き連ねたものをサイトマップとして扱うこともできる。XMLによるサイトマップファイルの仕様がテキストファイルにも適用され、UTF-8文字コードや10MBまたは50,000 URLを超えられないといった制限はそのままであるが、gzip形式での圧縮が可能となる。 フィード配信は追加URLをクローラーに伝えるひとつの方法であり、フィード配信にすでに対応しているサイトには扱いやすい方法でもある。この場合の欠点は、フィード配信ではクローラーには最近作成したURLしか伝えられず、残りのURLは通常のクローリング方法に頼る必要がある 。 サイトマップをサーチエンジンに直接、Ping経由で更新情報を通知する方法もあるが、この場合、サーチエンジン側からはステータス情報とエラー情報が返ってくる。この直接登録方式のやり方はサーチエンジンごとにことなる。サイトマップの所在は以下のようにrobots.txtファイル中で指定される： Sitemap: <sitemap_location> <sitemap_location>はサイトマップを取得できるURLを指す（例えば、http://www.example.org/sitemap.xmlなど）。この指定は、ユーザーエージェントごとの設定とは独立に扱われ、ファイル内のどこに置かれても構わない。もしもウェブサイトが複数のサイトマップを持つ場合には、URL指定ではそれらをまとめたサイトマップインデックスファイルひとつが指定されることとなる。 以下の表に、いくつかの主要サーチエンジンにおけるサイトマップ登録URLを示す： サイトマップ登録ページを通じてサイトマップを送る場合、サイトマップのURLはパーセントエンコーディング済みでなければならず、: は %3A に、/ は %2F などにそれぞれ変換する必要がある。 サイトマップファイルには、1ファイルあたり50,000 URLかつ10MBまでという制限がある。サイトマップは gzip 圧縮により、帯域の消費を減らすことができる。サイトマップインデックスを入口として提供することにより、複数のサイトマップファイルにも対応させることができる。サイトマップインデックスファイルもまた50,000サイトマップURLかつ10MBを超えてならないという制限があり、圧縮することでファイルサイズを減らすことも可能である。サイトマップインデックスファイルはさらに多重化でき、複数のサイトマップインデックスファイルを持つこともできる。 サイトマップはXMLファイルによるため、URLを含むデータ値中の以下の文字はエスケープする必要がある： アンパサンド（&）、シングルクオート（'）、ダブルクオート（"）、不等号（<, >）。 メタデータ Google ウェブマスター ツール ^ O. Brandman, J. Cho, Hector Garcia-Molina, and Narayanan Shivakumar (2000). "Crawler-friendly web servers". Proceedings of ACM SIGMETRICS Performance Evaluation Review, Volume 28, Issue 2. doi:10.1145/362883.362894。 ^ M.L. Nelson, J.A. Smith, del Campo, H. Van de Sompel, X. Liu (2006). "Efficient, Automated Web Resource Harvesting" (PDF). WIDM'06. ^ a b c d e Official protocol for XML Sitemaps サイトマップ公式サイト (Google, Yahoo, MSN による) Google, Yahoo, MSN の共同発表, 2006年11月 公式ブログ Google Sitemapsニュースグループ (アーカイブ) Google Sitemaps newsgroup Sitemap Gen サイトマップ生成用Pythonスクリプト（Google提供） sitemap_gen.py サイトマップ生成用Pythonスクリプト（Google提供のMemoryErrorを修正版） Search::Sitemap サイトマップ操作用のPerlライブラリー XmlSitemapGenerator.org サイトマップファイル作成用のフリーのオンラインツール