clock2015.01.20 09:10
SERVICE
home

第2回・テキストデータ処理における取り決め|CSV、XML、JSON…データフォーマットの変遷について考える

AUTHOR :  岩谷 和男

beaconデータ処理には共通的な取り決めがある

前回はデータフォーマットの変遷を振り返っていく上で、取り上げるデータの概要を説明しました。今回はそれらの変遷や特徴を考える上で前提として知っておいたほうがよい「データを処理する際の共通的な取り決め」について説明します。「取り決め」とは「世界的に定められた規約」であったり「各データに個別に定められた仕様」であったりします。この取り決めを把握しておくことがデータ処理には必須となります。

ここで前回の記事で例として挙げたデータを再掲します。

順位 氏名 本数
1 王貞治 868
2 野村克也 657
3 門田博光 567
4 山本浩二 536
5 清原和博 525

※出展:日本プロ野球機構オフィシャルサイト・歴代最高記録 本塁打 【通算記録】より

データ処理は「入力データ→プログラム→出力データ」という流れで行いますが、この処理には以下のような取り決めがあります。

6つの取り決め

① データ構造

これはもっとも代表的な取り決めです。上記のデータの場合、

  • 1人目のデータを格納しているのはどの場所か?2人目のデータを格納しているのはどの場所か?
  • 1人分のデータの中で、順位を格納しているのはどの部分か?同様に氏名は?ホームラン数は?それぞれどの場所に格納されているか?

これらがあらかじめ取り決められていることが必要になります。

さて、ここで質問です。前回紹介したデータフォーマット(フラット・CSV・XML・JSON)について、この取り決めを定めている(=持っている)のは誰でしょうか?入力データでしょうか?プログラムでしょうか?ちょっと想像してみてください。答えは次回以降、各々のフォーマットについての説明の中で一緒に考えていきたいと思います。

② 項目の最大データサイズ

例えば人の名前に関しては、法律上の制限が明文化されていないため落語「寿限無(じゅげむ)」にあるような「寿限無寿限無五劫の擦り切れ…(以下略)」のような長い名前が入力される可能性があります。このような項目データとして扱えるデータに関しても前もって取り決めが必要です。このルールを持っているのは誰でしょうか?

③ レコードの最大データサイズ

今回、順位に関しては日本のプロ野球選手の数が限られているので、気にする必要はないのですが、これが「地球人約70億人の体重ランキング」のような膨大なレコード数のデータの場合はどうでしょうか?やはり取り決めが必要なようです。この取り決めを定めているのは誰でしょうか?

④ 文字コード

文字コードとは、コンピュータ上で文字を扱うにあたっての表現を定めた世界的な規約です。文字コードの種類(ルール)には、いくつかの種類があります。今の日本で使用されている代表的な文字コードにはShift-JISやUTF-8があります。

例えば私の名前(岩谷)の「岩」をコンピュータ上であらわすと、Shift-JISでは、「1000101011100010」というコンピュータ上での表現になります。対してUTF-8では「111001011011001010101001」という表現になります。まったく違う表現結果になりましたね。

この文字コードに関しても取り決めがなされていないと処理ができません。そのテキストデータがどの文字コードでデータを表現しているのか?この取り決めを誰かが持っています。誰なのでしょう?

⑤ エスケープ文字

エスケープ文字とは、テキストファイルフォーマット上の取り決めで、「テキストファイルの処理ルールの中には、特殊な意味を持つ文字が決められているのだけれど、その意味を無効化する文字」の事です。例えば「このファイルのフォーマットは、CSVフォーマットで項目デリミタはタブ文字です。」というファイルがあった場合、「じゃあタブ文字そのものがデータの中に含まれている場合、そのタブ文字はどのように表現すればいいのか?」というケースの処理に関しての取り決めです。

⑥ 処理速度

上記の5つの取り決めに関しては「データをどのように処理するか?」という取り決めであったわけですが、ここで忘れたくないのが「いかに早く処理を行うか?」という着目点です。「時間的制約に関する取り決め」とも言えるかもしれません。最近はコンピュータの性能が向上したので、意識することが少なくなったのですが、どのデータフォーマットを選択するかによって処理速度は増減します。

以上、6つの取り決めを説明しました。これで前回紹介したデータフォーマットの変遷を考えていくために必要な前提知識が揃いました。

実は、「データフォーマットの違い」とは、「上記6つの取り決めそれぞれに関して、それぞれをトレードオフしながら効率的に処理を行っていく」ための答えであったりするのです。

では、次回は各々のデータフォーマットについての特徴を、今回の取り決めに照らし合わせながら詳細に説明していきます。

本連載について

 

 

SERVICE