HDF5形式のファイル (1) HDF5って?
HDF5とは
結論から言います。
- HDF(Hierarchical Data Format)5形式とは、階層化されたデータ"群"を取り扱うファイル形式である
ナニソレ、イミワカンナイって人も、難しい話はオコトワリシメスって人も、まぁ落ち着いてください。 結構便利なんですよ。HDF5。 長文読みたくない?じゃあもっとわかりやすく言います。
- HDF5ってのは、[フォルダ+データファイル]をひとまとめにしたファイルのこと
だと言っていいでしょう。あなたのフォルダの中にはたくさんのファイルがあるでしょ?HDF5を使うと、それが全部ひとまとめにされた”ファイル”になるんです。
何故HDF5か?
データをいじるときはね 誰にも邪魔されず自由で なんというかきれいな構造をしてなきゃあ
って思ったことありませんか?無いですか、そうですか。
あなたは学校の先生です。 2014年一学期期末テストの成績を記録せねばならなくなりました。 何も言われなければ、excel(csv形式)で"2014_1st_kimatsu.xlsx"というファイルを作って
出席番号 | 名前 | 点数 | 合否 |
---|---|---|---|
1 | 井之頭一郎 | 1 | 「痛っイイ お…折れるう~~~」 |
2 | 井之頭二郎 | 2 | 「痛っイイ お…折れるう~~~」 |
5 | 井之頭五郎 | 5 | 「うおォン 俺はまるで人間火力発電所だ」 |
: | : | : |
みたいに記録するでしょう。 こういう成績は普通クラスごとに記録していくはずですので、複数のシートごとに、上のようなデータを書き込んでいくでしょう。
しかし、テストは年に何回もあります。これを同じファイルに記録していくのは使いにくそうです^1。 代わりに、普通だったら年度ごとにフォルダを作り、さらにその中にサブディレクトリを作って、テストごとに記録していくのではないでしょうか? つまり、[成績]というフォルダを作って、その下に
- 成績
- 2014
- 一学期
- 実力テスト
- 中間テスト
- 期末テスト
- "2014_1st_kimatsu.xlsx"
- 二学期
- ...
- 一学期
- 2014
といった具合で細かい分類フォルダを作って、成績のファイルを置くでしょう。
しかし、データの数が増えてくると、煩雑になりすぎてどれがどれだかわからない・・・ しかもディレクトリの作り方が適当だったり、ディレクトリが深すぎたりするともっと厄介。 更に、フォルダの中身は全部がexcel(csv)ファイルとは限りませんよね。試験問題と解答のwordファイルとかも一緒に突っ込むでしょうね。知らず知らずのうちに煩雑な構造が出来上がっていくことで、クソダルデータが出来上がるわけです。
しかしクソダルデータ構造化するのはどうしても避けられない・・・だったら、 せめて一つのファイルとしてこれらのデータをまとめられないの!? って思いませんか?(僕は思います。みなさんも思ってください)
そうです!この望みを叶えてくれるのがHDF5形式のファイルなのです!!
HDF5は、上に挙げた成績の一連のデータ、つまり、[成績]フォルダの中の階層構造をそのままに、ひとつのファイルとして保存してしまえるのです!!!
HDF5のすごいところは、 異なるデータの形式をひとまとめにできる点です。
例えば、先ほどの成績の例では、名前(string)、出席番号、成績(int or float)、合否(bool)のように複数のデータ形式を抱えていました。
これらに加えて、 画像ファイルもひとまとめにできます。
とまぁ、このように、HDF5ってのは、
- 複数の種類のデータ・ファイルをディレクトリを伴ってまとめたファイル
ってことなんですね。 とりあえず今日は、理屈をこねてHDF5が何なのかをかいたところで終わりにします。
次回は多分pythonを使ってHDF5を読み書きする方法を紹介します。
補足
- 特殊なデータ形式なので、閲覧・編集には、 HDF5viewer などの専用ビュワーが必要です。
- MATLAB, Mathematica, C,C++, python, PARAVIEWなどでも読み込めます
- zipやtar,rarなどと違って、圧縮はしません。データはでかくなりがちですが、そのままHDFviewerなどを使って編集ができます。
- HDF4ってのも有ります。発想は同じですが、作り方が全く違うので、別物と考えていたほうがいいでしょう。