【Rails】サイトマップを作ってSEO対策をしましょう!sitemap_generatorが便利です!

Webアプリケーションを開発する上でSEO対策は避けては通れない道だと思います。

そんなSEO対策として真っ先に対応が必要となるのがサイトマップになります。

WordPressではプラグインを使用してサイトマップの作成や送信が可能ですが、Railsアプリケーションでも同じくらい簡単に対応することが可能です。

この記事では、サイトマップの導入/作成およびその送信の定期実行の仕組みについてもご紹介させていただきます。


フリーランス案件を探すならこのエージェント!

運営会社 レバテック株式会社 株式会社Branding Engineer 株式会社Hajimari
対応エリア 東京・神奈川・埼玉・千葉
大阪・兵庫・京都・愛知・福岡
東京・神奈川・埼玉・千葉
大阪・兵庫・京都・奈良・和歌山・滋賀
東京・神奈川・埼玉・千葉
茨城・大阪・兵庫・福岡
案件数 約28,000件 約3,300件 約4,200件
平均単価 68.2万円 72.2万円
最高月収 145万円 200万円 176万円
支払いサイト 15日(月末締め翌月15日支払い) 20日
手数料(中間マージン) 非公開 非公開
※実質20%
非公開
特徴高単価な案件が多い
福利厚生サービスが受けられる
・首都圏の案件が中心
給与保証制度で安定した収入を得られる
・税務処理のサポートあり
・マージン率は実質20%
週2/週3の案件が多い
在宅/リモート案件が多い
・スタートアップ企業やベンチャー企業の案件が多い
紹介企業例 ・株式会社Gunosy
・株式会社バンダイナムコホールディングス
・株式会社ユーザベース
・Sansan株式会社
・株式会社一休
・株式会社FiNC Technologies など
・クックパッド株式会社
・株式会社カオナビ
・株式会社Kaizen Platform など
説明記事
公式サイト


転職を考えているならこのエージェント!

運営会社 レバテック株式会社 株式会社Branding Engineer 株式会社リブセンス
対応エリア 東京・神奈川・埼玉・千葉
大阪・兵庫・京都・愛知・福岡
東京・神奈川・埼玉・千葉
大阪・兵庫・京都・奈良・和歌山・滋賀
東京・神奈川・埼玉・千葉
茨城・大阪・兵庫・福岡
案件数 約13,000件 約800件
※非公開求人が多い

※ドラフト制のため、対象外
年齢層 20代:◎
30代:〇
40代:〇
20代:〇
30代:〇
40代:△
20代:〇
30代:〇
40代:〇
特徴エンジニア・デザイナーを専門としている
・カウンセリングに時間をかける
年収アップ率60%の実績
IT/Web/ゲーム業界専門の転職エージェント
・業界経験者がキャリアコンサルタントを務める
・丁寧なカウンセリングで入社後の離職率1%以下を実現
ドラフト制による採用を叶える特殊なサービス
スキル・経験重視で評価してもらえる
・他エンジニアの入札結果を見ることで
自分の市場価値が分かる
紹介企業例 ・サイボウズ株式会社
・株式会社サイバーエージェント
・Chatwork株式会社 など
・DMM.com
・Money Forward
・SmartHR など
・メルカリ
・ZOZOテクノロジーズ
・freee など
説明記事
公式サイト



そもそも、サイトマップとは?

サイトマップとは、その名の通り、サイト全体のページ構成を地図のように分かりやすく整理しているページのことを指します。

サイトマップによって、ユーザーはもちろん、GoogleやYahoo等の検索エンジンに対してもサイトの内容を分かりやすく伝えることが可能となります。

そんなサイトマップですが、その形式にはhtmlxmlの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
  • こちらは直訳すると”優先度” になりますが、他のURLに比べて当該URLのページをどの程度優先するかと示しており、0(低)〜1.0(高)の間で設定されます。

  • changefreq
  • こちらは”change frequency” の略で、当該URLのページがどの程度の頻度で更新されるかを示しており、’always(常に)’, ‘hourly(1時間毎)’, ‘daily(1時間毎)’, ‘weekly(1週間毎)’, ‘monthly(1ヶ月毎)’, ‘yearly(1年毎)’ or ‘never(更新なし)’ の中から選択して記載します。

  • lastmod
  • こちらは”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アプリにも導入してみてくださいね。

このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。

最後まで読んで頂きありがとうございました。