Table of Contents
今回のスコープ
- GitHub Pages作成環境の構築のための静的サイトジェネレーター Jekyllのインストール
- 中華フォント現象の解消方法
- sitemapの
<lastmod>
tagの設定
GitHub Pagesの個人ブログの制作環境としてJekyllを用いてます. 今回は, localにjekyllをインストール & いくつかの設定ポイントの紹介をします. localにJekyllをインストールする以外に dockerで対応する方法もありますが, この説明は後日とします.
Requirements for Jekyll
- Ruby version 2.4.0 or higher
- RubyGems
- GCC and Make
- GitHub Pagesの構成はすでにレポジトリーにあるとします(ない人はテンプレートのrepositoryをcloneしてください)
Jekyllのインストール
まず必要なパッケージをインストールします
1
2
% sudo apt update && sudo apt upgrade -y
% sudo apt install ruby ruby-dev make gcc gem
Version確認をします
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
% gem -v
3.1.2doctoc\: false
% gcc -v
(略)
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
% make -v
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
次にPATHを通します。
1
2
3
echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.zshrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.zshrc
Jekyllとbundler gemsをインストールします。
1
% gem install jekyll bundler
GitHub Pages作成環境の構築
local serverでブログが表示できたことを確認したら、インストール完了とする。
1
2
3
4
5
6
7
8
9
10
11
12
% git clone https://github.com/RyoNakagami/RyoNakagami.github.io
% bundle install #Gemfileからdependenciesをinstall
% bundle exec jekyll server #Test
Configuration file: /home/dst/RyoNakagami.github.io/_config.yml
Source: /home/dst/RyoNakagami.github.io
Destination: /home/dst/RyoNakagami.github.io/_site
Incremental build: disabled. Enable with --incremental
Generating...
done in 0.502 seconds.
Auto-regeneration: enabled for '/home/dst/RyoNakagami.github.io'
Server address: http://127.0.0.1:4000/
Server running... press ctrl-c to stop.
Tip 1: Github-Pagesのフォントの変更
解決したい症状
- Defaultの設定のままだと、日本語フォントが違和感のある形で出力される
症状の発生原因としては以下が考えられます:
- 中華フォント現象は 中国語を日本語よりも優先指定している場合 に起こります(例:糸偏の漢字を出力する時など)
- cssのfont-familyに日本語フォントが設定されているか?そこでの優先順番はどのようになっているかを確認する
対策方針
css/ryo-blog.css
を開きますbody
のfont-familyを確認し、自分の好みのフォントと順番に設定する- 保存 & git push
実行例として, css設定ファイルを開きfont-family
の設定を確認したところ、以下:
1
2
3
4
body {
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Arial", "PingFang SC", "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "Microsoft JhengHei", "Source Han Sans SC", "Noto Sans CJK SC", "Source Han Sans CN", "Noto Sans SC", "Source Han Sans TC", "Noto Sans CJK TC", "WenQuanYi Micro Hei", SimSun, sans-serif;
...
}
"PingFang SC", "Hiragino Sans GB"
といった中華フォントが上位に設定されている一方、日本語フォントが設定されていないことがわかります.
ですので、個々の設定で日本語フォントを上位に置く形で修正します.
1
2
3
4
5
6
body {
/*font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Arial", "PingFang SC", "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "Microsoft JhengHei", "Source Han Sans SC", "Noto Sans CJK SC", "Source Han Sans CN", "Noto Sans SC", "Source Han Sans TC", "Noto Sans CJK TC", "WenQuanYi Micro Hei", SimSun, sans-serif;
*/
font-family: -apple-system, 'Helvetica Neue', 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', Meiryo, メイリオ, Osaka, 'MS PGothic', arial, helvetica, sans-serif;
...
}
Tip 2: sitemap.xml
の<lastmod>
tagの設定
Def: sitemap
sitemapとは, ウェブサイト上のページやビデオやファイルに関する情報(created, modified)やそれぞれの関係性を記載したファイルのこと. Googleを始めとするSearch engineはsitemapを参照してcrawlを実施 & ウェブサイトの情報を集めてsearch engine検索結果に表示できるようにindexしています.
sitemapの形式例としては以下となります:
1
2
3
4
5
6
7
8
9
10
11
12
<urlset xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>
https://ryonakagami.github.io/2020/10/01/terminology-FTE/
</loc>
<lastmod>2023-10-08T00:00:00+00:00</lastmod>
</url>
...
<url>
<loc>https://ryonakagami.github.doctoc\: falseio/page25/</loc>
</url>
</urlset>
sitemapは本当に必要か?
sitemapが設定されていなくても, ウェブサイトの規模が小さい場合はGooglebotさんは上手い具合にページを見つけてくれます. Googleがsitemapが必要ないかもしれない条件を以下のように示しています:
- Your site is “small”: 目安としてはページが500以内
- Your site is comprehensively linked internally: Home pageから適切にたどることができる状態になっている
- You don’t have many media files (video, image) or news pages
どのようなとき必要なのか?
基本的にはCrawlerに「いつ, なにを優先的にクロールして欲しい」かというシグナルを送りたいときに設定します. シグナルを送ったほうが良い状況例として,
- Your site is large: 大きいとGooglebotはページを見つける(discover)することができない可能性がある
- Your site is new and has few external links to it: ネットの海の中で孤島となっているサイトはクローラーさんには見つけづらいため
- Your site has a lot of rich media content (video, images)
- Your site changes quickly: 頻繁に更新する場合, クローラーによる探索が間に合わないため
Jeklyllでsitemap.xml
を作成する方法
基本的にはsitemapはマニュアルで作成するものではなく, プラグインなどを用いて自動的に作成します. このブログでは, jekyll/jekyll-sitemapを用いています.
設定方法としては,
Gemfile
にてgem 'jekyll-sitemap'
を書き加えるbundle
するconfig.yml
に以下のようにpluginsリストにjekull-sitemap
書き加える
1
plugins: [jekyll-paginate, jekyll-sitemap, jekyll-archives]
すると自動的にURL locationなどを含んだsitemapを作成してくれます.
追加で設定すべき項目: <lastmod>
tag
記事を公開後編集し直したりするときにもう一度crawlerに情報を読み込んでもらいたいときがあります.
このとき, この情報をcrawlerに伝えるためには<lastmod>
tagを用います.
Defaultではpost.date
情報を参照し, creation dateをvalueとして格納しますが, Front Matterに
last_modified_at:
をdateで指定するとその日付を<lastmod>
tagとして格納してくれます.
Front Matterとはheaderにある
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
layout: post
title: "静的サイトジェネレーター Jekyllのインストール"
subtitle: "GitHub Pages作成環境の構築 1/N"
author: "Ryo"
header-style: text
header-mask: 0.0
catelog: true
mathjax: true
last_modified_at: 2020-12-27
tags:
- GitHub Pages
---
のことです.
REMARKS
- Google cralwerはsitemapにおける
<priority>
and<changefreq>
valuesを無視します <lastmod>
valueは一貫性がある(前回の更新日よりも後に更新されているなど)場合のみに参照されるとのこと
References
(注意:GitHub Accountが必要となります)