国民の祝日をWEBシステムで扱う

珍しく仕事の話。

本業ではないのですが、たまに何かのWEBシステムの開発を請け負うことがあります。

いま開発中のシステム、休日を考慮する処理があります。
そこで国民の祝日への対応ですが、規則があるので、プログラム的に処理したくなりそうですが(春秋分も略算式があります。一応天文やってるのでその辺は)、昨年と今年の事例を見てもわかるように、単純にデータとして持っておいて、時々メンテナンスしてやるのが現実的です。

政府が国民の祝日のCSVデータを公開してくれていますので、まずこれを利用する方向でいくのが最もシンプルでしょうか。

最初、Google Calendarから引っ張ってくることを考え、すでにそれを実行している人が公開しているデータを利用してみたりしたのですが、やっぱり「一次ソース」を確認するのは大事。

このCSV、2017年とかそれくらいの時には、フォーマットがプログラム向きでなかったり、URLもずっと固定してくれているのか不安という声があったようです。

URLについては、そういう不安の声のブログに記載されていたURLと現在のURLは「http://」が「https://」に変更になった以外は同じで、フォーマットも改善されているようです。

ともかく、批判が強かったからかもしれませんが、柔軟に改善してくれているのは評価できます。

「いまどきCSVかよ」という人も見たのですが、こんな構造の単純なデータ、CSVで充分。JSONだと取り込みが楽でさらによかったですが。逆にXMLとかWebAPIで提供とかだと「この糞ITオタクが!」と呪ったと思う。あとは文字コードか(現在はSJIS)。ただまあExcelで業務やってるOA従事者の方も多いので、プロのソフトエンジニアなら、この程度のコード変換ぐらいやりましょう。文句言うなら、日本の脱Excel化を完了してから。

また、現在公開されているCSVは昭和30年(1955年)以降と、過去のデータが追加されています。未来は翌年まで。「もっと先まで出せるだろう」という人もいるようですが、法改正以前に、繰り返しになりますが、昨年と今年のように国民の祝日自体がそれなりに変更されるので、あんまり未来までデータを持っても仕方がない。不満な人もいるかもしれませんが、コンピュータシステムも人の営みの中で人のために動くものなので、人の営みを無視しては成り立たないと思います。不満なら世の中を変えましょう。もっとも、コンピュータを人より優先する社会など私はお断りですがね。

どのタイミングでシステムに反映・更新するかですが、何もなければ年1回程度で充分ではないかと思います。春分の日秋分の日は前年の2月の官報で出されます。今年の暦要項の発表は2月3日の官報でした。現時点のCSVの更新日は2020年2月5日。その後ぐらいで取り込むのがいいでしょうか。

【追記】「あまり未来まで持っても」とは思いましたが、とはいえ、祝日が確定するのは前年2月、というのはさすがになんとかならんものでしょうか。次年度の予定を立てるのに不都合が……(何年先までならいいのかという問題はありますが)。なお、春分日・秋分日については、「あくまで参考」という但し書き付きで、国立天文台のFAQに2030年までの日付があります。