Webサイトにおいて、ただコンテンツを公開しただけでは、検索エンジンに効果的にクロールしてもらえません。 この記事では、SEO対策として重要なXMLサイトマップの概要や、Railsでの実装方法について解説します。

事前知識

まず、SEO対策に必要な2つの用語について解説します。

(1) XMLサイトマップ

XMLサイトマップとは、Webサイト内のリンクやそのページの重要度、最終更新日などをまとめたもので、検索エンジンに効果的にクロールしてもらうために提供するガイドのようなものです。

Googleのような検索エンジンがWebサイトをクロールする経路は2つあり、(1)内部/外部リンクによりページをたどる方法と、(2)Webサイトが提供するXMLサイトマップに従ってたどる方法があります。 このサイトマップを仕様に従って提供することで、検索エンジンから効果的にクロールされ、検索流入の増加が期待できます。

(2) robots.txt

SEO対策におけるrobots.txtの役割は、XMLサイトマップの場所を検索エンジンに教えることにあります。

検索エンジンはルートドメイン下のrobots.txtを参照しますが、XMLサイトマップの場所自体は指定されていません。 この場所をrobots.txtに明記することで、検索エンジンにXMLサイトマップを見てもらえるようになります。

実装方法

今回、XMLサイトマップの作成にはsitemap_generatorを利用します。 以下のようにして、XMLサイトマップとrobots.txtを作成します。

1. インストールする

以下をGemfileに追記して、bundle installします。

gem 'sitemap_generator'

また、以下のコマンドによりサイトマップを定義するための設定ファイルを生成します。

$ bin/rake sitemap:install

2. クロール対象を記述する

以下を参考に、サイトマップを定義していきます。 #addでサイトマップにURLを追加し、:priority(優先度)や:lastmod(最終更新日)などをあわせて定義します。

詳しくは公式リポジトリのサンプルが参考になりますので、ご覧ください。

config/sitemap.rb:

SitemapGenerator::Sitemap.default_host = 'http://example.com'

SitemapGenerator::Sitemap.create do
  add articles_path, priority: 0.7, changefreq: 'daily'

  Article.find_each do |article|
    add article_path(article), lastmod: article.updated_at
  end
end

3. 定期的に更新する

sitemap.rbを定義しただけでは、サイトマップは生成されません。 サイトマップを生成するには、適切なタイミングで以下のタスクを実行します。

$ bin/rake sitemap:refresh

これを毎回手動ですると大変なので、(1)Capistranoによるデプロイ時や(2)cronにより定期的にタスクを実行すればよいでしょう。 クロールすべきページが自動で増えていく場合は(2)で定期的に更新し、そうでない場合は(1)でよいと思います。

それぞれの方法については次章で解説します。

4. robots.txtを作成する

最後に、robots.txtを作成します。 これはpublic/下に配置し、以下のように記述します。

User-agent: *

Sitemap: http://example.com/sitemap.xml.gz

更新を自動化する

1. Capistranoによるデプロイ時に更新する

Capfileに以下を追記します。

require 'capistrano/sitemap_generator'

また、config/deploy.rbに以下を追記します。 こうすることで、デプロイが完了した際にsitemap.rbを自動で生成します。

after 'deploy:restart', 'deploy:sitemap:create'

2. cronにより定期的に更新する

cronを用いることで、デプロイの有無によらずサイトマップを更新することができます。 Wheneverを導入している場合、schedule.rbに以下のように記述することでサイトマップを更新できます。

every 1.day, at:'5:00 am' do
  rake '-s sitemap:refresh'
end

おわりに

実装面については以上ですが、一般的なコンテンツづくりという意味では、タイトルタグやh1h6タグに重要なキーワードを入れるなど、テキスト全体での対応が必要です。 本記事の対応と合わせて、SEO対策を行なうとよいでしょう。