2017年02月23日 (木)「内閣府の「国民の祝日」のCSVがひどい。」■別に CSVで全然問題ないんよ。むしろ間に合ってるならよりプリミティブな方が無駄がないし扱いやすい>20170206。でもその CSVが……。謎の1行目。ヘッダとも言えない2行目。3行目以降は1レコードに3年分のデータが並んでる。日付がプライマリキーだって誰か教えてあげて。■URLすごいな。shuと syuの混用。バージョニングする気のない名前。数年後に差し替えられるのならまだましで、いかにもやっつけ仕事、これっきりで終わりそう。■都道府県別の郵便番号データっていうのが日本郵便から CSV形式でダウンロードできるんだよね。それもまあ、人間が読んでひと加工する必要がありそうなものだけど(※人間が読んでわかるコメントがデータの中に入ってるのは親切なのだと思います……)、住所っていうのが歴史を引きずった一筋縄ではいかないもののせいもあるかもしれない。そういうデータが欲しいと思ったとき当たり前に手に入るって結構いい。たとえひと手間必要でも、ひと手間で済むのだから。これが、住所から郵便番号を引いて付加するマクロから抜き出したものだったりする>「行単位で加工するマクロのための定型(20161216p01)」。■ブコメですごく有用な URLが紹介されていた>「整然データとは何か|Colorless Green Ideas」。■あくまで祝日を中心に据えたいのなら、祝日ごと、名称ごとに列を割り当てるべきだよね。くれぐれも列の再利用はなしで。でもそうするとデータが下に伸びていくというのが固定観念なんだろうか。「midnight-railgun 去年の分のcsv持ってたから見てみたけど普通に2016年から始まってたからどんどん列が増えてく形式みたいね。」右に伸びていくぐらいはちょっと転置してやれば下に伸びていくのと同じなわけで。その伝でいくとしても祝日名が何度も現れることの言い訳はできないけどなー。<天皇誕生日がみどりの日が昭和の日がと言い出す人のために張った予防線が「名称ごと(の列)」「列の再利用はなし」です。名前が違えば別の祝日なので潔くスキーマを拡張してください。■振休を気にする人がいるけど、それは国民の祝日を定めたあとで曜日との兼ね合いで起こる派生現象であって、上流のデータに混ぜるべきものではないって解釈でいいんでないかな。好意的に受けとめるなら。■振休は(たぶん)簡単でも「国民の休日 - Wikipedia」は無理だわ。長々と書き連ねられたアドホックな決まり方を読めば、派生現象だとか、国民の祝日と国民の休日と振替え休日は別のものだとか言ってられない。そんな区別はどうでもいいからまとめてデータをよこせと言いたくなる。<でもそのばあい、国民の休日と振替え休日の IDに迷うから(※国民の休日1とか2とかださいしただの方便で嘘だし、シリアルナンバーを本物の IDとして付与するのも形式的で無意味だし)、祝日に個別の列を割り当てるのは諦めて、やっぱり日付を唯一のプライマリキーにしてだね、祝日の連続性は名称からの推測か別データでいいじゃない。■■■@2017-04-22 3月の初めにはそのままの名前でファイルが差し替えられてたみたい。「国民の祝日月日,国民の祝日名称[改行]2016-01-01,元日[改行]...」みたいな、期待通りの中身。たいへんよいですね。最後の行に改行がないのがいいのか悪いのかは知らない。あと月日と年月日は区別して使ってるんだけどなあ。■@2017-08-17 CSV的には「ファイル末尾のレコードの終端には、改行はあってもなくてもよい。」ということに一応なってるらしい。でもテキストファイルとしては……「なぜ gcc はファイルの最後に改行がないと警告を出すのか? - Schi Heil と叫ぶために」■@2017-11-29 やっぱり異端だってことだよ。「12.Enhanced the CSV virtual table so that it accepts the last row of input if the final new-line character is missing.」