Delete the Timestamps from your Static Blog

Michael Lynch

静的ブログからタイムスタンプを削除する

このブログは、人気の静的サイトジェネレーターであるHugoを使って構築しています。

Hugoは、新しいブログ記事を作成すると、次のようなデフォルトのテンプレートを生成します。

---
title: "My New Post"
date: 2024-11-16T20:33:09-04:00
---

記事のひな形には、タイムスタンプ付きの公開時刻が含まれています。しかし、これは明らかに記事を公開した時刻ではありません。まだ書き始めたばかりだからです。

デフォルトのタイムスタンプには意味がない

読者から見れば、Hugoが記事に設定するタイムスタンプには意味がありません。

読者が知りたいのは記事が公開されたことです。作者が最初のアイデアを書き始めた時刻ではありません。

Hugoだけではありません。もう一つの人気の静的サイトジェネレーターであるJekyllも、同じことをします。

これまでに書いた記事では、編集作業のどこかの段階で、公開する予定の日付にタイムスタンプを更新し、次のように時刻部分をゼロにしなければなりませんでした。2024-11-16T00:00:00-04:00

面倒な作業ですが、毎回たった5秒しかかからないので、問題に感じたこともすぐに忘れてしまいます。

タイムスタンプをなくそう

この10年で、おそらく100回目くらいになるブログ記事のタイムスタンプを手作業で調整したとき、ようやく私はこう尋ねました。「これ、毎回やらなきゃいけないの?」

幸い、答えは「いいえ」です。

少なくともHugoでは、タイムスタンプを簡単になくせます。しかも、すべてが本来あるべきように動きます。

ステップ1:archetypesを更新する

まず行ったのは、ブログのarchetypesファイルを更新することでした。

Hugoでは、新しい記事を生成すると、その記事の種類に対応するarchetypeファイルのひな形を使って記事を作成します。

現在のデフォルトのarchetypeは次のようになっています。

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ now.Format "2006-01-02" }}
---

新しい記事を生成すると、ファイルにはタイムスタンプの付いていない単純な日付だけが入ります。

$ hugo new content/posts/just-a-test/index.md && \
  cat content/posts/just-a-test/index.md
Content "/home/mike/mtlynch.io/content/posts/just-a-test/index.md" created
---
title: "Just a Test"
date: 2024-11-16
---

完璧です!

ステップ2:過去の記事のタイムスタンプをすべて削除する

さらに、LLMが生成したちょっと変なワンライナーを使って、過去の記事からもタイムスタンプを遡ってすべて削除しました。

# Strip timestamps from the date and lastmod fields of every post.
find . \
  -name "*.md" \
  -exec \
    sed \
      -i \
      -e 's/\(date: [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)T[0-9:.-]\+/\1/' \
      -e 's/\(lastmod: [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)T[0-9:.-]\+/\1/' \
  {} +

このコマンドで、過去の記事をすべて更新し、タイムスタンプを削除して単純な日付に変換しました。

まとめ

これで私のブログからタイムスタンプがなくなり、その分だけ気分もよくなりました。タイムスタンプにはもともと何の意味もなく、邪魔になっていただけです。

これからは記事を書くたびに日付欄をいじる時間を2秒節約できます。その2秒で、いったいどれだけのことを成し遂げられるのかと想像するだけで、嬉しくてたまりません。

原文は Michael Lynch により に公開されました。

この記事は「gpt-5.6-terra」を使用して翻訳されました。