はじめに
リンクラフトでエンジニアとして働いているカワチです。リンクラフトアドベントカレンダーの9日目を担当します。
「CSVファイルをダブルクリックで開く」
もしドキッとした方がいれば、この記事は刺さるかもしれません。そして、これは何年か前に保険会社のデータ運用で私がやらかし、背筋が凍る思いをした実録の失敗談です。
年末のこの時期、過去の失敗を供養する意味を込めて、なぜ「CSVをExcelで直開きしてはいけないのか」、そして「どうすればよかったのか」を自戒と共に記します。
事件の概要:消えた「0」 犯人は・・・
昔、私は保険会社のデータを管理するシステムの保守・運用を担当していました。ある日、顧客から受領したCSVデータを少し加工し、社内システムに取り込む作業が発生しました。
私は何の疑いもなく、そのCSVファイルをExcelで開き、データを修正し、いつものようにCtrl + Sで上書き保存しました。
悲劇の発覚
後日、ユーザーからデータがおかしい、業務に支障がでているとアラートがあがりました。
調査の結果、犯人は私が作成したCSVデータでした。
Excelで開いて保存しただけで、データは以下のように無惨な姿に変貌していました。
| 項目 | 元のCSVデータ | Excel保存後のデータ | 何が起きたか |
|---|---|---|---|
| 顧客ID | "001" |
1 |
先頭のゼロ落ち(数値化) |
| 会員番号 | "999999999999999" |
1.00E+14 |
指数表記による精度劣化 |
| 住所 | "1-2" |
2023/1/2 |
日付への勝手な変換 |
特に顧客IDの「001」が「1」になっていた件は致命的でした。
当時は「まぁしょうがないよね」と現場の方々に許していただきましたが、評価はしっかりと下がり、私の心には深いトラウマが刻まれました。
なぜ起きたのか:Excelの「親切心」という名の仕様
この現象の主犯は、Excelの 「自動データ変換」 機能です。
ExcelはCSV(ただのテキストファイル)を開く際、ユーザーが読みやすいように気を利かせて型推論を行います。
- 「これは数字だけで構成されているな? じゃあ数値型にしておこう(
001→1)」 - 「これはハイフンが入っているな? 日付だろう(
1-2→1月2日)」
この「親切」は、画面上で見る分には便利ですが、CSVとして保存し直すと、その「変換された見た目」でテキストデータが上書きされてしまいます。つまり、元の情報は永遠に失われます。
対策と教訓:二度と悲劇を繰り返さないために
この失敗から得た教訓は3つです。新人エンジニアの方は特に覚えて帰ってください。
対策1:CSV編集には「テキストエディタ」を使う(基本)
CSVはただのテキストファイルです。VS Code、サクラエディタ、Notepad++などで開きましょう。これなら勝手にデータが書き換わることはありません。
「Excelは閲覧ツールではなく表計算ツールである」 という認識が重要です。
対策2:Excelを使うなら「Power Query」でインポートする
どうしてもExcelで見たい・加工したい場合は、ダブルクリックではなく、以下の手順を踏むのが鉄則です。
- 空のExcelブックを開く
-
データタブ >テキストまたはCSVからを選択 - インポート時に「データの型検出」を行わない(または全ての列を「テキスト」として読み込む)
対策3:【最新】Excelの「自動データ変換」を無効化する
実は最近のアップデート(Microsoft 365 / Excel 2024など)で、ついにこのお節介機能をOFFにする設定が追加されました。
情報の鮮度が命ですが、2025年現在、以下の設定で「0落ち」を防げます。
-
ファイル>オプションを開く -
データカテゴリを選択 - 「自動データ変換」 セクションを探す
- 以下のチェックを外す
- 先頭のゼロを削除して数値に変換する
- 長すぎる数値を短縮して科学的記法に変換する
- 文字と数字が混在する連続する文字を日付に変換する
参考文献
窓の杜:先頭のゼロを勝手に消すな ~「Excel」のお節介な自動データ変換を抑制する機能が一般提供開始 https://forest.watch.impress.co.jp/docs/news/1538341.html
これを設定しておけば、CSVをダブルクリックで開いても「001」は「001」のまま維持されます。人類の勝利です。
おわりに
当時の私は、ツールの特性を理解せず、手軽さに甘えて重要なデータを破損させてしまいました。
もし、あなたの周りにCSVをExcelで直接編集しようとしている同僚がいたら、優しく止めてあげてください。
この失敗談が、誰かの評価(とデータ)を守ることに繋がれば幸いです。
それでは、かつて消滅した全ての「0」たちへ。
合掌、チーン。
一緒に働く仲間を募集中です!
リンクラフト株式会社では、組織拡大に伴い積極的な採用活動を行っています。
少しでも興味がある方はぜひご連絡ください。
▽会社ホームページ
https://lincraft.co.jp/
▽Instagram
https://www.instagram.com/lincraft.inc/
▽ご応募はこちらより
https://lincraft.co.jp/recruit
※カジュアル面談も受付中です。ご希望の方はHPのお問い合わせフォームよりご連絡ください。