データ記述言語
データ記述言語(データきじゅつげんご)またはデータ言語とは、コンピュータにおいて扱うデータを記述するための形式言語である。コンピュータ言語の一種だが、プログラミング言語ではない。HTMLに代表されるマークアップ言語などがある。
プログラミング言語との違い
[編集]データ記述言語は、基本的にはプログラミング言語ではない[1]。ただし、一部にはプログラミング言語のような機能を持つものもある。 データ記述言語の1つであるHTMLの場合、初期にはドキュメントの構造のみを格納するマークアップ言語であったが、その後の仕様拡張で他のスクリプト言語も内包するようになった(用語の問題であるが、この意味では画像など、WWWないしHTTPで扱うものは全て「内包している」と主張できそうに思われる)。ただし、HTML自体はスクリプト言語のコードもデータの1つとして扱い、それをどのように処理するかはWebブラウザなどのアプリケーションに委ねられる。その意味では、HTMLは純粋なデータ格納の言語である。なお、携帯電話などの情報機器向けに作成されたHDMLのようにプログラミング言語的な機能を含むよう設計されているものもある。
データ記述言語登場の背景
[編集]データ記述言語は、以下の点に主眼を置いて作られた。
- 複雑なデータ構造をもつデータを格納する。
- データの記述方法や個々のデータ要素へのアクセス方法の共通化をはかる。
- データをテキスト形式で格納する。
1 については、例えば、テキスト文字で表現可能で単純に並列に列挙されるデータであれば、あえてデータ記述言語を用いず、単純なテキストファイルを使用することで対応できる。このようなデータがいくつかのグループに分類され、各グループが並列に列挙されている場合でも、グループ毎に見出しを付ける工夫をすることで対応できる。このような形式は、アプリケーションやOSの設定ファイル(例えば、Windowsのiniファイル)などで古くから多用されてきた。
しかし、データ構造が複雑になり、深い木構造をもっていたり、繰り返し現れる要素があったり、要素の現れる順番が意味をもっていたり、さらにこれらが複雑に組み合わさったりすると、単純な列挙の記述では間に合わなくなる。このような複雑なデータでは、従来は、アプリケーションが個別に特殊な表記方法やデータのフォーマットを工夫することにより対処してきたが、それによって 2 の問題が生じた。
2 については、従来、データを格納する方法はシステムやアプリケーションによってばらばらで、さまざまなフォーマットが乱立していた。プログラム開発者はデータを読み書きするプログラムを個々のソフトに合わせてその都度作成せねばならず、また、データファイル自体も特殊な形式をもっているために汎用性が失われる問題が生じていた。インターネットの普及とともに、特にデータの交換が必須な分野でデータファイルのフォーマットや個々のデータへのアクセス方法を統一する必要性が生じた。
3 については、従来のデータファイルではバイナリ形式と呼ばれる方法も多用されていた。これは数値を文字によって記述するのではなく、そのまま値としてファイルに書き込む方法である。バイナリ形式は、同じデータならばテキスト形式に比べて少ないファイルサイズでデータを格納できる利点があり、コンピュータの補助記憶装置の資源が乏しい時代にはごく普通に用いられた。バイナリ形式のデータは現在でも多くのアプリケーションで用いられており、特にデータサイズが重要な意味をもつ圧縮データでは必須となっている。しかし、バイナリ形式は、そのままでは可読性が低く、生のデータを人が読み書きするのが困難であるという欠点をもっている。このため、データ記述言語ではテキスト形式を用いているのが一般的である。一方、データを利用するアプリケーション側は、読み取ったテキストから適切なデータ型に変換したり、可読性を向上させるためだけに存在する、本質的でない情報を読み飛ばすなどの処理が不可欠であり、バイナリデータよりも高度な構文解析器(パーサー)が要求される。扱うデータの種類が増えれば増えるほどパーサーが複雑化し、設計が悪ければデータの処理に時間がかかる。
脚注
[編集]- ^ 理論的には、コンピュータ・プログラムもまた一種のデータであるから、「プログラムをデータ記述言語で記述したもの」だと主張できなくもない。同様に主張してしまえば、なんでもかんでも「データ記述言語だ」と主張できてしまうので何の意味も無いが[独自研究?]。