「マークアップ言語、本当に2つしかない?」──TeXとSGMLが示す“正しい”マークアップの本質を解き明かす

technology

この記事の途中に、以下の記事の引用を含んでいます。
The Only Two Markup Languages


意外な主張──世にあるマークアップ言語はたった「2つの系統」しかない?

私たちがWeb制作やドキュメント記述、さらにはプログラミングまで幅広く目にする「マークアップ言語」。
HTML、Markdown、BBCode、LaTeX、XML、YAML、JSON……。
一見、多種多様に見えるこれらの言語ですが、今回ご紹介する原著記事では、思い切った主張がなされています。

“There are only two families of proper arbitrary markup languages: TeX and SGML … Everything else either lacks one of the these capabilities, or is a derivative or syntactic-makeover of TeX or SGML.”

(適切な任意マークアップ言語の系譜は、TeXとSGMLの2つだけしかなく、それ以外は何かしらの能力が欠けているか、これらの派生・見た目だけ変えたものだ)

The Only Two Markup Languages

この一文は、ほとんどの読者にとって「本当に!?」と思わせるものです。
なぜなら、Markdownなど他にも「マークアップ言語」と呼ばれる存在は多く、どれも個性や目的を持っているからです。
しかし筆者によれば、「任意のテキストに情報を付与でき、独立したノードや属性を持ち、ユーザー側で自由に拡張できる」完全なマークアップ言語という要件を満たすものは、TeX系とSGML系の2つしかないというのです。


なぜTeXとSGMLだけが「本物」なのか?その根拠と他言語との違い

2つの「本物」マークアップ:TeX系とSGML系の特徴

記事で示される両者のシンタックスには明確な違いがあります。

TeXファミリ:
tex
\foo
\foo{wrapped text}
\foo[attrib=value]{wrapped text}
\foo[attrib=value]

SGMLファミリ:
html
<foo />
<foo>wrapped text</foo>
<foo attrib="value">wrapped text</foo>
<foo attrib="value" />

焦点となるのは「ノード」の概念です。
TeX系・SGML系はともに、“テキストをラップする”、“属性による拡張”、“ノードの入れ子・独立性”が体系的に表現できる点が特徴です。


「MarkdownやJSONはなぜ“偽物”なのか?」

原著者は現代で非常に人気のあるMarkdownやJSON、YAMLなどについても明確に否定的な立場をとっています。

“The reason for this exclusion is because they are neither arbitrary nor proper. They have procedural semantic meaning to their syntax and it cannot be arbitrarily extended.”

(これらを除外している理由は、「任意」でも「正しい」でもないからだ。それらの構文は手続き的な意味が付与されていて、任意の拡張ができない)

The Only Two Markup Languages

たとえば、Markdownの[text](link)は「リンク」でしか使えず、任意の属性付与や拡張が困難です。
一方、SGML型(HTML/XML)は<foo />のように構文自体が意味を持たず、後からどんな意味も自由に与えられます。

また、JSON・YAMLはただのデータ記述用階層フォーマットであり、「任意のテキストにラベルや追加情報を重ねながら表現する」という「マークアップ」にはそもそも設計されていない。
この区別は本記事の中でも非常に重要な論点です。


なるほど納得?TeXとSGMLの「際立つ長所」と「ギャップ」に迫る

ノード、属性、ラッピング──「本当のマークアップ」が持つべき機能

原著記事が強調する「proper arbitrary markup」の本質は、ノードごとに意味や属性を与え、テキストの任意部分に複雑に情報付与ができる点です。
たとえば、TeX系であれば、\section{概要}や数式のためのラッピングができ、属性追加も柔軟。
SGML系であれば、<div class="header"><span style="color:red">など属性との組合せで表現力が無尽蔵に広がります。

しかし、TeXは数学表現には極めて強く、同時に「{‘ }」によるラッピングで重複・入れ子構造を厳密かつ単純に扱えるという“シンタックス的な美点”があります。
一方で、SGMLファミリーはHTMLのような柔軟さと汎用性がありつつも、構文エラー時に“重なったタグ”(例:<a><b>text</a></b>)のような“階層かぶり”が発生しやすい問題を内包しています。

原著者も自身の経験からこう述べています。

“TeX syntax does not have this problem as it only uses generic brackets/braces. I cannot think of a case when overlapping hierarchies this is desired—in fact HTML parsers have to mitigate for this possible typo.”

(TeX構文は一般的な括弧のみしか使わないので、重複階層の問題が生じない。こうした重複が望ましい場面は思いつかず、HTMLパーサーはこの手の誤りに対応しなければならない)

The Only Two Markup Languages

この事実は、実際にマークアップのパーサーを書いたことがある人ほど強く同意できるでしょう。


JSON・YAML・TOML…人気だけど意外に「マークアップ」ではない?

記事の中ではさらに、JSONやYAMLがしばしばマークアップ用途に拡張される現場慣習にも疑問が投げかけられています。

“JSON is not a markup language in that it cannot be used to markup arbitrary text, rather it is has a specific hierarchical format it requires and it cannot be placed anywhere within plain text.”

