コンテンツにスキップ

データ記述言語

出典: フリー百科事典『ウィキペディア(Wikipedia)』

データ記述言語(データきじゅつげんご、英: Data Description Language、略称: DDL)とは、コンピュータにおいて扱うデータの構造やスキーマを定義するための形式言語である[1]コンピュータ言語の一種だが、プログラミング言語ではない。国際的な学術・実務の文脈では主にデータベースのスキーマ定義を指す用語であるが [1]、日本においては、マークアップ言語(XMLなど)やデータシリアライゼーション言語(JSONYAMLなど)を包括する便宜的な総称として扱われる[2]

背景

[編集]

計算機科学の歴史において、「Data Description Language」という用語が登場したのはCODASYLの取り組みにおいてであり、COBOLなどのプログラミング言語からデータの物理的および論理的な構造定義を分離することが目的であった[1]。その後、RDBMSとSQLが台頭すると、スキーマを定義するためのSQLのサブセットが、データ定義言語Data Definition Language)と呼ばれるようになり、両者はいずれもデータベースのスキーマを定義する同義語、あるいは関連する系譜として扱われてきた[3]

しかし、1990年代以降のインターネットの普及と分散コンピューティングの発展により、データ管理の主眼は「データを定義・保存すること」から「異なるシステム間でデータを交換すること」へと急速に移行していった。

リレーショナルデータベース(RDBMS)は平坦な表形式のデータを管理することには優れていたが、アプリケーション間で通信される「深い木構造」や「オブジェクト指向に基づいた複雑な階層」をもつデータをそのまま表現し、転送することには不向きであった。また、日本ではこの時期に登場したXMLなどのマークアップ言語に対しても、本来のデータベーススキーマ定義という文脈から切り離されたまま、便宜的に「データ記述言語」という和訳が当てはめられ用いられるようになった。

このデータ記述言語は、以下の点に主眼を置いて作られた。

  1. 複雑なデータ構造の格納について
  2. データの記述・アクセス方法の共通化
  3. テキスト形式でのデータ保持について

複雑なデータ構造の格納について

[編集]

単純に列挙できるデータや、グループごとに見出しを付けられる程度のデータであれば、OSやアプリケーションの設定ファイル(Windowsiniファイルなど)のような旧来のテキストファイルで十分対応できる。しかし、深い木構造や反復要素、順序に意味がある要素などが複雑に絡み合う複雑なデータとなると、単純な列挙では表現しきれない。従来は、このような複雑なデータに対してアプリケーションごとに独自のフォーマットを設計して対処してきたが、それが次項の課題を引き起こす原因となっていた。

データの記述・アクセス方法の共通化について

[編集]

従来は、システムやアプリケーションごとに多様なデータフォーマットが乱立していた。そのため、開発者はソフトごとに専用の読み書きプログラムを作成せねばならず、データ自体の汎用性も損なわれていた。しかし、インターネットの普及に伴い、データ交換が不可欠な分野を中心に、データフォーマットやアクセス方法を標準化するニーズが急速に高まった。

テキスト形式でのデータ保持について

[編集]

データファイルには、ファイルサイズを抑えられるバイナリ形式も古くから広く用いられてきた。ストレージが乏しかった時代にはごく一般的であり、現在でもサイズが重視される圧縮データなどでは必須の形式である。しかし、バイナリ形式は人が直接読み書きするのが困難であるため、データ記述言語では可読性に優れる「テキスト形式」を採用するのが一般的となっている。 一方でテキスト形式を扱う場合、アプリケーション側には、文字列から適切なデータ型への変換や、可読性向上のために存在する不要な情報(空白や改行など)を読み飛ばすための高度な構文解析器(パーサー)が不可欠となる。扱うデータが多様化するほどパーサーは複雑化し、設計が悪ければ処理時間の増大を招くという課題も持ち合わせている。

日本における分類

[編集]

日本においては、データ記述言語はマークアップ言語(XMLなど)とデータシリアライゼーション言語(JSONYAMLなど)に分類される[2]

マークアップ言語

[編集]

マークアップ言語の起源は出版業界において原稿のテキスト構造やレイアウト指定を編集者が記号で注釈していた作業に由来し、プレーンテキストの中にタグというメタ情報を埋め込み、テキストに意味や論理的構造を持たせるドキュメントセントリックなアプローチを採る[4]XMLはその木構造の柔軟性から、2000年代初頭のSOAPによるWebサービスなどにおいてシステム間でデータを交換するためのシリアライゼーションフォーマットとして転用された歴史がある[5]。このことから、日本において、XMLはデータ記述言語の一つとして分類される[2]

データシリアライゼーション言語

[編集]

文書の構造化と修飾に焦点をあてたマークアップ言語に対し、データ構造の表現に焦点をあてたデータシリアライゼーション言語が生み出された。

JSONは2001年に提唱され、JavaScriptのオブジェクトリテラル記法から派生した軽量のテキストベース・データ交換フォーマットである[6]。その仕様はRFC 8259およびECMA-404として厳密に標準化されている[7]。 JSONは「名前と値のペアの集まり」と「値の順序付きリスト」という普遍的なデータ構造を基盤として設計されている[7]。サポートされるデータ型は文字列、数値、オブジェクト、配列、真偽値、Null値の6つに限定されており、コメント機能が存在しないなどの制約がある一方で、パース処理のオーバーヘッドが極めて低く、機械間のデータ交換に最適化されている[6]

YAMLはJSONの弱点であった可読性の問題を解決したデータシリアライゼーション言語である[8]。2YAMLはインデントを用いてデータの階層構造を表現し、ネイティブなコメント機能や、アンカーとエイリアスによるデータの再利用機能(DRY原則)を備えている[8]。これにより、KubernetesのマニフェストやAnsibleなど、Infrastructure as Codeの領域において事実上の標準としての地位を確立している[8]

呼称の問題

[編集]

国際的な学術や実務の文脈において、「データ記述言語(Data Description Language)」と「データ定義言語(Data Definition Language)」はデータベースのスキーマを定義するための同義語、あるいは密接に関連する系譜として扱われている。一方、日本においては、「データ記述言語」と「データ定義言語」は別のもの指す。「データ記述言語」は上述の通り、マークアップ言語やデータシリアライゼーション言語を指し、「データ定義言語」は、SQLにおけるデータへの命令群を指す[9]

脚注

[編集]
  1. 1 2 3 Catalog Record: CODASYL data description language”. HathiTrust Digital Library. 2026年7月13日閲覧。
  2. 1 2 3 独立行政法人情報処理推進機構. 基本情報技術者試験 (レベル2) - シラバス (PDF) (Report). 2026年7月13日閲覧.
  3. Db2 for i SQL: データ定義言語 (DDL)”. IBM. 2026年7月13日閲覧。
  4. XML (Extensible Markup Language)”. Library of Congress. 2026年7月13日閲覧。
  5. The World Wide Web Consortium Issues XML 1.0 as a W3C Recommendation”. W3C. 2026年7月13日閲覧。
  6. 1 2 RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format”. IETF. 2026年7月13日閲覧。
  7. 1 2 The JSON Data Interchange Syntax”. TC39. 2026年7月13日閲覧。
  8. 1 2 3 What is YAML: Understanding the Basics”. GitLab. 2026年7月13日閲覧。
  9. SQLとは?データベース言語の基本をわかりやすく解説します!”. BOLD. 2026年7月13日閲覧。

関連項目

[編集]