LoginSignup
7
8

More than 5 years have passed since last update.

新しくCSVファイルを利用せざるを得ないときのチェックリスト

Posted at

CSVは誰かがフォーマットを厳密に定義してるわけでないので、認識相違が多めです。
以下のような部分を考えましょう。

ポイント メモ
改行コード
  • CR+LF(Windows主流)
  • LF(Unix主流)
CRLFが無難。
文字コード
  • UTF-8
  • CP932
  • Shift_JIS
  • EUC-JP
WindowsでもUTF-8がおすすめ。
UTF-8が主流だからというのは当然として、特にVistaからJIS第三第四水準文字がUnicodeで入力できるので入力値に存在する可能性がある。

文字コード決めの考慮点

  • JIS第三第四水準文字を利用するか
  • Windowsの場合は拡張文字を利用するか
  • emojiはどうか
まず使わないがShift_JISやEUC-JPも2004版で第三第四水準相当になる。
区切り文字
  • カンマ
  • タブ
項目にカンマが含まれる可能性があるのでタブのほうがおすすめ。
またスプレッドシートではタブの方が扱いやすいのもポイント。
ヘッダー
  • あり
  • なし
合意しておくこと。あったほうが内容確認時に便利
途中の空行
  • あり(完全に空)
  • あり(カンマだけ)
  • なし
プログラム上でおかしくなる可能性
最終行
  • 改行つける
  • 改行つけない
プログラム上でおかしくなる可能性
項目内改行
  • あり
  • なし
なるべくなしにしたい。ありの場合で Excelを使ったとき、項目内改行の改行コードはCRである。
空データ
  • ありえる
  • なし
CSVというより一般常識。あとファイル作るか作らないかも。ヘッダーも注意。
記号、制御文字
  • 入ってくる
  • 入ってこない
これも常識
ユーザーがExcelでみたり操作するか
  • する
  • しない
様々なExcelトラップがある。0はじまり文字列の0が表示上消えたり、勝手に日付として解釈したり。
そのためユーザーに良い開き方を教えたり項目内容を工夫したりする必要がある。
項目をダブルクオートでくくるか
  • くくる
  • くくらない
くくる場合はさらに考える事が
  • 一部項目だけくくる
  • ダブルクオート内のダブルクオートはどうするか
  • シングルクオートでくくる
  • 項目が空データの場合はくくるかくくらないか

ファイルは結合度が高く、データ連携としては原始的です。
そもそもCSVで渡す必要性を考えつつ、素直に作りましょう。

7
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8