Webアプリケーションを開発する上でSEO対策は避けては通れない道だと思います。
そんなSEO対策として真っ先に対応が必要となるのがサイトマップになります。
WordPressではプラグインを使用してサイトマップの作成や送信が可能ですが、Railsアプリケーションでも同じくらい簡単に対応することが可能です。
この記事では、サイトマップの導入/作成およびその送信の定期実行の仕組みについてもご紹介させていただきます。
フリーランス案件を探すならこのエージェント!
転職を考えているならこのエージェント!
そもそも、サイトマップとは?
サイトマップとは、その名の通り、サイト全体のページ構成を地図のように分かりやすく整理しているページのことを指します。
サイトマップによって、ユーザーはもちろん、GoogleやYahoo等の検索エンジンに対してもサイトの内容を分かりやすく伝えることが可能となります。
そんなサイトマップですが、その形式にはhtmlとxmlの2種類が存在しています。
htmlファイルの方は主にユーザーを対象として作成するページになっており、人間が目で見てわかるようにサイト内の構造がまとめられています。
一方、xmlファイルの方は、検索エンジンに対してサイト構造を伝えるために存在しております。
検索エンジンはサイト内のリンクを辿って各ページを認識していくため、サイト構造を整理して伝えることで、検索エンジンが”気付きやすいページ”にすることが可能となるのです。
今回はSEO対策としてのサイトマップの作成が主な目的であるため、xmlファイルの作成方法をご紹介させて頂きます。
sitemap_generatorを使ってサイトマップを作成しましょう
sitemap_generatorのインストール
それでは早速サイトマップを作成していきましょう!
作成にはsitemap_generatorというgemを使用します。
Gemfileに以下を追記し、”bundle install” を実行しましょう。
gem 'sitemap_generator'
続いて、設定ファイルを作成するため、以下のコマンドを実行してください。
rails sitemap:install
実行後、config/sitemap.rb
というファイルが作成され、このファイルに記載に従ってサイトマップが作られていくこととなります。
サイトマップ作成のための設定
作成されたconfig/sitemap.rb
ファイルの内容は概ね以下のようになっているかと思います。
# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
# Examples:
#
# Add '/articles'
#
# add articles_path, :priority => 0.7, :changefreq => 'daily'
#
# Add all articles:
#
# Article.find_each do |article|
# add article_path(article), :lastmod => article.updated_at
# end
end
それぞれ順を追って説明させていただきますね。
SitemapGenerator::Sitemap.default_host
まず1行目のこちらの記載ですが、サイトのURLを記載する箇所になります(本サイトであれば、”https://hataworakuni.net” になります)。
add articles_path, :priority => 0.7, :changefreq => 'daily'
add articles_path, :priority => 0.7, :changefreq => 'daily'
続いて、中段部分に記載されているこちらの記載ですが、”add 〇〇path” とすることで、URLを追加することができます。
“add articles_path” であれば記事一覧ページのURLを追加し、”add article_path(article)” であればそれぞれの記事の個別ページのURLを追加することとなります。
さて、ここでいくつかオプションが登場してきているので、そちらも併せてご紹介させていただきますね。
- priority
- changefreq
- lastmod
こちらは直訳すると”優先度” になりますが、他のURLに比べて当該URLのページをどの程度優先するかと示しており、0(低)〜1.0(高)の間で設定されます。
こちらは”change frequency” の略で、当該URLのページがどの程度の頻度で更新されるかを示しており、’always(常に)’, ‘hourly(1時間毎)’, ‘daily(1時間毎)’, ‘weekly(1週間毎)’, ‘monthly(1ヶ月毎)’, ‘yearly(1年毎)’ or ‘never(更新なし)’ の中から選択して記載します。
こちらは”last modified” の略で、当該URLのページの最終更新日を示します。
以上に挙げたもの以外にもオプションは存在しますので、さらに詳しく知りたい方は以下のGithubを見てみてくださいね。
https://github.com/kjvarga/sitemap_generator#a-simple-example
サイトマップの作成
さて、設定ファイルの記載が完了したところで、実際に作成してみましょう。
作成すると言っても難しいものでも何でもなく、以下のコマンドを実行するだけです。
rail sitemap:create
実行後、以下のようなログが表示されていれば無事作成されております。
In '/Users/user/Project/example/public/':
+ sitemap.xml.gz 1 links / 323 Bytes
Sitemap stats: 1 links / 1 sitemaps / 0m00s
なお、サイトマップを作成するコマンドは以下の通り3種類存在しますので、ケースに応じて使い分けてくださいね。
- rails sitemap:create
- rails sitemap:refresh
- rails sitemap:refresh:no_ping
上記の通り、単にサイトマップを作成する場合に使用します。
サイトマップを更新し、かつその更新を検索エンジンに通知したい場合に使用します。
サイトマップを更新しますが、その更新を検索エンジンに通知したくない場合に使用します。
また、削除する場合には以下のコマンドを実行してください。
rails sitemap:clean
作成後、自身のサイト(本サイトであれば “https://taroblogs.com/sitemap.xml.gz”)へアクセスし、 “sitemap.xml.gz” がダウンロードできれば任務完了です。
サイトマップを.gitignoreへ追加
なお、作成したサイトマップですが、Gitで管理する必要はないため、.gitignore
ファイルに以下を追記しておきましょう。
public/sitemap.xml.gz
サイトマップ作成の定期実行
さて、サイトマップを無事作成できたわけですが、記事などを更新する度に手動で送信するのは面倒ですよね。
そういう時に便利なのが、”whenever” というgemになります。
wheneverのインストール
こちらの導入も非常に簡単です。
まずはGemfileに以下を追記し、”bundle install” を実行しましょう。
gem 'whenever'
続いて、設定ファイルの作成のために以下のコマンドを実行しましょう。
bundle exec wheneverize
これで、config/schedule.rb
が生成されると思います。
このconfig/schedule.rb
ファイルに定期実行したい内容を記載していきます。
今回のサイトマップの更新であれば、以下のような記載が考えられます。
# 毎日 8:00 にサイトマップを更新
every 1.day, at: '8:00 am' do
rails 'sitemap:refresh'
end
タスクの定期実行
ただ、これだけではまだ定期実行されませんので、以下のコマンドを実行し、定期実行タスクを登録しておきましょう。
bundle exec whenever --update-crontab
実行後、”[write] crontab file updated” というログが表示されていたら無事登録できている証拠になります。
上記も併せて、主なコマンドについては以下の通りになっていますので併せてご確認くださいね。
- bundle exec whenever –update-crontab
- bundle exec whenever –write-crontab
- bundle exec whenever –clear-crontab
- crontab -l
タスクを登録する(※既存のタスクは残ります)。
タスクを登録する(※既存のタスクは無くなります)。
登録されたタスクを削除する。
タスクの登録状況を確認する。
お仕事の途中ですが、少し一休みして、転職や独立について考えてみませんか🙌?
現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】
レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】
MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】
日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲
最後に
さて、ここまでサイトマップの作成/送信に始まり、その定期実行までご紹介してきましたがいかがでしたか?
SEO対策にはサイトマップが必須となってきますので、これを機にご自身のWebアプリにも導入してみてくださいね。
このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。
最後まで読んで頂きありがとうございました。