サイトマップの作り方

サイトマップとはサイトに含まれるページの中で検索エンジンにクロールして欲しいページをリストにしたものです。サイトのページが検索エンジンなどにインデックスされるには、Googleなどの検索エンジンにクロールしてもらわなければなりません。通常は内部のリンクを順に辿ってクロールしますが、サイトマップが作成されていれば効率よくクロールすることができます。

サイトマップはツールを使って作成されるケースも多いと思いますが、サイトマップがどのような構造になっているのかの説明と、実際に手作業でサイトマップを作成する方法について解説します。

(2022 年 04 月 22 日公開 / 2022 年 04 月 22 日更新)

サイトマッププロトコルについて

サイトマップ sitemaps.org で定義されているサイトマッププロトコルに従って記述されたものです。Googleだけではなく多くの検索エンジンがサポートしていますので、プロトコルに従って作成したサイトマップは共通して使用することができます。

サイトマッププロトコルに関する日本語の解説は下記で見ることができます。

http://www.sitemaps.org/ja/

p1-1

詳細な内容については上記サイトの「プロトコル」のページに記載があります。

p1-2

ではサイトマップの規則に従ってサイトマップを作成してみます。

サイトマップの基本形

サイトマッププロトコル 0.9でサイトマップをXML形式で作成する場合、サイトマップの構造は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  ページのURLに関する情報

</urlset> 

XML宣言を記述した後で <urlset> タグで全体を囲います。<urlset> タグは必須です。そしてこの中にサイトに含まれるページ毎にページのURLに関連する情報を記述していきます。

ページのURLに関しては次のように記述します。

<url>
    <loc>http://www.example.com/index.html</loc>
</url>

まず全体を <url> タグで囲います。そしてページのURLを <loc> タグの値として記述します。

よって1つのページだけが含まれるサイトマップは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.example.com/index.html</loc>
    </url>
</urlset> 

通常サイトには複数のページが含まれます。サイトマップに記載したいページの数だけ <url> タグを記述して下さい。下記が完成形となります。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.example.com/index.html</loc>
    </url>

    <url>
        <loc>http://www.example.com/sub1/index.html</loc>
    </url>
</urlset> 

テキストエディタで上記を記載し保存して下さい。サイトマップのファイル名は一般的に「sitemap.xml」のよう名前を付けますが別の名前でも構いません。イトマップとしてはこのまま登録しても正常に動作しますが、必要に応じて次のオプションのタグを使ってページのURLに関する情報を付与して下さい。

オプションタグ

サイトマップではURL毎に <url> タグを記述しますが、必須のタグはURLを指定するのに使う <loc> タグだけです。ただ付加的な情報として最終更新日、更新頻度、優先順位、についてもそれぞれ記述することができます。

<lastmod> タグ

1つ目のオプションはページの最終更新日を表す <lastmod> タグです。値として次のような形式で指定して下さい。

・YYYY-MM-DDの形式、例:2012-02-27
・YYYY-MM-DDThh:mm:ssTZDの形式、例:2012-02-27T14:38:07+09:00

URL毎に設定された最終更新日を検索エンジンはクロールを行なうかどうかの判断する時に参考にします。ただ更新日が古いからといってクロールされなくなるわけではありません。

<url>
    <loc>http://www.example.com/index.html</loc>
    <lastmod>2012-02-27</lastmod>
</url>

<url>
    <loc>http://www.example.com/sub1/index.html</loc>
    <lastmod>2012-02-27T14:38:07+09:00</lastmod>
</url>

<changefreq> タグ

2つ目のオプションはページの更新頻度を表す <changefreq> タグです。次の値の中から一つ指定します。

・always  アクセスするたびに内容が更新されます
・hourly  1時間に一度
・daily   1日に一度
・weekly  1週間に一度
・monthly 月に一度
・yearly  年に一度
・never   基本的に内容が変わらないアーカイブページ

URL毎に指定された更新頻度を参考にはしますが、hourlyを指定したからといって1時間に一度クロールがくるわけではなく、neverを指定しても定期的にクロールはされるようです。

<url>
    <loc>http://www.example.com/index.html</loc>
    <changefreq>daily</changefreq>
</url>

<url>
    <loc>http://www.example.com/sub1/index.html</loc>
    <changefreq>monthly</changefreq>
</url>

<priority> タグ

3つ目のオプションは <priority> タグです。サイト内で各ページ優先順位を相対的に指定します。0.0(重要ではないページ)から1.0(重要なページ)の間の値を指定します。デフォルトの値は0.5となっています。

検索エンジンはURLに設定された優先順位を見て、どのページを優先的にインデックスするのかの参考にします。

注意頂きたいのは優先順位はサイト内での相対的な順位です。全てのページに1.0を指定したら、単に全てのページの優先順位に差が無いことになります。また他のサイトと比較するものではなう、インデックスされるかどうかの参考になるだけなので、優先順位を高く設定しても検索順位などには影響は与えません。

<url>
    <loc>http://www.example.com/index.html</loc>
    <priority>0.8</priority>
</url>

<url>
    <loc>http://www.example.com/sub1/index.html</loc>
    <priority>0.5</priority>
</url>

以上、これら3つのオプションを使って作成されたサイトマップの例としては次のようなものになります。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.example.com/index.html</loc>
        <lastmod>2012-02-27T14:38:07+09:00</lastmod>
        <changefreq>daily</changefreq>
        <priority>0.8</priority>
    </url>

    <url>
        <loc>http://www.example.com/sub1/index.html</loc>
        <lastmod>2012-02-27</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.5</priority>
    </url>
</urlset> 

オプションはあくまで補助的な情報なので省略も可能ですし記述しても構いません。またどの程度このオプションの値が考慮されるのかは分かっていませんし検索エンジンごとに違うと思われますので、記述する場合でもそれほど神経質に設定される必要はないかと思います。

サイトマップ作成の注意点

サイトマップを作成する上でいくつか注意事項があります。

・サイトマップのファイルは UTF-8 エンコードで作成して下さい。
・&などの文字はエスケープ処理をして下さい。
・サイトマップに含むことが出来るURLは50,000個までです。
・ファイルサイズは 10MB(10,485,760 バイト) 以下にする必要があります。

エスケープ処理が必要な文字は以下のとおりです。

&    &amp;
'    &apos;
"    &quot;
>    &gt;
<    &lt;

50,000個以上のURLがあるサイトの場合はサイトマップインデックスファイルを使用します(別のページ参照)。またファイルサイズが大きい場合はgzip形式で圧縮することができます。サイトマップを設置する場所についても別のページで解説いたします。

サイトマップファイルはこのように手動で作成することもできますが、サイトに含まれるURLが数多い場合はあまり現実的ではありません。サイトマップを作成するツールなども公開されていますのでツールを利用してもいいかと思います。ツールについては「サイトマップ作成ツールの使い方」でいくつか紹介しています。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。