今回は、GitHub Pages上でブログが運用できる静的サイトジェネレータJekyllについての話。このブログもJekyllのType-on-Strapテーマを利用して運用しております。
今回の話題は

  • Jekyllに投稿予約機能がついてたという話と
  • タイムゾーンを設定しないと記事の反映に時差が出るよという話

の2点です。説明の都合上、2つの話題を1回分に書いておきます。

Jekyllには投稿予約機能がある

Jekyllでは、記事を書いたmarkdownファイルのファイル名の冒頭に日付を記述することで、各記事の投稿日が設定されます。
スクリーンショット 2022-02-21 2.47.55
基本的には記事を書いた当日の日付を「yyyy-mm-dd」形式で書きます。

ところが先日、2月19日に「Cities Box.cpp開発日記 #15」という記事を投稿するときに、間違えて明日(2月20日)の日付にしてしまいました。
すると、なかなか記事が反映されません。GitHub ActionsでのBuildもDeployも成功しているのに、記事が一覧ページに現れません。
おかしいなと思ったところで投稿日時が明日になっていたことに気づき、日付をその日の日付に修正すると記事が出現しました。

つまり、Jekyllでは未来の日付を投稿日時に設定すると、その日付になるまで記事が反映されない、すなわち投稿予約扱いになるということです。
これは便利。だけども、このブログではリアルタイム性が重要な記事を書くことがあまりないので、恩恵は受けられなさそう。

Jekyllにタイムゾーンを設定

便利な投稿予約機能ですが、どうやら日付がUTC(世界標準時)になっているようで、日本時間で深夜から朝にかけて(午前0時〜9時)その日の日付で投稿すると、記事が反映されません。投稿予約扱いになってしまいます。
それもそのはず、UTCを基準として動いているシステムからすれば、「日本時間で今日の日付だろうとそんなことは知らん、ウチの時計はまだ日を跨いでないんだから明日の日付だろう」という扱いになってしまいます。
朝9時まで待っても良いのですが、Jekyllのconfigにタイムゾーンを設定すれば簡単に解決できるようなので設定しておきました。

方法としては、_config.ymlにタイムゾーン設定を追記してGitHubにcommit & pushすればOK。日本時間に設定するならtimezone: Asia/Tokyoとしておきます。

# time zone
timezone: Asia/Tokyo

追記場所はどこでもOK。とりあえず_config.ymlの末尾に追記しておきました。

これで時間差による問題は解決。