民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS CSV データ受け渡しの際の打ち合わせ事項

<<   作成日時 : 2008/08/16 09:00   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

先日、CSV を規定した RFC を見つけたので、それを元に実際の経験も踏まえ、CSV 形式でデータを授受する際に、相手と詰めておかなければいけない項目をまとめてみた。

文字コード
Shift JIS や UTF8 など。

文字コードの使用範囲
半角英数のみか、ASCII 文字全てを使うのか、JIS第1水準、第2水準まで使うのか、IBM拡張文字まで使うのか。
半角カタカナや全角英数を使うか。
使用する文字コードの範囲については、「JIS X 0201」、「JIS X 0208」、「JIS X 0212」、「JIS X 0213」などの組み合わせで指定する方法もある。
UNICODEであったとしても、これらの範囲に変換可能な範囲の文字コードのみを使うかどうかの指定が実務上は必要。

外字の受け渡し方法
どうしても外字が必要な場合、外字フォントファイルを共有するのか、字形の似た文字に置換するのか、外字を意味する文字(例えば「〓」など)に全て置換して、プルーフリスト(外字などを確認するために、全データを紙に出力したリスト)を添付するのかなど。

区切り文字
カンマで区切るのか、タブで区切るのか、あるいはその他の文字か。

改行文字
CR+LF にするのか、LF のみにするのかなど。

最後の行に改行文字を入れるかどうか
これの解釈によって、最後のデータが空データなのか、そもそも存在しないのかの差異が生まれる。

ファイルの先頭にヘッダー行をつけるかどうか
各フィールドの項目名をファイルの1行目に格納する場合がある。

各行のフィールド数は同じかどうか
後ろの方のフィールドが空の場合、フィールドごと省略するかどうか。
しかし、フィールドの省略は基本的に推奨されない。各行のフィールド数は基本的に同数であるべきである。

スペースはフィールドの一部とみなすかどうか
原則論では、スペースもフィールドの一部であるが、CSVデータを人間が見やすくするために、半角スペースやタブで見た目を整える場合がある。
また、固定長データなどから変換した場合、各フィールドの後部に半角や全角のスペースが入っている場合がある。
これらのスペースの扱いについて、事前に合意しておく必要がある。

フィールドをダブルクォーテーションで括るかどうか
スペースをフィールドの一部とみなすかどうかとも関連する。
スペースをフィールドの一部とみなさない代わりに、各フィールドをダブルクォーテーションで括ってフィールド内容を明示することがある。
数値データはダブルクォーテーションで括らず、文字列だけダブルクォーテーションで括るという選択もある。
また、ダブルクォーテーション以外の文字(シングルクオーテーションなど)で括る場合もある。

フィールド内に区切り文字や改行文字が入る場合にどうするか
そもそもフィールド内に区切り文字や改行文字を入れないことにするという場合もある。
フィールドをダブルクォーテーションで括る場合は、ダブルクォーテーションで括られた範囲内の区切り文字や改行文字はデータの一部として扱うことにするという場合もある。
フィールドをダブルクォーテーションで括る場合は、フィールド内にダブルクォーテーションが含まれる場合にどうするか(ダブルクォーテーションを二つ重ねるなど)を決めておく必要がある。
C言語などで使われるようなエスケープ文字でこれらの特殊文字を表現する場合もある。


以上。
RFC があるからといって、全てのデータが RFC にしたがっているとは限らない。
一口に CSV と言っても、意外とたくさんの項目について合意しておかないといけないことが分かる。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
CSV データ受け渡しの際の打ち合わせ事項 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる