エンジニアじゃなくても知っておきたい教養としてのデータフォーマット入門

IT技術 教養としてのテクノロジー入門

この記事について

人間の文書にもフォーマットがあるように、システムが読み取る文書にもフォーマットがあります。この記事ではエンジニアリング業務をしていない人でも知っておくと便利なシステムでよく使うフォーマットをご紹介します。

エンジニアリング業務をしていなくても、ブラウザで突然出てきたデータや、業務上渡されたデータが今回紹介するようなフォーマットで書かれていたりすることがあると思います。そういった時に「なんだこれ?」という体験をしないように、むしろさらに発展して活用することやコミュニケーションがスムーズにできればということを目的に書いています。

なお、今回は全て以下のデータで統一しています。

Name Age Gender Profession
山田太郎 25 男性 教師
佐藤花子 25 女性 弁護士
田中桜 24 女性 医者
鈴木一郎 28 男性 プログラマ

CSV

CSVは「comma-separated values」の略です。正式名称どおり、「,」コンマで区切ったデータフォーマットです。※厳密なフォーマットだと、各種列を""で区切ります。拡張子は.csvです。

手入力でも手軽に作れたり、エクセルで扱えるデータなので触ったこともある方も多いかと思います。システムが読み取る上でもわかりやすいフォーマットなので頻繁に扱われます。


Name,Age,Gender,Profession
山田太郎,25,男性,教師
佐藤花子,25,女性,弁護士
田中桜,24,女性,医者
鈴木一郎,28,男性,プログラマ

TSV

CSVには様々な亜種があります。亜種の代表的なものに「Tab-Separated Values」があります。違いとしては、CSVはコンマ区切りであるのに対して、tsvはタブ区切りである点が特徴です。拡張子は.tsvです。

これもエクセルで扱えるフォーマットなのでご存知の方も多いかもしれません。CSVと違ってコピーアンドペーストでエクセルに貼り付けられるという特徴もあります。


Name	Age	Gender	Profession
山田太郎	25	男性	教師
佐藤花子	25	女性	弁護士
田中桜	24	女性	医者
鈴木一郎	28	男性	プログラマ

JSON

JSONとはJavaScript Object Notationの略です。もともとはプログラミング言語であるJavaScriptのオブジェクトという型の書き方だったのですが、データ取り扱いがしやすいということでJavaScriptに限らず利用されています。

なおJavaScriptについて、もしも興味があれば教養としてのJavaScript入門という記事を書いていますのでよろしければご覧ください。

{}と[]という型にキーとバリューで構成されているのが特徴です。


[
    {
        "Name" : "山田太郎",
        "Age" : 25,
        "Gender" : "男性",
        "Profession" : "教師"
    },
    {
        "Name" : "佐藤花子",
        "Age" : 25,
        "Gender" : "女性",
        "Profession" : "弁護士"
    },
    {
        "Name" : "田中桜",
        "Age" : 24,
        "Gender" : "女性",
        "Profession" : "医者"
    },
    {
        "Name" : "鈴木一郎",
        "Age" : 28,
        "Gender" : "男性",
        "Profession" : "プログラマ"
    }
]

XML

XMLはExtensible Markup Languageの略です。<>で作られたタグを構造的に組み合わせたデータフォーマットです。


<Data>
    <Person>
        <Name>山田太郎</Name>
        <Age>25</Age>
        <Gender>男性</Gender>
        <Profession>教師</Profession>
    </Person>
    <Person>
        <Name>佐藤花子</Name>
        <Age>25</Age>
        <Gender>女性</Gender>
        <Profession>弁護士</Profession>
    </Person>
    <Person>
        <Name>田中桜</Name>
        <Age>24</Age>
        <Gender>女性</Gender>
        <Profession>医者</Profession>
    </Person>
    <Person>
        <Name>鈴木一郎</Name>
        <Age>28</Age>
        <Gender>男性</Gender>
        <Profession>プログラマ</Profession>
    </Person>
</Data>

プログラムで読み取ってみる

最後に実際にどのようにデータを読み取っているのかプログラムコードを書いてみようと思います。

※もしもプログラミング言語を触ったことがない方は教養としてのJavaScript入門という記事を用意していますので、こちらも合わせて確認ください。

今回はCSVを読み取ってみようと思います。なお、プログラム上のCSVの各行の「¥n」という文字が入っていますがこれは改行コードと言います。(環境によっては\nにいなります。)改行コードとは、プログラム上で改行を表すために使われます。

「¥n」のほかにもタブは「¥t」などと表すことがあり、これら代替的に利用する文字のことをコントロール文字といいます。

CSVの読み取りはとても簡単です。まず「¥n」つまり一行ごとに分解した後、「,」でさらに分解します。


var csv = "Name,Age,Gender,Profession¥n"
    + "山田太郎,25,男性,教師¥n"
    + "佐藤花子,25,女性,弁護士¥n"
    + "田中桜,24,女性,医者¥n"
    + "鈴木一郎,28,男性,プログラマ";

// 一行ごとに分解します。
var list = csv.split("¥n");
var personList = [];

for(var i = 1; i < list.length; i = i + 1) {
            
    // , でさらに分解して配列化します。
    item = list[i].split(",");

    // オブジェクトとした上で配列に加えます。
    personList.push({
        name: item[0],
        age: item[1],
        gender: item[2],
        profession: item[3]
    })
}

console.log(personList);

最後console.logのところで出力されるのは以下になります。このようにしてcsvを読み取ることができました。


[
  { name: '山田太郎', age: '25', gender: '男性', profession: '教師' },
  { name: '佐藤花子', age: '25', gender: '女性', profession: '弁護士' },
  { name: '田中桜', age: '24', gender: '女性', profession: '医者' },
  { name: '鈴木一郎', age: '28', gender: '男性', profession: 'プログラマ' }
]

終わりに

今回はCSV、TSV、JSON、XMLと4種類のデータフォーマットを紹介しました。

データフォーマットはこれがすべてというわけではなく、ほかにもYAMLなどがあります。興味があれば調べてみてください。

この記事を通じて、苦手意識を持たずにシステムで使うデータフォーマットを扱える人が増えれば幸いです。最後まで読んでいただきありがとうございました。

Photo by Javier Garcia Chavez on Unsplash

 みやうデジタルラボ - にほんブログ村