最新の国民の休日は内閣府から供給されるCSVを読めばわかることがわかった。これがオープンガバメントだ。 https://t.co/zCgGcMggmg pic.twitter.com/KeZKXwl20p
— ぞさみいちか (@tadsan) 2017年2月21日
いや全く、こんなあっさり変わりそうなURLに全然正規化されてないCSV置いて「オープンデータ」とか「オープンガバメント」という言い訳が成立すると本気で思っているのだろうか。 https://t.co/A1Plswqsfo
— 🐠🏭技術書典2は新刊出すよ (@mishiki) 2017年2月21日
「休日が一覧できるCSV作ったよー」があんなにアホなのは、コードを書かない人が意思決定をするからと推測され、プログラム教育の必要性自体は感じるのだが、子供の方ではなく意思決定する年配の人の方が先に学ばないと、今後30年くらいの期間、ネ申Excel的な問題が続くと思われる。 pic.twitter.com/C6bfzuH95I
— 🐠🏭技術書典2は新刊出すよ (@mishiki) 2017年2月22日
祝日一覧のcsv、たぶん元はこんな感じのExcelだったんだろうけど、一体何を思ってこんなもん作ったのか非常に気になる pic.twitter.com/dT9hLiE0XB
— すとぱんフレンズ@3歳児 (@stpan_lc) 2017年2月22日
内閣府の「国民の祝日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の形式がまともであれば、PowerShellのImport-Csv
コマンドレットを使用して各項目の値を配列として活用できる。
以下、祝日の名称を指定して日付の一覧を取得するスクリプトと、日付を指定して祝日名を取得するスクリプトをそれぞれ書いてみる。ps1ファイルと上のcsvファイルを同じディレクトリに置けば実行できる。
適切なデータ形式を用いることで、このようにデータの応用が容易になるということだと思う。