歴史レッスン:.csvファイルとは? Excelで開くとデータが変わってしまう理由
カンマ区切り値――1970年代のFORTRANと初期の表計算ソフトから生まれ、2005年のRFC 4180まで文書化されず、表計算ソフトが文字の意味を推測するたびに今も先頭のゼロや遺伝子名を失い続けるプレーンテキストの表。

TL;DR
.csvファイルにはカンマ区切り値(comma-separated values)が入っています。表をプレーンテキストで書いたもので、1行に1レコード、フィールドの間にカンマを置き、カンマ・二重引用符・改行を含むフィールドは二重引用符で囲みます。この考え方はパソコンより古く、1972年にはIBMのFORTRANコンパイラーが端末やパンチカードからカンマ区切りの入力を読み込んでいました。1983年には表計算ソフトがすでに.CSVという拡張子でファイルを保存していました。それでも規則が正式に書き留められたのは、2005年10月のRFC 4180が初めてで、このときMIMEタイプtext/csvも登録されました。CSVには列の型も数式も文字コードの表示もないため、開くプログラムはすべて推測するしかありません。先頭のゼロが消え、遺伝子名が日付になり、ときにはファイル全体が1列に詰め込まれてしまうのは、Excelの推測が原因です。
.csvファイルとは?
CSVをメモ帳で開くと、隠れているものは何もありません。テキストの行が並び、1行が1レコード、カンマごとに列が切り替わります。カンマを含める必要があるフィールドは二重引用符で囲み、その中の二重引用符は2つ重ねて書きます。形式はそれだけです。ヘッダー領域も、列の型の一覧も、数式も、書式もありません。あるのは、どこかのプログラムが書き出した値だけです。この単純さゆえに、ほとんどすべてのデータベース、表計算ソフト、会計ソフト、銀行、プログラミング言語がCSVを読み書きでき、今もデータのエクスポートやインポートの多くで最後の手段として使われています。
ExcelでCSVがおかしくなるのはなぜ?
CSVは自分の値が何であるかを伝えられないため、Excelが自分で判断します。Microsoft自身の文書には、文字を入力・貼り付け・読み込みしたときにExcelが既定で行う自動変換が挙げられています。先頭のゼロを削除して残りを数値にする(00123が123になり、郵便番号や社員番号の最初の桁が消える)、長い数値は最初の15桁だけを保持し指数表記で表示することがある(カード番号や口座番号の末尾の桁がゼロになる)、文字Eの前後の数字を指数とみなす(123E5が1.23E+07になる)、JAN1のような日付に見える文字列を日付に変える、といったものです。その後シートを再びCSVで保存すると、変換後の値が書き込まれます。
2つ目の落とし穴は区切り文字です。ExcelはCSVを保存したり開いたりするとき、Windowsの地域設定にあるリスト区切り文字を使います。ヨーロッパ大陸の多くの国ではカンマが小数点記号(3,14)なので、リスト区切り文字はセミコロンです。Microsoftの手順もこの関係を認めており、小数点記号をカンマにすると「Excelはリスト区切り文字としてセミコロンを使わざるを得なくなる」と説明しています。そのためベルリンで保存されたファイルはセミコロンだらけになりがちで、逆にアメリカのシステムから来たカンマ区切りのファイルは、すべての行がA列に押し込まれて開くことがあります。3つ目の落とし穴は文字コードです。Microsoftによれば、UTF-8のCSVが正しく開くのはバイトオーダーマーク(BOM)――文字コードを知らせるために先頭に置かれる、目に見えない数バイト――付きで保存されている場合だけです。BOMがないと、インポートしてUTF-8を選ばない限り、日本語やアクセント付きの文字が文字化けすることがあります。
推測させずにCSVを開く
ダブルクリックの代わりに、Excelで[データ]>[データの取得]>[テキストまたはCSVから]を選び、区切り文字と元のファイル(文字コード)を確認し、郵便番号・口座番号・遺伝子記号などの列を読み込む前に[テキスト]に設定します。最近のExcelでは[ファイル]>[オプション]>[データ]>[自動データ変換]で個々の変換をオフにすることもできます。
1972年:カードの桁位置の代わりにカンマを
CSVには名前が付く前から、生まれる理由がありました。1960年代のメインフレーム用プログラムのデータは、80桁のパンチカードの固定桁に穿孔するのが一般的で、FORTRANプログラムにはどの桁にどの数値が入っているかを正確に指定するFORMAT文が必要でした。1桁ずれて穿孔された値は誤って読まれます。1972年7月付けの一般情報マニュアルに記載された、OSおよびVM/370オペレーティングシステム向けのIBM FORTRAN IVプログラム製品は、並び(リスト)による入出力という別の方法を提供しました。マニュアルは、入力項目は「空白またはカンマで区切られ、連続したカンマは省略された値を示す」と説明し、プログラマーが「データの配置や特定のカード桁」を気にする必要がなくなるとしています。当時IBMはこれを標準言語に対する自社の拡張機能として挙げていました。
並びによる入力は、1978年に承認されたFORTRAN 77で標準言語の一部になりました。区切りとしてカンマか空白を受け付けたため、引用符で囲まない文字列にはそのどちらも含められません。これは、のちにCSVの引用符が解決しなければならなかった問題そのものです。ただし、この時点ではまだファイル形式ではありませんでした。人が数値をカンマで区切って続けて入力し、それぞれの区切り目をコンピューターに判断させるための方法だったのです。
1983年:表計算ソフトがファイルに拡張子を与える
マイクロコンピューターの表計算ソフトは、この習慣をファイルに変えました。SorcimのSuperCalcを同梱して販売された持ち運び可能な業務用コンピューターOsborne Executiveの1983年のリファレンスガイドには、「.CSVはComma-Separated-Valueファイルを表す」とする変換ユーティリティーが記載され、その構造が説明されています。データ行はそれぞれ復帰と改行で終わり、値はカンマで区切られ、文字列は二重引用符で囲まれ(中にカンマを含めてもよい)、ファイルの終わりはControl-Zで示されます。ガイドは、このようなデータをメインフレームで作成して机上のコンピューターにダウンロードすることもできると付け加えています。
同じガイドは、今もこの形式を特徴づけている妥協点も明記しています。数式はCSVファイルに送られず、「変換時に画面に表示されている値だけ」が送られます。シートをCSVに変換して元に戻すと、数式は消えています。CSVは表計算シートの代わりになるためのものではありませんでした。表計算ソフト、データベース、BASICプログラム、メインフレームが行と列について合意するための、最小公分母だったのです。
バイトの仕組み
CSVは文字だけでできています。各レコードは1行で、古典的には復帰と改行(CRLF。DOSとWindowsが行の終わりに使う2つの制御文字)で終わりますが、改行だけを書き出すプログラムもあります。フィールドはカンマで区切ります。フィールドは二重引用符で囲んでもよく、カンマ・二重引用符・改行を含む場合は囲まなければなりません。引用符で囲んだフィールド内の二重引用符は2つ重ねます("")。最初の行は列名を並べたヘッダー行であってもよいのですが、そうかどうかをファイル内で示すものはありません。値の意味を示すものもありません。00123、1-2、MARCH1は、プログラムが別の判断をするまでは単なる文字列です。
ファイルは、どの文字コード(バイトと文字の対応関係)を使っているかも示しません。古いCSVは、そのコンピューターの言語に合わせたWindowsやDOSのコードページ(日本語ならShift_JIS系)で書かれていることが多く、新しいものはたいてい、ウェブで使われるUnicodeの符号化方式UTF-8です。読み込むプログラムは推測するしかありません。だからExcelにとってBOMが重要なのであり、CSVがシステム間を移動するとき、アクセント付きの名前やアジアの文字が真っ先に壊れるのです。
2005年:RFC 4180が規則を書き留める
2000年代初めには、CSVはあらゆる場所にありながら、どこにも仕様がありませんでした。2005年10月、IETF(Internet Engineering Task Force。インターネット標準を策定する組織)は、Yakov Shafranovichが執筆したRFC 4180「Common Format and MIME Type for Comma-Separated Values (CSV) Files」を公開しました。序文は率直で、「驚くべきことに、この形式は非常に一般的であるにもかかわらず、一度も正式に文書化されたことがない」と述べています。このメモは「ほとんどの実装が従っているように見える形式」――CRLFの改行、省略可能なヘッダー行、カンマ、二重引用符の規則――を説明し、メディアタイプの一覧を管理するIANAにtext/csvを、省略可能なパラメーターcharsetとheader付きで登録しました。さらに「Microsoft Excelなど一部のプログラムは二重引用符をまったく使わない」とまで記しています。
RFC 4180は情報提供のRFCであり、自ら「いかなる種類のインターネット標準も定めない」と述べています。その後の取り組みは、これを置き換えるのではなく、その周りに積み重ねられました。2014年にはRFC 7111が、ウェブアドレスでtext/csvファイルの特定の行・列・セルを指す方法を定義し、2016年に活動を終えたW3CのワーキンググループCSV on the Webは、CSVの列を型も含めて別のメタデータファイルで記述するための勧告を公開しました。CSVファイル自体には、今もそうした情報はありません。
推測が外れるとき:遺伝子、日付、失われた行
最もよく記録されている被害者は生物学です。2004年、Barry ZeebergらはBMC Bioinformatics誌で、Excelの既定の変換が遺伝子名を書き換えると報告しました。がん抑制遺伝子DEC1は「1-DEC」になり、2310009E13のようなRIKENのクローン識別子は数値2.31E+13になりました。彼らはこれらの変換を元に戻せないものと呼んでいます。2016年には、Mark Ziemann、Yotam Eren、Assam El-Ostaが2005年から2015年に18の学術誌で公開された補足Excelファイルを調べ、704本の論文のファイルに遺伝子名の誤りを見つけました。これはExcelの遺伝子リストを含む論文の19.6%にあたります。2020年、ヒト遺伝子の記号を承認するHUGO遺伝子命名委員会(HGNC)は、自動的に日付に変換されていた記号はすべて2019年中に変更されたことを確認するガイドラインを公表しました。SEPT1は現在SEPTIN1、MARCH1は現在MARCHF1です。
CSVは公衆衛生上のトラブルの発端にもなりました。2020年9月25日から10月2日にかけて、イングランドの新型コロナウイルス陽性者15,841人が日次の集計から漏れました。イングランド公衆衛生庁(PHE)は、一部のファイルが、結果を中央のシステムに読み込む処理の最大ファイルサイズを超えていたと説明しました。BBCの報道によれば、検査会社は結果を問題なくCSVファイルで提出していましたが、PHEの自動処理がそれを古いXLS形式のExcelテンプレートに流し込んでおり、この形式には約65,000行しか入りません。1件の検査に複数の行を使っていたため、各テンプレートは約1,400件で満杯になり、残りが抜け落ちました。
最終的にMicrosoftは、既定値ではなくソフトウェアのほうを変えました。2023年10月、Excelチームは自動データ変換の設定をWindows(バージョン2309以降)とMac(16.77以降)で一般提供すると発表しました。先頭のゼロ、15桁への切り捨て、文字E、「連続する文字と数字」の日付への変換についてそれぞれチェックボックスがあり、.csvや.txtファイルが変換されそうなときに警告を出すオプションもあります。変換は、自分でオフにするまで有効なままです。
元のCSVを残しておく
Excelが列を変換した後にそのファイルへ上書き保存すると、CSVには変更後の値が入り、元の文字列はそこから取り戻せません。コピーで作業し、手を加えていないエクスポートを編集中のファイルとは別に保管してください。
2026年になっても.csvファイルがディスクに残っている理由
CSVは、それを作り出したシステムよりも長生きしました。非常口だったからです。銀行は取引明細をCSVで提供し、古い会計ソフトや会員管理ソフトはレコードをこの形式で書き出し、実験装置やデータロガーもCSVを出力し、何十年にもわたるデータベース移行がCSVを経由してきました。そうしたファイルの多くは、今ではレガシーファイルです。もう動かないソフトウェアからのエクスポートで、古いコードページで書かれ、PCの設定次第でセミコロン区切りだったりカンマ区切りだったりし、最新の表計算ソフトが最初のダブルクリックで黙って解釈し直してしまう郵便番号、部品番号、IDが詰まっています。
Legacy File Converterは、対応ファイル形式ページの表計算カテゴリーにカンマ区切り値(.csv)を掲載しており、お使いのWindows PC上でXLSX、PDF、Markdown、HTMLに変換します。何もアップロードしないので、銀行や会員の記録を含むエクスポートでも安心です。変換後は、郵便番号、長いID、日付などの列を元のファイルと照らし合わせて確認してください。表計算データをやり取りする初期の方法については歴史レッスン:.difファイルとは?と歴史レッスン:.slkファイルとは?を、新型コロナの事例に出てきたバイナリ形式のブックについては歴史レッスン:.xlsファイルとは?をご覧ください。
関連記事
古いファイルを開く準備はできましたか?
無料で始めて、買い切りの $79.95 Standard ライセンスで無制限変換を解除。Windows インストーラーをダウンロード — 最大 10 ファイルまで全機能。
無料トライアル
アプリの全機能 · 最大 10 ファイル
Windows 10 または 11
無料トライアル — 最大 10 ファイルまで変換できます。Windows インストーラーをダウンロードして、PC 上でローカルに変換してください。
直接 Windows インストーラー · オフライン MSI
安全ですか? — 発行元、インストーラー、SmartScreen のヘルプ
Windows 10 または 11 が必要です。サブスクリプションなし。