LoginSignup
38
29

More than 1 year has passed since last update.

よく見るデータ形式(xlsx, csv, xml, json, yaml) の違いについて

Last updated at Posted at 2021-05-08

はじめに

csv, xml, yaml, jsonなど,これらデータ形式はweb,画像処理など色々な場面で見るけど,その違いをいまいちよく知らなかったので簡単にまとめてみた.

xlsx

  • Microsoftのエクセルのデータ形式(Excel 2007以降).

ちなみに,その他のよく見るエクセルの形式について
* 「.xls」:1997 ~2003で使用されていた形式.
* 「.xlsm」:マクロ(プログラムなどでデータ処理を自動化)を使用する際の形式.

csv

ID, Name, Country
111, Mike, USA
222, Nancy, Canada
  • Comma-Separated Valuesの略
  • 名前の通り,データがコンマ(”,”)で区切り.
  • 直感的にデータの中身を把握しやすく,MicrosoftのExcelやGoogle Spread Sheetと相性が良い.
  • excelで開くと,それぞれの要素がセル内に入った状態で表示.

xml

<?xml version='1.0' encoding='utf-8'>
<root>
    <employee>
        <employ>
            <ID>111</ID>
            <Name>Mike</Name>
            <Country>USA</Country>         
        </employ>
        <employ>
            <ID>222</ID>
            <Name>Nancy</Name>
            <Country>Canada</Country>
        </employ>
    </employee>    
</root>
  • Extensible Markup Languageの略.
  • htmlに似ていて,タグでデータを囲み,入れ子構造にすることが可能.
  • csvよりもデータを直感的に把握しづらいが,様々なデータを記述可能.
  • 多くのプログラミング言語において標準ライブラリで扱える(ただしNode.jsにはない).
  • 記述が冗長になりがちで、敬遠されがち.
  • Ajax(Asynchronous JavaScript = 非同期 JavaScript)というものにも使われ,javascriptとxmlで非同期でサーバー間と通信するのに使われる.
  • DeepLearningのアノテーションにも使われる.

非同期通信:ページ遷移を必要としない通信(同期通信の場合,リンク先に飛ぶと,ページ遷移して,画面が真っ白になった後に新しいページが表示される).内部でxmlとjavascriptが通信することで,そのページのままページ更新が可能.

json

[
    {'ID': '111', 'Name': 'Mike', 'Country': 'USA'},
    {'ID': '222', 'Name': 'Nancy', 'Country': 'Canada'}
]
  • JavaScript Object Notationの略.
  • 辞書型と呼ばれる、一対一対応のような記述方式.
  • XMLよりもデータの記述量が少ないので、読み込みが速い.
  • JavaScript のオブジェクトで構成されているため、そのまま JavaScript で記述したプログラムで扱うことが可能.
  • 効率性の向上やファイルサイズの節約を目指したデータに向いている(スペースや終了タグによるサイズの浪費がほとんどないから).
  • ほとんどのプログラミング言語で標準ライブラリに入っている.
  • コメント書けない.

yaml(.yml)

-
  ID: 111 # コメント書けるよ
  Name: Mike
  Country: USA
-
  ID: 222
  Name: Nancy
  Country: Canada
  • YAML Ain't a Markup Languageの略(意味:ヤムルはマークアップ言語じゃないよ!)
  • xmlに似ているが,xmlよりも簡潔でほとんどが実際のデータ.
  • スペースによるインデントを使ってデータの階層構造を示す表記方法が基本.
  • JSONのスーパーセットなので、必要に応じて、スペースによるインデント表記からJSON風の表記へと切り替えることも可能.
  • Ruby以外は外部ライブラリ必須.
  • コメントを書くことが可能.
  • 「.yaml」と「.yml」が存在するが,両方ともヤムル形式のファイルでどちらを使ってもよい.(個人的にはdocker-composeが.ymlなので.ymlを使っていこうと思う.)

各形式の関係性

  • xlsx, csv:テーブルデータを扱うときに利用.列ごとに改行が必要.
  • xml, json, yaml:リスト内にリストを作るようなイメージで,複雑なデータ(構造化されたデータ)を扱うときに利用.改行必要ないので,人間にとっては読みづらいが,コンピュータにとっては読みやすい. image.png

まとめ

今回は,よくみる各データ形式の特徴について簡単にまとめました.

何か間違いがあれば,ご指摘いただけるとありがたいです.

参考

38
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
29