JavaA2Z

KAB-studio > プログラミング > JavaA2Z > CSVとは

CSV

日本語 カンマ区切りデータ
英語 Comma Separated Value
ふりがな しーえすぶい
フリガナ シーエスブイ

解説

各値がカンマ(,)で区切られた文字列
ファイル形式のひとつ。テキストファイル形式で複数のデータを格納する場合、各値をそのまま書き込むと「値がくっついてしまう」ため、各値を分け隔てるための文字が必要となる。その文字がカンマなのがCSVである。
たとえば「100,200,300」のような形式のが複数並ぶ。多くの場合は各の項目数は同じとなる。
 
CSVはテキストファイルを用いた出力形式として非常にメジャーなものと言える。
テキストファイルのため簡単に見られること、データ形式が分かりやすいこと、MS-Excelに取り込み編集することができること、といったメリットがあるためである。
 
だが、CSVは実は扱いが非常に難しいファイル形式である。
まず、CSVを解析するクラスJ2SEになく、解析をうためには他ベンダーのライブラリを使用するか自分で作成するしかない。
自分で作成する場合、「,」が項目中に含まれていた場合の処理方法や、それをエスケープするための方法等を決めなければならない。CSVには正式なフォーマットがなく、「\,では分割しない」「""で囲まれていたら分割しない」「項目数は固定だからそれで判断」といったルールを決めなければならない。
システム開発の場合、こういったCSVファイルフォーマットは他のシステムとの兼ね合いで決まっている事も多く、その場合はそのルールに合わせなければならない。また、そういったルールが新システムでは矛盾となることも少なくない。
さらに、CSVは「見た目」や「Excelへのインポート」も重視されるため、「1目はヘッダとして項目名を書く」「そのままExcelにインポートできるようにする」といった制約が設けられることも多い。
つまり、CSVは使用者側からみれば「汎用的で使いやすい」が、プログラマーから見れば「決定事項が少ないため使いにくい」というファイル形式なのである。
 
CSVの代替案としてXMLがある。
XMLであれば解析用ライブラリが抱負で見た目としても悪くない。
が、多くのユーザーはXMLに対して好感触を持たないため、当分の間CSVはなくならないだろう。
 
ちなみに似た単語だが「CVS」は別物。
間違えると突っ込まれるため注意。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        String[] strings = new String[2];

        // 次のようなデータがCSV。
        strings[0] = "100,200,300";
        strings[1] = "400,500,600";

        System.out.println( strings[0] );
        System.out.println( strings[1] );
        // 100,200,300
        // 400,500,600
        // 普通はこれをファイルに出力します。

        // 逆に、ファイルから取得した場合は
        // Stringクラスのsplit()メソッドで分割します。
        String[] items = strings[0].split( "," );
        System.out.println( items[0] );
        System.out.println( items[1] );
        System.out.println( items[2] );
        // 100
        // 200
        // 300

        // ただし、これは一番簡単な方法。
        // 「データ中に,が含まれている場合」とかは
        // 考えていません。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        String[] strings = new String[2];

        // 次のようなデータがCSV。
        strings[0] = "100,200,300";
        strings[1] = "400,500,600";

        System.out.println( strings[0] );
        System.out.println( strings[1] );
        // 100,200,300
        // 400,500,600
        // 普通はこれをファイルに出力します。

        // 逆に、ファイルから取得した場合は
        // Stringクラスのsplit()メソッドで分割します。
        String[] items = strings[0].split( "," );
        System.out.println( items[0] );
        System.out.println( items[1] );
        System.out.println( items[2] );
        // 100
        // 200
        // 300

        // ただし、これは一番簡単な方法。
        // 「データ中に,が含まれている場合」とかは
        // 考えていません。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/04
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。