« ^ »

記事IDの生成

所要時間: 約 2分

このブログはHugoという静的サイトジェネレーターを使用して記述している。 Hugoでは特定のディレクトリにファイルを自分で作成することで記事を追加す る。その際のファイル名がURLのパスに反映される。ファイルの生成は自動化 しているが、生成時のファイルの命名ルールをどのようにしたほうがよいかを 考えた。ファイル名によってファイルの追加日がだいたいわかり、一覧にした ときに並び換えできるようにしたかった。今回、このファイル名はIDのような 数字をすることにした。そして、投稿のIDをどのように採番しようかと考える ことにした。1からの連番では桁が増えた時にアルファベット順での並び換え ができなくなってしまう。桁を限定して0をパディングすることもできるが、 その場合は過去に何番まで発行されたのかをどこかに保持しておく必要がある。 それは▽したくない。またファイルを削除した場合に欠番が発生するが、それ も気になった。結局、IDはただのタイムスタンプで良いという結論に至った。 ファイル名の生成は次の関数で行っている。

(defun symdon-ga-create-new-file-path ()
  (concat
   (directory-file-name symdon-ga-post-directory)
   "/"
   (format "%s.org"
	   (truncate (float-time)))))
ファイル名の生成関数

この関数のなかでfloat-time関数で返される浮動小数点数をtruncate関数で切り捨てている。

(truncate (float-time))

次のような値が返される。

1610976490