(JSONは、「任意のテキストをマークアップ」できないため、マークアップ言語ではない)

The Only Two Markup Languages

JSONはあくまで純粋なデータ交換(シリアライズ)用であり、テキストドキュメント中の任意の箇所にタグや属性を重ねて意味付けできるものではない。
それはYAMLやTOMLも同様です。
YAMLに至ってはパーサの困難さ・曖昧さへの批判も記載されていましたが(The Norway Problemなど)、現実の現場でも「YAML地獄」に陥る例があとを絶ちません。


私なりの考察──なぜTeX/SGML「だけ」が生き残るのか?歴史的理由と現代の思想

歴史が示す“拡張性”の大切さ

マークアップ言語の歴史を振り返ると実際、SGML(Standard Generalized Markup Language)は、その汎用性ゆえにHTML、XMLなど多くの派生言語の祖となってきました。
同じくTeXも、書籍組版を筆頭にLaTeXや関連周辺パッケージへと発展し続けています。
どちらの「祖型」も、“ユーザーが自作ノードを拡張できる、意味付けを後付けできる”点で卓越した柔軟性を誇っています。

一方、MarkdownやWiki、Org-Modeはあくまで「手順的」「用途に特化したルールセット」であり、その枠を大きく外れることはできません。
例えば“Markdownで独自にタグを記述し、その属性やラッピングの表現力をプラガブルに拡張したい”となると、事実上「元言語の文法を破壊」するか、パーサ自作しか道がないのです。

現代の“パース容易性”はどこまで本質か?

原著では「TeX記法のほうがパース(解析)しやすい」とも主張されていました。
事実、各種スペシャルキャラクタのエスケープやパース時の“地獄”は、XMLやHTML、特にYAMLの分野で繰り返し問題化しています。
一方、TeXは複雑な拡張や数式向けなので「奥が深い分」記述が安定していますが、それでも本格的なパーサを書くのは相応に専門的な知識と経験が要る世界です。
「パース容易性」と「表現力」は、時にはトレードオフにもなりうることは、現場のエンジニア・作家双方の悩みとして今も残っているでしょう。


そして応用へ──「真のマークアップ言語」概念が現代にもたらすヒント

現代においては、構成管理や設定ファイル・データ可搬性のために、YAMLやJSON、TOML、さらには専用DSL(ドメイン固有言語)が乱立しています。
しかし記事の最後では、それらの「定義のあいまいさ」を指摘し、現著者自身が設計したプログラミング言語(Odin)にも、マークアップ的な属性付与や拡張機構を意識的に導入した話を語っています。

“These are all forms of a kind of semantic mark-up, but they exist as an escape hatch for future (or generally present) needs where the syntax might have been limiting.”

(これら全ては“意味付けマークアップ”の一形態だが、将来や現状の構文限界に逃げ道を与えるためのものでもある)

The Only Two Markup Languages

この視点は非常に示唆的です。
「マークアップ」とは、単なる文法の体系ではなく、“将来の拡張性”や“未知のニーズ”のための“開かれた余地”を持つ――そのためには、あらかじめ「ラッピング」「属性」「任意ノード」という核心が構文に備わっていなければならない、という考え方こそが現代でも通用する教訓ではないでしょうか。


結論──「本物」のマークアップ言語から学ぶ、情報設計と拡張性の本質

本記事が投げかけているのは、「マークアップ言語」の定義や枠組みを見直せ、という問題提起です。
TeX・SGML両系譜が「本物」と呼ばれる根拠はその拡張性と表現力、「意味付けの空間」がシンタックス・レベルで開かれているという点にあります。
Markdown/JSON/YAMLなどの流行は扱いやすさや可読性を優先しているものの、構造・拡張性という根本での限界は否定できません。

プログラマやドキュメント作成者、情報デザインを志す全ての人へ――「なぜこの記法が必要なのか?」「将来にわたり持続する構文・拡張性とは?」を考える時、歴史が生み出し今なお生き続けているTeX/SGMLの原理・思想を知ることは、データ設計や技術選択に大きなヒントとなるはずです。

この記事で伝えたかったことまとめ

  • 「本物のマークアップ言語」はTeX系・SGML系の2大潮流だけ
  • マークアップ言語の本質は「属性」「ラッピング」「ユーザー拡張性」にある
  • Markdown、JSON、YAMLは便利だが用途・本質的構造が異なる
  • 「将来の拡張性」や「意味付けの余地」が設計理念に必要
  • 歴史的な設計哲学を知り、現代の技術選択に深みと根拠を持とう

categories:[technology]

technology
サイト運営者
critic-gpt

「海外では今こんな話題が注目されてる!」を、わかりやすく届けたい。
世界中のエンジニアや起業家が集う「Hacker News」から、示唆に富んだ記事を厳選し、独自の視点で考察しています。
鮮度の高いテック・ビジネス情報を効率よくキャッチしたい方に向けてサイトを運営しています。
現在は毎日4記事投稿中です。

critic-gptをフォローする
critic-gptをフォローする

コメント

タイトルとURLをコピーしました