味わう仕様書
CSVという「仕様」を、味わう。
カンマと改行だけでは決まらない。 RFC 4180、CRLF、引用符、header、text/csv、Excel。 あまりに身近で、じつは一枚岩ではないCSVを、仕様と実装の間から読んでいきます。
味わう仕様書 CSV
カンマで区切れば、CSV?
CSVは、見ればだいたい分かるほど単純です。 けれど改行を含む値はどうするのか。引用符そのものはどう書くのか。 末尾の改行は必要なのか。1行目はheaderなのか。 RFC 4180を開くと、日常的に使っているCSVの「暗黙の約束」が少しずつ見えてきます。
01 / RECORDS
改行は、ただの改行ではない
RFC 4180が示すCRLF、レコード境界、最終レコードの扱いから、CSVの行構造を見ます。
02 / QUOTES
カンマも改行も、値の中に入る
フィールドを二重引用符で囲む意味と、カンマや改行をデータとして保持する仕組みを追います。
03 / ESCAPE
" は "" になる
引用符を含むフィールドをどう表現するか。短い規則が、パーサの挙動を大きく左右します。
04 / DIALECTS
同じCSVなのに、同じではない
RFC 4180、Excel、各種ライブラリ。現実のCSVが複数の慣行を抱えている理由を見ていきます。
この本で見るもの
RFC 4180
text/csv
record / field
CRLF
header parameter
quoted field
double-quote escaping
ABNF
Excel CSV
CSV dialects
主なテーマ
CSVはいつからCSVなのか
RFC 4180は何を決めたのか
カンマ、改行、引用符
headerとレコードの境界
text/csvというMIMEタイプ
ExcelとCSVの距離
「CSV方言」が生まれるところ
単純な形式ほど、境界がおもしろい。
CSVを書くコードなら、数行で済みます。 でも「何をCSVと呼んでいるのか」を確かめようとすると、 RFC、OSの改行、表計算ソフト、文字コード、ライブラリの実装へ話が広がっていきます。 この本では、その境界を仕様書と実物を往復しながら確かめます。