仕事上、よくお世話になっているエクセル。
このエクセルからCSVに書き出して、他のアプリケーションに読み込ませる流れが、大量にあるデータ項目を一括で変更するのに大変便利。
このサイトはWordpressで表示されているけれど、これも、ひとつひとつの要素データの集まりで、各記事をCSVに吐き出せば、まとめてタイトルや日付、カテゴリ、タグを修正することができる。他にも商品データや、アドレス帳、その他、データベースを扱うものは、だいたいCSVに対応していたりする。で、このCSVってなんの略か?と疑問に思ったので、調べてみた。
CSVは何の略か
Comma Separated Value
直訳すると、
Comma コンマ
Separated 区切り
Value 値
エクセルのファイル形式選択では、CSV UTF-8(コンマ区切り)って書いてある。
エクセルの見た目とCSVの見た目の違い
これがエクセルの見た目としましょう。
名称 | 金額 | 個数 |
---|---|---|
りんご | 100 | 10 |
バナナ | 200 | 4 |
ぶどう | 300 | 2 |
これをCSV形式で表すとこうなる。
名称,金額,個数 りんご,100,10 バナナ,200,4 ぶどう,300,2
これでもうCSV形式が完成だ。
ここで告白なのだけど、今までCSVだと思っていたのは、TSV(Tab Separated Values)だったことが判明。
前述の通り、エクセルを使うので、その値をそのままテキストエディタに貼り付けると、こういう見え方になる。
名称 金額 個数 りんご 100 10 バナナ 200 4 ぶどう 300 2
わかりづらいのだけど、スペース部分はタブスペース。
テキストエディタだと¥nで表示ができる。
一括置換をする際に、文中に含まれやすいカンマよりも断然使い勝手が良いタブスペースを愛用していたので、いままでCSVを操作していると思っていたのは、実はTSVだったのだ。
つまり、エクセルの表示形式はTSVをベースにしていて、それをファイル形式でCSVにエンコードしていたのだ!
CSVとエクセルとテキストエディタを行ったり来たり
ところで、なんでテキストエディタに噛ませるかというと、柔軟に文字列を操作できるからなのです。
例えば、こういう情報があったとするじゃないですか、
日付 天気 温度
2019年8月3日 晴れ 30℃
2019年8月4日 晴れ 34℃
2019年8月5日 雨 29℃
2019年8月6日 晴れ 33℃
これをエクセルに貼り付けると、こうなっちゃいます。
なぜならタブスペースじゃなくて全角スペースだから。
日付 天気 温度 | |
2019年8月3日 晴れ 30℃ | |
2019年8月4日 晴れ 34℃ | |
2019年8月5日 雨 29℃ | |
2019年8月6日 晴れ 33℃ |
この全角スペースを、テキストエディタでタブスペースに置換して、エクセルに貼り付けると、ちゃんと区切ってくれるんです。
日付 | 天気 | 温度 |
2019年8月3日 | 晴れ | 30℃ |
2019年8月4日 | 晴れ | 34℃ |
2019年8月5日 | 雨 | 29℃ |
2019年8月6日 | 晴れ | 33℃ |
ちゃんと要素を区切ると何がいいかっていうと、エクセルなら、データのソート機能で並べ替えが楽になるんですね。
日付 | 天気 | 温度 |
2019年8月4日 | 晴れ | 34℃ |
2019年8月6日 | 晴れ | 33℃ |
2019年8月3日 | 晴れ | 30℃ |
2019年8月5日 | 雨 | 29℃ |
並べ替えが楽になると、いろいろなグループ分けや、分析がしやすくなります。
これはデータの量が多ければ多いほど、その恩恵が感じられるのです。
CSVの仲間たち
CSVといえば、comma separated valuesということになっていますが、
コンマ以外の区切りを使うフォーマットがあり、その仲間たちは、
CSV:comma separated values カンマで区切られた値。
TSV:tab separated values タブスペースで区切られた値。
の他に、
SSV:space separated values 半角スペースで区切られた値。
SSV:semicolon-separated valuesセミコロンで区切られた値。
が、あります。SSV、なんで同じ略称にしちゃったんだろうねぇ。
で、この仲間たちをまとめた総称として、
character-separated values(CSV)
delimiter-separated values(DSV)
と呼ぶ。
って、またCSVじゃん!
CSVで頂戴って言っている人が総称なのかコンマ区切りのほうなのか、
割と問題にしていないのは、まぁ、とりあえず区切られていればいいかってことなのかもねぇ。
あとCSVの代わりにXMLを使おうっていう流れもあるみたいだけど、マークアップしたら操作の手間がかかるから、完成データに近く場合のみに使いたい。
参考