パスワードを忘れた? アカウント作成
192813 journal

Torisugariの日記: text/csvについて 3

日記 by Torisugari

CSVファイルの標準規格を定めている(はず)の、RFC 4180(2005年10月)には、mimeに関して以下のような記述があります。

   MIME media type name: text
 
   MIME subtype name: csv
 
   Required parameters: none
 
   Optional parameters: charset, header
 
      Common usage of CSV is US-ASCII, but other character sets defined
      by IANA for the "text" tree may be used in conjunction with the
      "charset" parameter.
 
      The "header" parameter indicates the presence or absence of the
      header line.  Valid values are "present" or "absent".
      Implementors choosing not to use this parameter must make their
      own decisions as to whether the header line is present or absent.

つまり、CSVファイルの一行目がヘッダであると見なすためには、mimeの指定を"text/csv; charset=utf-8; header=present"にしろ、ということです。

確かに、CSVファイルそのものは自分の一行目がヘッダか否かなど知ったことではないので、どこか別のところ、例えばHTTPのヘッダやメールのマルチパートなヘッダに書くしかない、というのは合理的な結論ではあるのでしょう。しかながら、「では、だれがこんな実装するんだ?」という点を考えると首をかしげざるを得ません。

仮に、表計算ソフトがネットワーク越しにファイルを開くことを想定していたとしても、サーバー側だって対応しなければいけないわけですから。つまり、ソース側の表計算ソフト自体がサーバーにならないと解決しない問題です。あるいは、ヘッダの有無でファイルの拡張子を変えるとか…… まあ、Googleのことを考えると、あながち無理な話でもないのかもしれませんが。

そういうわけで、Firefoxの対応ファイルタイプに"text/csv"を追加する拡張を作ってみました。
http://torisugari.hostei.com/development/printcsv/printcsv1_1_0.xpi

こちらが、確認用のCSVファイルです。
http://torisugari.hostei.com/development/test/a.csv
ちなみに、.htaccessを

AddType 'text/csv; header=present' .csv

にしています。この"header=present"、使い物になりそうでしょうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 表計算ソフトだと、1行目がヘッダー (ラベル) だろうとデータだろうとシート上に表示する動作には変わりが無いので、あまり意味は無いかと。
    サーバー/クライアント型のシステムでサーバーで生成したデータをクライアントに渡して処理させるような時には意味があるような気がしますが...。
    でも最近だとそういう用途なら XML ですね。
    • 表計算ソフトだと、1行目がヘッダー (ラベル) だろうとデータだろうとシート上に表示する動作には変わりが無いので、あまり意味は無いかと。

      いや、そこは発想が逆じゃないですか?ヘッダと実データの区別が面倒だから現行のような実装になっているわけで、表計算の理想を言えば、シートの一行目を実データで始めてくれた方が便利だと思います。「B列2行目以下とC列2行目以下を足す」よりも、「"ラベルB"列と"ラベルC"列を足す」の方が、機能的で人為的エラーも入りにくいでしょうし。

      まあ、実際の運用ではもっとアクロバティックな範囲指定もあるわけですから、現行方式を否定したいわけではありませんが、アプリケーション側に「ヘッダをヘッダだと認識する機能」は追加されても良いのではないでしょうか。私が言っているのは、今"A"とか"B"とかになっている部位の表示が"名前(A)"、"住所(B)"、になって、最初のセルの位置が"名前1(A1)"になるってことですよ。

      親コメント
      • ヘッダーが指定されたデータを開くと、自動的に列(カラム)に名前が付けられるという動作ですね。面白いです。
        ただ便利そうではあるけど、現行の表計算ソフト(Excel なり Calc なり) でそういう動作を実現しようとすると、「表計算のシート自体は物理的な行と列を提供するだけで論理的な意味を持たない白紙」という仕様というか考え方の変更が伴うのでそれなりに大変そうで、ニーズとの見合いが微妙かも。
        前コメントにも書いたけどベンダーからすれば「メタデータを含めたいなら XML を使ってください」でしょう。
        親コメント
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...