
マークアップ言語は、文書の構造と書式、そして場合によってはその部分間の関係を指定するテキストエンコーディングシステムです。 [ 1 ]マークアップは、文書の表示を制御したり、自動処理を容易にするためにその内容を充実させたりすることができます。
マークアップ言語とは、文書にどのようなマークアップ情報を含めることができるか、また、人間やコンピュータプログラムによる利用を容易にするために、その情報を文書の内容とどのように組み合わせるかを規定する一連の規則のことです。この概念と用語は、紙の原稿へのマークアップ(例えば、編集者による修正指示など)から発展したもので、従来は著者の原稿に赤ペンや青鉛筆で書かれていました。[ 2 ]
一般的に組版や表示に重点を置く古いマークアップ言語には、troff、TeX、LaTeXなどがあります。ScribeやXMLなどの最新のマークアップ言語のほとんどは、ドキュメントの構成要素(見出し、段落、表など)を識別し、スタイルシートなどの技術を使用して書式設定やその他の処理を適用することを前提としています。
広く使われているHTMLなどの一部のマークアップ言語には、あらかじめ定義された表示セマンティクスがあります。つまり、仕様によって、特定のメディア上で構造化データを表示する方法のいくつかの側面が規定されています。 HTML は、DocBook、Open eBook、JATSなどと同様に、マークアップメタ言語であるXML とSGMLに基づいています。つまり、SGML と XML では、設計者が特定のスキーマを指定でき、どの要素、属性、その他の機能が許可されているか、またどこに配置できるかが決定されます。[ 3 ]
ほとんどのマークアップ言語の重要な特徴は、テキストや画像などのコンテンツとマークアップを組み合わせることができる点です。例えば、文中のいくつかの単語を強調したり、固有名詞、定義済み用語、その他の特別な項目として識別したりする必要がある場合、文の文字間にマークアップを挿入することができます。
「マークアップ」という言葉は、伝統的な出版慣習である原稿へのマークアップに由来しており、これは、紙や印刷された原稿の余白や本文に、従来の記号を用いた印刷指示の形で手書きの注釈を追加することを指します。
何世紀にもわたり、この作業は主にマークアップマン[ 4 ]またはマーカー[ 5 ]として知られる熟練したタイポグラファーによって行われ、彼らはテキストにマークアップを付けて各部分にどの書体、スタイル、サイズを適用すべきかを示し、その後、手作業または機械で組版するために原稿を他の人に渡しました。
このマークアップは、編集者、校正者、出版社、グラフィックデザイナー、そして著者自身によっても一般的に適用されており、彼らは皆、修正や変更などの箇所にマークを付けることもあった。
電子マークアップには、 1987年にJames Coombs、Allen Renear、Steven DeRoseによって[ 6 ] 、 2003年にTim Brayによって[ 7 ]明確にされた3つの一般的なカテゴリがあります。
プレゼンテーション用マークアップは、従来のワープロシステムで使用されています。文書テキストに埋め込まれたバイナリコードによって、 WYSIWYG(見たままが得られる)効果が得られます。このようなマークアップは、通常、著者や編集者を含む人間ユーザーからは見えません。これらのシステムは、内部的には手続き型マークアップと記述型マークアップを使用しますが、それらを変換して、書式設定されたテキストレイアウトとしてユーザーに表示します。
マークアップはテキストに埋め込まれており、プログラムがテキストを処理するための指示を提供します。よく知られている例としては、 troff、TeX、Markdownなどがあります。一般的に、ソフトウェアはテキストを最初から最後まで順番に処理し、遭遇した指示に従います。このようなテキストは、マークアップを表示したまま、作成者が直接操作して編集されることがよくあります。一般的な手続き型マークアップシステムには、通常、プログラミング構造、特にマクロが含まれており、複雑な一連の命令を単純な名前(および場合によってはいくつかのパラメータ)で呼び出すことができます。これは、同じまたは類似の命令を多くの場所で繰り返し記述するよりも、はるかに高速で、エラーが発生しにくく、保守が容易です。
記述的マークアップは、文書の各部分をどのように処理すべきかではなく、その部分自体が何であるかを説明するために特に使用されます。このようなラベルを多数提供する有名なシステムには、LaTeX、HTML、XMLなどがあります。目的は、文書の構造を、その特定の処理や表現から切り離すことです。このようなマークアップは、しばしばセマンティックと呼ばれます。記述的マークアップの例としては、引用<cite>にラベルを付けるために使用される HTML のタグがあります。記述的マークアップ(論理的マークアップまたは概念的マークアップと呼ばれることもあります)は、著者が視覚的ではなく概念的に資料を説明する方法で記述することを促します。[ 8 ]
マークアップの種類にはかなりの重複と同時使用が見られます。現代のワープロシステムでは、プレゼンテーション用のマークアップは、XMLなどの記述型マークアップ指向のシステムに保存され、実装によって手続き的に処理されることがよくあります。TeXなどの手続き型マークアップシステムのプログラミングは、LaTeXのような、より記述的な性質を持つ高レベルのマークアップシステムを作成するために使用できます。
近年、使いやすさを主要な目標とし、標準化団体の意見を取り入れることなく、著者がウェブブラウザを介して、例えばウィキやウェブフォーラムなどで書式設定されたテキストを作成できるようにすることを目的として、いくつかのマークアップ言語が開発されてきた。これらは軽量マークアップ言語と呼ばれることもある。Markdown、BBCode、そしてWikipediaで使用されているマークアップ言語は、そのような言語の例である。
コンピュータテキスト処理におけるマークアップ言語の最初の有名な公開プレゼンテーションは、1967年の会議でウィリアム・W・タニクリフによって行われたが、彼はそれを汎用コーディングと呼ぶことを好んだ。これは、 RUNOFFなどの処理プログラムの出現に対する対応と見なすことができ、これらのプログラムはそれぞれ独自の制御表記法を使用しており、多くの場合、対象の組版装置に固有のものであった。1970年代、タニクリフは出版業界向けのGenCodeと呼ばれる標準の開発を主導した。ブックデザイナーのスタンリー・ライスは、1970年に同様の方向性の考察を発表した。[ 9 ]
ブライアン・リードは、1980年にカーネギーメロン大学で行った博士論文の中で、実際に使用されている記述マークアップの理論と実装を開発した。しかし、マークアップ言語の発明者としては、 IBMの研究者チャールズ・ゴールドファーブの方が一般的に知られている。ゴールドファーブは、1969年に法律事務所向けの原始的な文書管理システムに取り組んでいる際に基本的なアイデアを考案し、同年後半にはIBMの汎用マークアップ言語(GML)の開発に貢献した。GMLは1973年に初めて一般に公開された。
1975年、ゴールドファーブはマサチューセッツ州ケンブリッジからシリコンバレーに移り、 IBMアルマデン研究所の製品企画担当者となった。そこで彼はIBMの幹部を説得し、1978年にIBMの文書作成機能製品の一部としてGMLを商用展開することに成功した。そして数年後には、GMLはビジネスで広く利用されるようになった。
標準一般化マークアップ言語(SGML)は、最初の標準記述マークアップ言語であり、GMLとGenCodeの両方に基づいていました。これは、当初Tunnicliffeが議長を務め、Goldfarbも1974年から携わっていた国際標準化機構(ISO)の委員会の成果でした。 [ 10 ] Goldfarbは最終的に委員会の議長になりました。SGMLは、1986年10月にISO 8879規格としてISOから初めてリリースされました。
出版業界以外で利用可能なコンピュータマークアップ言語の初期の例としては、 troff やnroffなどのUnixシステム上の組版ツールが挙げられます。これらのシステムでは、書式設定コマンドが文書テキストに挿入され、組版ソフトウェアがエディターの仕様に従ってテキストを書式設定できるようになっていました。文書を正しく印刷するには、試行錯誤を繰り返すプロセスが必要でした。 [ 11 ] WYSIWYG 出版ソフトウェアの登場により、一般ユーザーの間ではこれらの言語の使用が大幅に減少しましたが、プロの出版作業では依然としてテキストの非視覚的な構造を指定するためにマークアップが使用されており、WYSIWYG エディターは現在、通常、マークアップ言語ベースの形式で文書を保存します。
もう一つの主要な出版標準は、1970年代から1980年代にかけてドナルド・クヌースによって開発・改良されたTeXです。TeXは、数学書の組版のために、テキストとフォントの詳細なレイアウトに重点を置いています。そのため、クヌースは組版技術の研究にかなりの時間を費やしました。TeXは主に学術界で使用されており、多くの科学分野で事実上の標準となっています。TeXマクロパッケージであるLaTeXは、TeXの上に記述的なマークアップシステムを提供し、科学界と出版業界の両方で広く使用されています。
構造と表現を明確に区別した最初の言語は、ブライアン・リードによって開発され、1980年に彼の博士論文で説明されたScribeでした。[ 12 ] Scribeは、マークアップされたドキュメントから分離されたスタイルの概念と、記述要素の使用を制御する文法を導入するなど、多くの点で革新的でした。ScribeはGML、そして後にSGMLの開発に影響を与え、[ 13 ] HTMLとLaTeXの直接の祖先です。[ a ]
1980年代初頭、マークアップは文書の構造的な側面に焦点を当て、その構造の視覚的な表現はインタプリタに任せるべきだという考え方が、SGMLの誕生につながった。この言語は、ゴールドファーブが議長を務める委員会によって開発された。SGMLには、タニクリフのプロジェクトであるGenCodeをはじめとする、さまざまな情報源からのアイデアが取り入れられている。シャロン・アドラー、アンダース・ベルグルンド、ジェームズ・A・マークもSGML委員会の主要メンバーであった。
SGML は、マークアップをドキュメントに含めるための構文と、どのタグが許可され、どこに配置されるかを個別に記述するための構文 (文書型定義(DTD)、後にスキーマと呼ばれる) を規定しています。これにより、著者は、最も意味のあるタグを選択し、自身の自然言語で名前を付けて、任意のマークアップを作成して使用することができ、自動検証も可能です。したがって、SGML は厳密にはメタ言語であり、多くのマークアップ言語が SGML から派生しています。1980 年代後半以降、テキスト エンコーディング イニシアチブ(TEI) ガイドラインやDocBookなど、ほとんどの重要な新しいマークアップ言語は SGML に基づいています。SGML は 1986 年に ISO 8879 規格として公布されました。[ 14 ]
SGMLは、大規模なドキュメント作成が求められる分野で広く受け入れられ、利用されるようになりました。しかし、多くの人がSGMLを扱いにくく、習得が難しいと感じました。これは、SGMLの設計が多くのことを試み、柔軟すぎたことによる副作用です。たとえば、SGMLは、マークアップは過重労働のサポートスタッフが手動で行うことを想定しており、キーストロークを節約できることを喜ぶだろうと開発者が考えたため、特定の状況では終了タグ(または開始タグ、あるいはその両方)をオプションにしました[ 15 ]。
1989 年、コンピュータ科学者のティム・バーナーズ=リーは、インターネットベースのハイパーテキストシステムを提案するメモを書き、[ 16 ]その後 1990 年後半に HTML を仕様化し、ブラウザとサーバー ソフトウェアを作成しました。 HTML の最初の公開された説明は、「HTML タグ」と呼ばれる文書で、1991 年後半にバーナーズ=リーによってインターネット上で初めて言及されました。[ 17 ] [ 18 ]これは、HTML の初期の比較的シンプルな設計を構成する 18 個の要素について説明しています。ハイパーリンクタグを除いて、これらはCERNの内部 SGML ベースのドキュメント フォーマットであるSGMLguidの影響を強く受けており、SGML 標準のサンプル スキーマと非常によく似ています。これらの要素のうち 11 個は、HTML 4 にもまだ存在します。[ 19 ]
バーナーズ=リーは HTML を SGML アプリケーションとみなしていました。インターネット技術タスクフォース(IETF) は、1993 年半ばに HTML仕様の最初の提案である「Hypertext Markup Language (HTML)」をバーナーズ=リーとダン・コノリーによって公開し、正式にそのように定義しました。 [ 20 ]この提案には、文法を定義する SGML DTD が含まれていました。[ 21 ] HTML のテキスト要素の多くは、1988 年の ISO 技術レポートTR 9537「SGML を使用するための技術」に記載されており、これは、1960 年代初頭にCompatible Time-Sharing Systemオペレーティングシステム用に開発されたRUNOFF コマンドで使用されたものなど、初期のテキスト書式設定言語の機能を網羅しています。これらの書式設定コマンドは、植字工が手動で文書を書式設定するために使用していたものから派生したものです。スティーブン・デローズは、HTMLの記述的マークアップの使用(特にSGMLの影響)が、柔軟性と拡張性を可能にしたため、Webの成功の大きな要因であったと主張している。[ 22 ] HTMLは、Webブラウザで表示できるWebページやその他の情報を作成するための主要なマークアップ言語となり、21世紀には世界で最も使用されているマークアップ言語である可能性が高い。
XML(Extensible Markup Language)は、広く使われているメタマークアップ言語です。これは、Jon Bosak氏が作成し議長を務めた委員会で、World Wide Web Consortium (W3C)によって開発されました。XMLの主な目的は、インターネット上のドキュメントという特定のユースケースに焦点を当てることで、SGMLを簡素化することでした。[ 23 ] XMLはSGMLと同様にメタ言語であり、ユーザーが必要なタグを作成し(そのため拡張可能)、それらのタグとその使用方法を記述することができます。
XMLの普及が加速した要因の一つは、すべてのXML文書をSGML文書としても記述できるため、既存のSGMLユーザーやソフトウェアが比較的容易にXMLに移行できる点にあります。同時に、XMLはSGMLの複雑な機能を多数排除することで、文書や出版物などの実装環境を簡素化しています。シンプルさと柔軟性のバランスが取れているだけでなく、非常に堅牢なスキーマ定義と検証ツールをサポートしているため、多くの用途で急速に採用されました。現在、XMLはアプリケーション間のデータ通信、プログラムデータのシリアル化、ハードウェア通信プロトコル、ベクターグラフィックスなど、文書以外にも幅広い用途で利用されています。
2000年1月からHTML5がリリースされるまで、 HTMLに関するW3Cの勧告はすべてXMLに基づいており、XHTML(拡張ハイパーテキストマークアップ言語)が使用されていました。この言語仕様では、XHTML文書は整形式XML文書であることが求められています。これにより、従来ブラウザの意図しない動作を引き起こしていた多くの構文エラーを回避し、より厳密で堅牢な文書を作成できる一方、HTMLユーザーにとって馴染みのある文書構成要素も引き続き使用できます。
HTML と XHTML の最も顕著な違いの 1 つは、後者のルールですべてのタグが閉じなければならないことです。たとえば、空の HTML タグは、通常の終了タグで閉じるか、特別な形式に置き換える<br>必要があります(終了タグのスラッシュの前のスペースはオプションですが、一部の XML 以前の Web ブラウザや SGML パーサーがタグを受け入れることができるため、よく使用されます)。もう 1 つの違いは、タグ内のすべての属性値を引用符で囲む必要があることです。これらの違いはどちらも冗長であるとよく批判されますが、エラーの検出、特定、および修正がはるかに容易になるため、高く評価されています。最後に、XHTML 名前空間内のすべてのタグ名と属性名は、有効であるためには小文字でなければなりません。一方、HTML は大文字と小文字を区別しませんでした。<br />
RDF/XMLとしてのリソース記述フレームワーク、XForms、DocBook、SOAP、Web Ontology Language (OWL)など、XML ベースのアプリケーションは数多く存在します。これらの一部については、「XML マークアップ言語一覧」を参照してください。
多くのマークアップ言語に共通する特徴として、ドキュメントのテキストとマークアップ命令が同じデータストリームまたはファイル内に混在している点が挙げられます。しかし、これは必須ではありません。ポインタ、オフセット、ID、その他の方法を用いてマークアップとテキストを連携させることで、マークアップをテキストコンテンツから分離することも可能です。このような分離型マークアップは、プログラムがマークアップされたドキュメントを扱う際に使用する内部表現において一般的です。ただし、埋め込み型またはインライン型のマークアップは、他の場面ではより一般的です。例えば、以下はHTMLでマークアップされたテキストの短い例です。
At Mozilla, we’re a global community of
\n\nworking together to keep the Internet alive and accessible, so people worldwide can be informed contributors and creators of the Web. We believe this act of human collaboration across an open platform is essential to individual growth and our collective future.
\n\nRead the Mozilla Manifesto to learn even more about the values and principles that guide the pursuit of our mission.
\n\n