CSV

Comma-Separated Values の略で、カンマ区切りでデータを表現するテキスト形式。表形式データの交換に広く使われる。

CSV (Comma-Separated Values) は、各フィールドをカンマで区切り、各レコードを改行で区切るシンプルなテキスト形式です。表計算ソフトやデータベースとのデータ交換に広く使われており、そのシンプルさゆえに数十年にわたって標準的なデータ交換フォーマットの地位を維持しています。

CSV の仕様は RFC 4180 で定義されていますが、実際にはソフトウェアごとに方言があります。フィールド内にカンマや改行を含む場合はダブルクォートで囲む必要があり、ダブルクォート自体はエスケープ (二重化) が必要です。区切り文字がカンマではなくタブの場合は TSV (Tab-Separated Values) と呼ばれ、セミコロン区切りの CSV もヨーロッパ圏では一般的です。データ分析入門の書籍で CSV の扱い方を学べます。

日本語環境では文字コードの問題が頻発します。Excel で CSV を開く際、UTF-8 の BOM なしファイルは文字化けすることがあり、Shift_JIS や BOM 付き UTF-8 での出力が求められる場面があります。BOM (Byte Order Mark) は U+FEFF の 3 バイト (EF BB BF) で、ファイル先頭に付加することで Excel が UTF-8 として正しく認識します。Python の csv モジュールや JavaScript の各種ライブラリでは、エンコーディングと BOM の制御が可能です。

CSV と JSON の使い分けは実務でよく議論されるテーマです。CSV は表形式データに適しており、ファイルサイズが小さく、Excel で直接開ける利点があります。一方、JSON はネスト構造や型情報を表現でき、API のレスポンス形式として主流です。大量の表形式データを扱う場合は CSV、構造化されたデータ交換には JSON という使い分けが一般的です。

CSV のパース処理では、エッジケースへの対応が重要です。フィールド内の改行、エスケープされたダブルクォート、空フィールドと null の区別、末尾のカンマの扱いなど、単純な split(',') では正しく処理できないケースが多数あります。信頼性の高い CSV パーサーライブラリ (Python の csv モジュール、JavaScript の Papa Parse など) を使用することが推奨されます。

文字数カウントの観点では、CSV のカンマや引用符などの区切り文字がデータサイズに影響します。フィールド数が多いほどカンマの数が増え、引用符で囲む必要があるフィールドが多いほどオーバーヘッドが大きくなります。大量データの場合、JSON と比較して CSV のほうがオーバーヘッドが少ない傾向がありますが、フィールド内にカンマや改行が多い場合はその限りではありません。Excel データ活用の書籍も参考になります。