# Sitemaps

**Sitemaps**（サイトマップ）標準は、ウェブマスターがサーチエンジンに、サイト内でクロールすべきURLを教えるための方式を規定するものである。サイトマップは、当該サイトにおけるURL全てをリストした、XMLファイルとして提供し、ウェブサイト運営者は各URLに付加的情報として、最終更新日時や更新頻度、他のURLとの相対的な重要度を加えたりできる。Sitemapsに対応したサーチエンジンでは、この情報を使って、サイトのクロールをより効率的に行えるようになる。サイトマップはサーチエンジンへのURL追加規約であり、URL排除規約であるrobots.txtを補完するものである。

サイトマップがウェブサイトにおいて特に役立つ点は以下の点である:

* ブラウザに対するインタフェースを通じてたどり着けないようなサイト内の箇所を示すことができる。
* ウェブサイトが、AjaxやSilverlight、Flashといったリッチなコンテンツを使っているような場合、サーチエンジンでは通常処理できないため、この部分のコンテンツ内容へ誘導できる。

ウェブマスターは、サイト内の全URLを含むようなサイトマップを作成し、それをサーチエンジンに登録する。現在、Google, Bing, Yahoo!, Ask.comといったサーチエンジンがサイトマップ標準に対応しているため、サイトマップに対応すれば、事実上、主要なサーチエンジン群に更新ページ情報を伝えることができる。

サイトマップは通常のクロールによるページURL発見のメカニズムを補完するだけで、完全に置き換えるものではない。また、この標準に対応したからといって、サーチエンジンにそのページが登録されることを保証しておらず、また、検索結果におけるランキングでの扱いにも影響を与えるものでもない。

## 歴史

2005年6月にGoogleサーチエンジンが、ウェブ開発者がサイト内のリンクリストを発行できるツールとして、Sitemaps 0.84を最初に導入したSitemaps 0.84。2006年11月には、Google、MSN、Yahooの3社がサイトマッププロトコルの共通対応化を発表した。スキーマバージョンは「Sitemaps 0.90」と変更されたが、内容面での変更はされなかった。

2007年4月、Ask.comとIBMもサイトマップ対応を発表した。くわえて、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="
 xmlns:xsi="
 xsi:schemaLocation="

 <url>
 <loc>
 <lastmod>2006-11-18</lastmod>
 <changefreq>daily</changefreq>
 <priority>0.8</priority>
 </url>
</urlset>

```

### 要素定義

サイトマッププロトコルにおいてつかわれるXML要素の定義を以下に示す:

| 要素名 | 必須要素か？ | 説明 |
| --- | --- | --- |
| <urlset> | 必須 | サイトマップ文書全体を示す要素。'<?xml version>'に続くXML文書はこの要素内に置かれる必要がある。 |
| <url> | 必須 | 各ページエントリを表現する要素。残りの要素はこの子要素となる。 |
| <loc> | 必須 | ページの絶対URLを示す。URLにはプロトコル名（http, ftpなど）を含むスキーマ部や残りのパス名などを含む。URLの長さは2048文字以内でなければならない。 |
| <lastmod> | オプション | ISO 8601によるファイルの最終更新日。YYYY-MM-DD形式のような日付形式または時刻付きの日時表記となる。 |
| <changefreq> | オプション | ページの更新頻度を示す：
* always （常に更新）
* hourly （一時間単位に更新）
* daily （一日一回更新）
* weekly （週に一回の更新）
* monthly （月に一回の更新）
* yearly （年に一回の更新）
* never （更新されない）

'Always'（常に）の場合、アクセスのたびに情報が更新されることを示す。
'Never'（更新されない）場合、アーカイブ等のURLで、ファイルが変化しないことを示す。
クローラー側での補助的指針に使われだけで、低頻度更新のコンテンツはインデックスしないといったことを決定するわけではないことに注意。 |
| <priority> | オプション | このURLのサイト内での相対的な重要度を示す。ウェブマスター側からクローラーに対して、どのページが重要とみなしているかを伝えるためのもの。

0.0から1.0の範囲をとり、1.0が最重要であることを示す。デフォルト値は 0.5 となる。
サイト内のすべてのページに高い重要度を割り当てたとしても、検索結果には影響を与えることはできず、サイト内の他のページに比べての重要度をクローラに伝えるだけのものである。 |

必須要素以外のものにたいする対応状況はまちまちで、サーチエンジンごとに異なる。

### サイトマップ・インデックス

サイトマップ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を指す（例えば、*

以下の表に、いくつかの主要サーチエンジンにおけるサイトマップ登録URLを示す：

| サーチエンジン | 登録URL | ヘルプページ |
| --- | --- | --- |
| Google | ** | Submitting a Sitemap |
| Yahoo! | ** | Does Yahoo! support Sitemaps? |
| Ask.com | ** | Q: Does Ask.com support sitemaps? |
| Bing (Live Search) | ** | Bing Webmaster Tools |
| Yandex |  ? | Sitemaps files |

サイトマップ登録ページを通じてサイトマップを送る場合、サイトマップのURLはパーセントエンコーディング済みでなければならず、: は %3A に、/ は %2F などにそれぞれ変換する必要がある。

## サイトマップの制限

サイトマップファイルには、1ファイルあたり50,000 URLかつ10MBまでという制限がある。サイトマップは gzip 圧縮により、帯域の消費を減らすことができる。サイトマップインデックスを入口として提供することにより、複数のサイトマップファイルにも対応させることができる。サイトマップインデックスファイルもまた50,000サイトマップURLかつ10MBを超えてならないという制限があり、圧縮することでファイルサイズを減らすことも可能である。サイトマップインデックスファイルはさらに多重化でき、複数のサイトマップインデックスファイルを持つこともできる。

サイトマップはXMLファイルによるため、URLを含むデータ値中の以下の文字はエスケープする必要がある：
アンパサンド（&）、シングルクオート（'）、ダブルクオート（"）、不等号（<, >）。

* メタデータ
* Google ウェブマスター ツール

## 参照文献

* サイトマップ公式サイト (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 サイトマップファイル作成用のフリーのオンラインツール