内閣府の「国民の祝日CSV」をプログラミングの練習に使ってみる ―PowerShellで祝日の日付と名称を相互に検索する―

内閣府の「国民の祝日CSV」が批判されている。私もほとんど素人なのでデータ形式について大した見識を持っている訳ではないけれど、この内閣府の形式だと、ほとんどExcelで開いて目視で確認する用途にしかまともに使えず、データの使い勝手が非常に悪いということだと思う。

ただ、初心者がちょっとしたプログラミングの練習をするにはこの国民の祝日CSVは面白い題材だった。以下PowerShellで祝日の日付と名称を相互に検索するスクリプトを書いてみる。

CSVを整形する

国民の祝日について - 内閣府

内閣府のサイトから国民の祝日CSVをダウンロードし、テキストエディタで開いて適切な形式に整形する。

Date,Name
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,天皇誕生日

このデータをHolidays.csvの名前で保存する。

PowerShellで祝日の日付と名称を相互に検索する

CSVの形式がまともであれば、PowerShellImport-Csvコマンドレットを使用して各項目の値を配列として活用できる。

以下、祝日の名称を指定して日付の一覧を取得するスクリプトと、日付を指定して祝日名を取得するスクリプトをそれぞれ書いてみる。ps1ファイルと上のcsvファイルを同じディレクトリに置けば実行できる。

f:id:fuyu77:20170224211027p:plain

f:id:fuyu77:20170224211042p:plain

適切なデータ形式を用いることで、このようにデータの応用が容易になるということだと思う。