現代のデータ管理において、異なるソフトウェア間で情報をやり取りする際に欠かせないのがCSV(Comma-separated values)です。CSVは、表形式のデータをシンプルなテキスト形式で保存するためのフォーマットであり、各項目をカンマで区切り、1行を1つのレコードとして扱う仕組みです。その簡潔さと汎用性から、データベースや表計算ソフトなどの幅広いツールで標準的に採用されています。
Key Facts
- 正体: 項目をカンマで区切ったシンプルなプレーンテキスト形式のデータ。
- 主な用途: 異なるシステム間での表形式データの移行や長期保存。
- 標準規格: RFC 4180によって定義されており、MIMEタイプは
text/csv。 - メリット: 人間が直接読み書きでき、実装が容易で、ファイルサイズを圧縮しやすい。
- 注意点: 文字エンコーディング(UTF-8など)の指定方法がフォーマット自体にない。
CSVの歴史と発展
CSVの概念は、パーソナルコンピュータが普及するよりも前から存在していました。1972年にはIBMのFortranコンパイラ(OS/360)が、値の間をカンマで区切る形式の入出力をサポートしていました。その後、1978年のFORTRAN 77でこの形式が定義され、1983年までには「CSV」という略称や用語が一般的に使われるようになりました。
かつてパンチカードにデータを入力していた時代、固定列形式よりもカンマ区切りの方が入力しやすく、位置ずれによるエラーが少なかったことが普及の一因とされています。また、プレーンテキストであるため、CPUのバイトオーダーやワードサイズといったハードウェア間の互換性問題を回避でき、異なるアーキテクチャのマシン間でのデータ交換に最適でした。
長らく「慣習的な定義」で運用されてきたCSVですが、2005年にRFC 4180が策定されたことで、正式な技術標準として定義されました。その後、W3Cによるメタデータ標準の策定や、IETFによるURIフラグメントの適用(RFC 7111)など、Webアプリケーションでの相互運用性を高めるための拡張が進んでいます。
技術的な仕様と構造
CSVは基本的に「1行=1レコード」で構成されます。単純な構造ですが、データ内にカンマや改行が含まれる場合に正しく処理するためのルールがRFC 4180で定められています。
フォーマットの主要ルール
- 行の終端: 原則としてCRLF(キャリッジリターンとラインフィード)で改行します。
- ヘッダー: 1行目に列名(ヘッダー)を置くことができますが、フォーマットとして必須ではありません。
- クォート処理: 項目の中にカンマ、ダブルクォート、または改行が含まれる場合は、その項目全体をダブルクォート(")で囲む必要があります。
- エスケープ: ダブルクォートで囲まれた項目の中でさらにダブルクォートを使いたい場合は、2つのダブルクォート("")を続けて記述します。
このようなルールがあるため、単純に「カンマで分割する」というプログラムを組むと、クォート内のカンマを誤認してデータが崩れることがあります。正確な解析には、これらの仕様に基づいたパーサー(解析プログラム)が必要です。
CSVの基本仕様まとめ
| 項目 | 内容 |
|---|---|
| 拡張子 | .csv |
| メディアタイプ | text/csv |
| 標準規格 | RFC 4180 |
| データ構造 | フィールド区切りリスト(シリアルデータストリーム) |
| 推奨エンコーディング | UTF-8(ただし形式上の強制はない) |
実用的なアプリケーションと活用例
CSVは、互換性のない独自フォーマットを持つソフトウェア同士を繋ぐ「中間フォーマット」として非常に強力です。例えば、データベースから抽出したデータをExcelやGoogleスプレッドシートで分析する場合、多くのシステムがCSVエクスポート/インポート機能を備えています。また、主要なECプラットフォームのデータ出力にも広く利用されています。
データサイエンスの分野では、PythonのPandasなどのライブラリを用いて、解析データを長期保存するためにCSV形式が採用されます。これは、実装が高速であること、人間が直接中身を確認して修正できること、そして圧縮効率が良いことが理由です。
主要ソフトウェアの対応状況と制限
ほとんどの表計算ソフト(Apple Numbers, LibreOffice Calc, Apache OpenOffice Calcなど)がCSVをサポートしています。ただし、Microsoft Excelなどの一部のソフトでは、独自の「方言(ダイアレクト)」を持っており、区切り文字がカンマ以外であったり、UTF-8の出力に制限があったりする場合があります。
また、読み込めるデータ量には上限があります。例えば、ExcelやLibreOfficeは約104万行まで、Googleスプレッドシートはセル数で制限(1,000万セル)が設けられています。
データベース側では、PostgreSQLの COPY コマンドのように、CSVファイルを直接テーブルにロードしたり、クエリ結果をCSVとして保存したりする機能が提供されています。
Frequently Asked Questions
CSVファイルで文字化けが起こるのはなぜですか?
CSVフォーマット自体には、使用している文字エンコーディング(UTF-8やShift-JISなど)を記録する仕組みがないためです。読み込む側が想定しているエンコーディングと、保存時のエンコーディングが一致しない場合に文字化けが発生します。
CSVとTSVの違いは何ですか?
区切り文字が異なります。CSVはカンマ(,)を使用しますが、TSV(Tab-separated values)はタブ文字を使用します。データの中にカンマが多く含まれる場合は、TSVの方が扱いやすいことがあります。
データの中にカンマがある場合はどうすればいいですか?
その項目全体をダブルクォート(")で囲んでください。これにより、パーサーはクォート内のカンマを区切り文字ではなく、データの一部として認識します。
CSVでデータの型(数値か文字列か)を指定できますか?
いいえ、CSVはプレーンテキストであるため、データ型という概念がありません。すべて文字列として保存されるため、読み込む側のアプリケーションで型を解釈する必要があります。これを補うために、Frictionless Dataなどのメタデータ標準が提案されています。
CSVファイルを作成する際の最適なエンコーディングは何ですか?
現代の標準ではUTF-8が最も推奨されます。多言語に対応しており、多くのモダンなシステムでデフォルトとして採用されているためです。
References
- Shafranovich, Y. (October 2005). Common Format and MIME Type for CSV Files. . p. 1. :10.17487/RFC4180. 4180.
- "commaSeparatedText". Apple Developer Documentation: Uniform Type Identifiers. . Archived from the original on 2023-05-22. Retrieved 2023-05-22.
- "Import or export text (.txt or .csv) files". Microsoft Support. Retrieved 2023-08-16.
- "What is a CSV file: A comprehensive guide". flatfile.com. Retrieved 2024-10-28.
- IBM FORTRAN Program Products for OS and the CMS Component of VM/370 General Information (PDF) (first ed.), July 1972, p. 17, GC28-6884-0, archived (PDF) from the original on March 4, 2016, retrieved February 5, 2016,
For users familiar with the predecessor FORTRAN IV G and H processors, these are the major new language capabilities
- "List-Directed I/O", Fortran 77 Language Reference, Oracle, archived from the original on 2021-02-26, retrieved 2012-10-26
- "SuperCalc², spreadsheet package for IBM, CP/M". Retrieved December 11, 2017.
- "Comma-Separated-Value Format File Structure". 1983. Retrieved December 11, 2017.
- "CSV, Comma Separated Values (RFC 4180)". . Retrieved September 22, 2025.
- Common Format and MIME Type for Comma-Separated Values (CSV) Files. . :10.17487/RFC4180. 4180. Retrieved December 22, 2020.