祝日オープンデータを巡って

内閣府の「国民の祝日」CSVを巡る話題はTwitterのモーメント内閣府の「国民の祝日」のCSVがひどい。によくまとまっている。以下ではデータの推移をまとめておく。

内閣府の「国民の祝日」についてというページから http://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv というCSVファイルがリンクされていた。2017-02-21 にダウンロードしたものをdata/syukujitsu-170221.csvに置いておく(文字コードSJIS,行末CRLF)。念のため,以下にも貼り付けておく:

平成28年(2016年),,平成29年(2017年),,平成30年(2018年),
名称,月日,名称,月日,名称,月日
元日,2016/1/1,元日,2017/1/1,元日,2018/1/1
成人の日,2016/1/11,成人の日,2017/1/9,成人の日,2018/1/8
建国記念の日,2016/2/11,建国記念の日,2017/2/11,建国記念の日,2018/2/11
春分の日,2016/3/20,春分の日,2017/3/20,春分の日,2018/3/21
昭和の日,2016/4/29,昭和の日,2017/4/29,昭和の日,2018/4/29
憲法記念日,2016/5/3,憲法記念日,2017/5/3,憲法記念日,2018/5/3
みどりの日,2016/5/4,みどりの日,2017/5/4,みどりの日,2018/5/4
こどもの日,2016/5/5,こどもの日,2017/5/5,こどもの日,2018/5/5
海の日,2016/7/18,海の日,2017/7/17,海の日,2018/7/16
山の日,2016/8/11,山の日,2017/8/11,山の日,2018/8/11
敬老の日,2016/9/19,敬老の日,2017/9/18,敬老の日,2018/9/17
秋分の日,2016/9/22,秋分の日,2017/9/23,秋分の日,2018/9/23
体育の日,2016/10/10,体育の日,2017/10/9,体育の日,2018/10/8
文化の日,2016/11/3,文化の日,2017/11/3,文化の日,2018/11/3
勤労感謝の日,2016/11/23,勤労感謝の日,2017/11/23,勤労感謝の日,2018/11/23
天皇誕生日,2016/12/23,天皇誕生日,2017/12/23,天皇誕生日,2018/12/23
,,,,,
月日は表示するアプリケーションによって形式が異なる場合があります。,,,,,

おそらくデータの意味がわからない人が作ったのであろう。Twitterでたくさんの人がこれをあげつらった。国民の祝日のCSVをいい感じに変換するRubyスクリプトも作られた。

驚くべきことに,内閣府のサイトで少なくとも2017-03-02には改善されたCSVファイルで置き換えられていた。2017-03-02 にダウンロードしたものをdata/syukujitsu-170302.csvに置いておく(文字コードSJIS,行末CRLF,最後の行に行末がない)。念のため,以下にも貼り付けておく:

国民の祝日月日,国民の祝日名称
2016-01-01,元日
2016-01-11,成人の日
2016-02-11,建国記念の日
2016-03-20,春分の日
2016-04-29,昭和の日
2016-05-03,憲法記念日
2016-05-04,みどりの日
2016-05-05,こどもの日
2016-07-18,海の日
2016-08-11,山の日
2016-09-19,敬老の日
2016-09-22,秋分の日
2016-10-10,体育の日
2016-11-03,文化の日
2016-11-23,勤労感謝の日
2016-12-23,天皇誕生日
2017-01-01,元日
2017-01-09,成人の日
2017-02-11,建国記念の日
2017-03-20,春分の日
2017-04-29,昭和の日
2017-05-03,憲法記念日
2017-05-04,みどりの日
2017-05-05,こどもの日
2017-07-17,海の日
2017-08-11,山の日
2017-09-18,敬老の日
2017-09-23,秋分の日
2017-10-09,体育の日
2017-11-03,文化の日
2017-11-23,勤労感謝の日
2017-12-23,天皇誕生日
2018-01-01,元日
2018-01-08,成人の日
2018-02-11,建国記念の日
2018-03-21,春分の日
2018-04-29,昭和の日
2018-05-03,憲法記念日
2018-05-04,みどりの日
2018-05-05,こどもの日
2018-07-16,海の日
2018-08-11,山の日
2018-09-17,敬老の日
2018-09-23,秋分の日
2018-10-08,体育の日
2018-11-03,文化の日
2018-11-23,勤労感謝の日
2018-12-23,天皇誕生日

その後,2019-04-14 にダウンロードしたものをdata/syukujitsu-190414.csvに置いておく(文字コードSJIS,行末CRLF,最後の行にも行末あり)。念のため,以下にも貼り付けておく:

国民の祝日・休日月日,国民の祝日・休日名称
2019/1/1,元日
2019/1/14,成人の日
2019/2/11,建国記念の日
2019/3/21,春分の日
2019/4/29,昭和の日
2019/4/30,休日
2019/5/1,休日(祝日扱い)
2019/5/2,休日
2019/5/3,憲法記念日
2019/5/4,みどりの日
2019/5/5,こどもの日
2019/5/6,休日
2019/7/15,海の日
2019/8/11,山の日
2019/8/12,休日
2019/9/16,敬老の日
2019/9/23,秋分の日
2019/10/14,体育の日(スポーツの日)
2019/10/22,休日(祝日扱い)
2019/11/3,文化の日
2019/11/4,休日
2019/11/23,勤労感謝の日
2020/1/1,元日
2020/1/13,成人の日
2020/2/11,建国記念の日
2020/2/23,天皇誕生日
2020/2/24,休日
2020/3/20,春分の日
2020/4/29,昭和の日
2020/5/3,憲法記念日
2020/5/4,みどりの日
2020/5/5,こどもの日
2020/5/6,休日
2020/7/23,海の日
2020/7/24,スポーツの日
2020/8/10,山の日
2020/9/21,敬老の日
2020/9/22,秋分の日
2020/11/3,文化の日
2020/11/23,勤労感謝の日

ご覧のように,過去の分が消えている。また,「祝日」が「祝日・休日」になって,祝日でない休日がデータに加わった。URLは(https化されたことを除き)一貫して変わってない(httpからhttpsにリダイレクトされる。ディレクトリ名がshukujitsu,ファイル名がsyukujitsu.csvなのも当初のままである)。

過去の分も含めた世界中の祝日をYAMLで記述したものとしてGitHubにcommenthol/date-holidaysというものがある。日本の分はdata/countries/JP.yamlである。詳しい解説はdate-holidays という祝日ライブラリが良い意味で狂っていた参照。

2020年11月28日時点のsyukujitsu.csvは以下のように1955年以来の祝日が入っている:

国民の祝日・休日月日,国民の祝日・休日名称
1955/1/1,元日
1955/1/15,成人の日
1955/3/21,春分の日
1955/4/29,天皇誕生日
1955/5/3,憲法記念日
...(中略)...
2021/9/20,敬老の日
2021/9/23,秋分の日
2021/11/3,文化の日
2021/11/23,勤労感謝の日