SGML で定義されたマークアップ言語がオックスフォード英語辞典 の電子版を記述するのに利用されている。これによって、HTML への変換が容易となるだけでなく、高度なクエリ の実行が可能となる。
マークアップ言語 (マークアップげんご、英 : markup language )とは、組版 指定 に用いられるデータ記述言語 のことである[ 1] [ 2] 。視覚表現や文章構造などを記述することができる。
マークアップ言語はテキストファイル であることが多いが、バイナリデータ による形式もある。
英語 の「markup 」という語は、英語圏 の出版 業界において著者 、編集者 、印刷者 の間で指示を伝える方法を意味していた(#語源 を参照)。
特徴
マークアップ言語には様々なものがあるが、ここでは例としてHTMLにおける短い節を示す。
< h1 > ガンカモ科</ h1 >
< p >
ガンカモ科にはカモ、ガン、ハクチョウが含まれるが、
それらは< em > 非常に近い種であるというわけではない</ em > 。
</ p >
HTMLでは、山括弧 で囲ったタグ により、要素 をマークアップする。要素 の頭部と尾部にあるものがタグ である。つまり、タグ で囲まれた全体が要素 である(タグ も含む)。このHTMLの例では、h1 という第1レベルの見出し (headline) の要素があり、それに引き続いて1段落の文章が含まれているp要素(paragraph = 段落)がある。
分類
HTMLの変遷などの結果意識されるようになった、Web業界などにおけるマークアップ言語に対する理解として、3つに分類するものがある。視覚マークアップ、手続きマークアップ、意味マークアップである。
視覚マークアップ
視覚マークアップ とはテキスト中の「手掛かり」から文書構造を推論しようという試みである。例えば、テキストファイルでは文書のタイトルの前にいくつか改行 を入れたり、スペース を空けたりすることがあり、これらはレイアウトなどの視覚表現を暗示している。ワードプロセッサ 、デスクトップパブリッシング ソフト、いくつかのテキストエディタ にはその種の慣習から構造を推論するものがある。
手続きマークアップ
視覚マークアップが暗黙的であったのに対し、手続きマークアップ は明示的に視覚表現の命令(ディレクティブ )を記述する。処理系はこの命令をファイル中の出現順に解釈する。例えば、タイトル文の直前に「中央揃えモードに移る」「文字サイズを大きくする」「書体 をボールド にする」などの命令を記述し、タイトル文の後にそれらの命令の終了を記述する、といったものである。手続きマークアップの処理系の例としては、nroff・troff ・Te X ・Lout がある。
意味マークアップ
手続きマークアップは特定の視覚表現を実現する処理上の命令を付与するものであるが、意味マークアップ はテキストの断片に印を付けていくものである。例えば、ウェブサイト の更新情報を記述するための Atom という言語には updated
タイムスタンプ を印すマークアップがあり、情報項目が最後にいつ更新されたのかを発行者が表明するのに使われる。Atom の規格では updated
の意味するものについて論じており、そのマークアップ形式についても規定されているが、それがユーザに対してどのように表示されるのか、またそもそも表示されるべきなのかについては何の規定もない。このマークアップは処理系ごとに様々な用途に使われ、その中には Atom 言語の設計者たちが予想もしなかったものが多く含まれるだろう。SGMLとXMLは意味マークアップ言語の設計を支援するために設計された仕様(メタ言語 )である。
以上は概念的な分類であって、実際にはどのシステムでも別種のマークアップが共存している。例えばHTMLでは、純粋な手続きマークアップ(ボールドのための B
など)と純粋な意味マークアップ(BLOCKQUOTE
や href
属性など)が共存している。HTMLにはさらに PRE
要素があり、視覚マークアップの領域を囲んで、テキストをタイプしたとおりに表示させることもできる。
マークアップ要素とその使用に関する規則は通例、特定の企業やコミュニティごとの様々な種類の文書に対応するため、標準化団体 によって開発される。最初期の例としては CALS があり、アメリカ軍 で技術マニュアルに利用されていた。すぐに大規模文書を管理する必要のある企業がこれに続きだし、航空機、電気通信、自動車、コンピュータハードウェアのマニュアル用のタグ群が開発された。これはこの種のマニュアルの多くが電子的に配布されるきっかけとなり、企業は1つの(意味マークアップによる)オリジナルから印刷物、オンライン、CD版などを作り出すことができた。特筆すべき例は、サン・マイクロシステムズ であり、ジョン・ボサック (英語版 ) がSGMLを複数媒体向けの文書配布に採用し、大幅なコスト削減を達成したことである。
現在では多くのマークアップ言語が存在する。よく知られたものでも DocBook ・MathML ・SVG ・Open eBook ・TEI ・XBRL などがある。多くはテキストのためのものだが、その他の用途で使われる専門化された言語もある。
汎用マークアップ とは意味マークアップの別名である。現在のほとんどの意味マークアップシステムは文書を木構造 に構造化する。また同時に、文書の一部分を文書内の他の箇所から参照する(クロス・リファレンス)手段を提供している。構造化によって、ソフトウェア が文書構造を(BLOB ではないものとして)把握することができ、文書はデータベース として扱うことが可能になる。関係データベース が持っているような厳格なスキーマ を持たないので、「半構造化データベース 」と呼ばれる。
2000年 を過ぎたころから、木構造以外の文書構造に関する大きな関心が現れてきた。例えば、古代の宗教文学では文献構造(本・章・節・文)以外にも、修辞構造 や散文 構造が広く用いられる(ストーリー ・引用章句 ・段落 など)。これらの文書単位は文中でたびたび交差するので、簡単には木構造のマークアップシステムでデータ化することはできない。このような構造をサポートする文書モデリングシステムにはMECS [ 注釈 1] 、TEI Guidelines の一部やLMNL ・CLIX などがある。
意味マークアップの第一の長所はその自由度だとみなされている。テキストの断片が「どのように表示されるべきか」ではなく「何であるか」と印されていたなら、その言語の設計者が予想もしていなかった便利な用途でその断片を処理する処理系が作られるかもしれない。例を挙げると、HTMLのハイパーリンク は、元々、リンクをたどる人の手で利用されるために設計されたが、検索エンジン によって、インデックスするべき新しいリソースを発見するため、またウェブ上のリソースの人気を測るためにも利用されている。
意味マークアップはまた、文書の視覚表現の変更を効率化する。例えば、イタリック (斜体 )の表現を「強調」あるいは「外国語」の意図を示すために使うとする。両方とも単に表示方法の命令でイタリックとマークアップすると、両者の意図の違いが記録されず、区別が困難になる。後に外国語をイタリックにしない視覚表現に変更しようとすると、全てのイタリック部分をひとつずつ人間が判断して選り分ける作業が必要になる。しかし意味マークアップでは両者を区別してマークアップするので、視覚表現の変更が容易になる。
歴史
語源
「マークアップ」[ 注釈 2] という用語は、英語圏で伝統的な出版の作業過程である原稿 の「マーキング・アップ」[ 注釈 3] という作業から派生した。「marking up 」とは、原稿用紙の余白に印刷に関する指示の記号を書き加えることである。「マークアップ・マン」[ 注釈 4] や校正者と呼ばれる専門家が、文章の各部分にどんなスタイル、書体 、サイズを適用すべきかなどを記して組版の担当者に原稿を渡すという作業が、何世紀にもわたって行われていた(校正記号についての詳細は「校正 」の項目にある)。
英語のmarkup に対応する印刷用語は、組版指定 であり、書体・文字サイズ・行数・行間・字数・字送りなど,組体裁を定めるうえで必要となる情報を指定することである[ 3] 。英語では、電子組版、コンピュータ 上での組版へと移行してもmarkupが用語としてそのまま使われている。
初期
マークアップ言語のアイデアは、1967年 のある会議で、アメリカ出版界の大物であったウィリアム・W・タニクリフ (英語版 ) によって「汎用符号」[ 注釈 5] という名で、おそらく最初に発表された[ 4] 。彼はその後にGenCode ( ジェンコード ) と呼ばれる標準仕様の策定において出版業界で中心的な役割を果たしたとされる。1960年代 末に、本のデザイナーであったスタンレイ・フィッシュ[ 注釈 6] もまた類似したアイデアを発表している。ブライアン・リード (英語版 ) は、1980年 にカーネギーメロン大学 の学位論文において、実用となる意味マークアップシステムの理論と実装を開発した。
しかしながら、IBM の研究者であるチャールズ・ゴールドファーブ (英語版 ) が現在では広く「マークアップ言語の父」として知られている。ゴールドファーブはGML の開発で大きな役割を果たし、そして、初めて広く使われた意味マークアップシステムであるSGMLを開発したISO の委員会で議長を務めた。ゴールドファーブは、正確な日付は記録にないが、新聞のワークフロー の電算化に関する初期のプロジェクトで働いているときに、その基本的なアイデアを思いついた。後にタニクリフとフィッシュの発表を知り、またリードの話をその初期に聞いたことで、彼の興味にさらに火が付くこととなった。
roff
出版業界の外部で利用可能な初期のマークアップ言語の例にはUNIX 上の組版ソフトウェアであるroffがある。これらのシステムでは書式指定命令は文書のテキストの中に挿入され、組版処理系はその指定に従ってテキストフォーマットし出力する。その後WYSIWYG ( ウィズィウィグ ) を実現したDTPソフトウェアが登場したが、それらはバッチ処理などには不向きといったことから、引き続きroffが使用された分野もある。
TeX
TeXのロゴ
出版におけるもう1つの主要な標準はTe X である。Te X はドナルド・クヌース が開発し、1970年代 から1980年代 にかけて継続的に改良した。Te Xは数学書を業務品質で組むためのテキストやフォント に関する綿密なレイアウト機能を目標としている。この目標のため、クヌースはかなりの時間を組版技術の調査に費やした。主に学術分野で使われ、理数系の出版物・論文などの多くではデファクトスタンダード となっている。Te X のマクロパッケージであるLa Te X はTe X 上で意味マークアップシステムを構築しており、広く用いられている。
SGML
構造と視覚表現を明確に区別した最初の言語はブライアン・リードが開発し、1980年に彼の博士論文で述べているScribe ( スクライブ ) であった[ 5] 。Scribe は多くの点で画期的であり、マークアップされた文書からスタイルを分離するというアイデアだけではなく、意味要素の使用を統制する文法 (一種のスキーマ)をも持っていた。Scribe はGML(後のSGML)の開発に影響を与え、またHTMLやLa Te X の直接の祖先ともなった。
1980年代の初期に、マークアップは文書の構造面に専念し、視覚的な表現に関しては処理系に任せるべきだ、という思想によってSGML が誕生した。この言語はゴールドファーブが議長を務める委員会によって策定され、複数の研究・プロジェクト(GenCode など)から成果を取り込んでいた。シャロン・アドラー[ 注釈 7] やアンデルス・ベルクルント[ 注釈 8] 、ジェームズ・D・メイソン[ 注釈 9] も委員会の主要メンバーであった。
SGMLは文書にマークアップを含める構文や、どんなタグがどこで使えるのかなどを記述する構文(DTD )を規定していた。これによって、文書作成者は望むマークアップを、最も意図に近いものや母語で名前が付いているものなど、何でも作成し、利用することができた。それゆえ、SGMLは正しくはメタ言語であり、多くの具体的なマークアップ言語がそれから派生していった。1980年代から現在に至るまで、ほとんどの新しいマークアップ言語はSGMLに基づいたものであった。TEI やDocBook などがその例である。SGMLは1986年 にISO 8879として国際標準になった。
SGMLは非常に大きな規模の文書を扱う現場で広く受け入れられ、利用された。しかしながら、一般的には覚えるのが煩わしくて難しいとみなされている。これは多彩すぎる機能と高すぎる柔軟性を実現した副作用である。複雑な仕様の例として、SGMLでは終了タグ(または開始タグかその両方)が文脈によって省略可能となっているが、これは過労気味の入力作業員がマークアップを手動で行うような場合にキーストロークの節約が望まれている、との配慮によるものである。
HTML
HTMLのソースコード例
1991年 になると、SGMLが商用のデータベース用途にしか使われない傾向が強くなってきた。一方、(文書をプロプライエタリなバイナリフォーマットで保存する)WYSIWYG ツールがその他の文書処理 用途では受け入れられていた。
この状況が変化したのは、欧州原子核研究機構 に在籍していたティム・バーナーズ=リー が同僚のアンデルス・ベルクルントたちからSGMLの存在を知り、SGMLの構文を使ってHTML を作ったときである。HTMLは他のSGMLベースのタグ言語とよく似ているが、よりシンプルなものとして誕生し、当初は形式的なDTDを持っていなかった。スティーブン・J・デローズ[ 注釈 10] はHTMLによる意味マークアップの使用が、ウェブに柔軟性と拡張性をもたらし、その成功の有力な要因となったと主張している[ 6] (その他の要因にはハイパーリンクの概念やブラウザ の無料配布などがある)。
しかしながら、HTMLがマークアップ言語であるという事実については異論を唱える研究者もいる。その異論とは、HTMLはタグの配置を制限しており、タグに他のタグの内に入れ子になることと文書のルートタグになることの両方を要求している、というものである。このため、そのような研究者たちはHTMLは階層型データモデル に従う「コンテナ言語」ではないかと述べている。
XML
もうひとつの、現在広く利用されているマークアップ言語はXML である。XMLはW3C の、ジョン・ボサックが立ち上げ、議長を務めた委員会によって開発された。XMLの主目的は対象をインターネット 上の文書に特化することで、SGMLを単純化したサブセットを作ることである[ 7] 。XMLはSGMLと同じようにメタ言語である。また、利用者が必要な要素を追加したり、名前空間を使って複合文書 を作ったりして拡張することが容易にできる。
名前空間などを用いないXML文書はSGML文書でもあるため、XMLへの乗り換えはそれほど困難でなく、既存のSGMLの利用者およびソフトウェアは比較的容易にXMLに移行することができた。XMLはSGMLの多くのより複雑な機能を省いており、学習や実装を容易にしている。他の改良点には、多言語環境でのSGMLの問題点を修正したことや、スキーマがない文書でも利用を可能にしたことなどがある。
XMLはそもそも文書や出版物などの半構造データのために設計されたものである。しかしながら、その単純さと柔軟性のバランスの良さから、他の用途でも急速に受け入れられていった。例えば、アプリケーション間でデータ をやりとりするために利用されたり、アプリケーションの設定ファイルの構造として利用されたりもしている。
XHTML
2000年の1月から、HTMLについてのすべてのW3C勧告は、SGMLではなくXMLに基づいたものになり、XML で HTML と等価のマークアップができる XHTML [ 注釈 11] が制定された。
HTMLとXHTMLとの違いで顕著なもののひとつは、すべてのタグを閉じなければならないことである。<br>
のような「空の」HTMLタグは「閉じる」必要がある。XHTML 1.0 勧告内の「Appendix 」の章にある「HTML Compatibility Guidelines 」[ 8] では、<br />
のように要素名の後に空白文字と斜線を入れて閉じる形を推奨している。ほかには、開始タグ内の属性値はすべて引用符で囲わなければならないという点がある。また、HTMLとは異なり、大文字と小文字は厳密に区別される。
他の用途での利用
マークアップ言語のアイデアはテキスト文書に関するものとして生まれたが、ベクターグラフィックス 、ウェブ・サービス 、ウェブシンディケーション 、セマンティック・ウェブ 、ユーザーインタフェース などの分野での利用も増えている。これらのほとんどはXMLのアプリケーションである。XMLを使用することで、複数のマークアップ言語を合成することが可能となる。例としては、XHTML+SMIL やXHTML+MathML+SVG がある。
脚注
注釈
^ ウィトゲンシュタイン の作品を電子化するために開発された。
^ 英 : markup
^ 英 : marking up
^ 英 : markup men
^ 英 : generic coding
^ 英 : Stanley Fish
^ 英 : Sharon Adler
^ スウェーデン語 : Anders Berglund
^ 英 : James D. Mason
^ 英 : Steven J. DeRose
^ 「Ex tensible H ypert ext M arkup L anguage 」の略。
出典
関連項目
外部リンク