[1] [DFN[[RUBYB[[[マーク[RUBY[付][づ]]け[RUBY[言語][げんご]]][マーク付け言語]]]@en[markup language]]]]は、
[[テキスト]]に記号列 ([[マーク付け]]) を書き加えることで[[文書]]の構造や意味、
処理の方法などを記述する[[言語]]です。


* 呼称

[14] [[接尾語]] (みたいなもの) ''-ML'' は、[[マーク付け言語]]の略称の語末にあって''マーク付け言語'' (''m''arkup ''l''anguage) を表す。

;; [15] 単体で [[ML]] と言うことはありません。

* 意味

[6] 元々は文字列主体の文章を記述することが主たる目的でした。
[[平文]]に、
構造的意味や装飾を表す[[記号]]列
([[マーク]])
を付加していくような記述[[言語]]のことを、
[[マーク付け言語]]と言っていました。

[22] 
20世紀末くらいから次第に適用範囲が拡大し、
[[データ構造]]の記述方式としても一部使われるようになりました。

[2] その結果「[[マーク付け言語]]」の範囲は曖昧になっており、
そうでない[[データ形式]]や[[データ構造]]との区別は明確ではありません。

[23] 
[[SGML]] の系譜に連なるか、[[自然言語]]文に特別な意味をもたせた記号列を混在させていて[[人間]]が[[テキストエディター]]で編集することがよくあるかのいずれかの条件を満たせば[[マーク付け言語]]と認識されることが多いようです。

[24] 
ただしその条件を満たしても、[[プログラミング言語]]の系譜に連なるものは、
[[マーク付け言語]]とは言われにくい (言われるものもいくつかある) という例外があります。


* マーク付け言語の一覧

[7] [[マーク付け言語]]には、色々な種類があります。

** SGML 系

[8] [[SGML]] に由来する[[マーク付け言語]]:
[FIG(list short)[
- [[GML]]
- [[SGML]]
- [[AAP]]
- [[TEI]]
- [[DocBook]]
- [[HTML]]
- [CODE(MIME)@en[[[text/richtext]]]]
- [CODE(MIME)@en[[[text/enriched]]]]
- [[HDML]]
- [[JDCM]]
- [[松風]]
- [[XML]]
- [[MathML]]
- [[SMIL]]
- [[VML]]
- [[SVG]]
- [[SSML]]
- [[LDML]]
- [[ITS]]
- [[Predoc]]
- [[RFC 2629]]
- [[XMLSpec]]
- [[OpenDocument]]
- [[OOXML]]
- [[SmartDoc]]
- [[DITA]]
- [[Mallard]]
- [[FtanML]]
- [[GML][Geography Markup Language]]
- [[KML]]
- [[GPX]]
- [[JATS]]
- [[TTML]]
- [[LMNL]]
- [[ZenML]]
- [[TNF]]
- [[テキストタグ]]
- [[Pango Markup]]

]FIG]

;; [[SGML応用]]、[[XML応用]]も参照。

;; [20] [[HTML]] を生成する言語は、 [[HTML]] を参照。

** テキスト系

[10] テキスト系の[[マーク付け言語]]:
[FIG(short list)[
- 各種[[Wiki構文]]
- [[はてな記法]]
- [[HNF]]
- [[tdf]]
- [[H2H]]
- [[Textile]]
- [[setext]]
- [[setext-j]]
- [[xetext]]
- [[reStructuredText]]
- [[Markdown]]
- [[Pandoc]]
- [[plain2]]
- [[Grutatxt]]
- [[EtText]]
- [[AsciiDoc]]
- [[inao]]
- [[Stx]]
- [[AFT]]
- [[APT]]
- [[atx]]
- [[Scratch]]
- [[NoraMark]]
- [[注記 (青空文庫)]]
- [[Strictdown]]
- [[Slack形式]]
- [[Re:VIEW]]
- [[小説家になろう専用タグ]]
- [[カクヨム記法]]
- [[MKDoc]]
- [[イナオ編集記号]]
- [[Typetalkメッセージ書式]]
- [[Org mode]]
- [[Seam Text]]
- [[テキストファイル (LeME)]]
- [[Scrapboxの記法]]
- [[TIP]]
- [[デラング記法]]
- [[WINI]]
- [[AsciiMath]]
- [[PreTNF]]
- [[Markup language For Misskey]]
- [[Cooklang]]
- [[特殊メモ機能]]
- [[ProleText]]
- [[Simple Formatter Language]]
- [CODE[text/x-moin1.7]]
- [[メッセージ記法]]
- [[タグ・記法]]
- [[gokurai]]

]FIG]

[18] こうしたものを、[DFN[軽量マーク付け言語]]や[DFN[簡易マーク付け言語]]のように呼ぶこともあります。
明確で広く合意された定義は見出だせませんが、
[[平文]]を書くのと同じような気楽さで記述でき、
専門知識がなくてもおおよそ理解できるような[[マーク付け言語]]をそう呼んでいるようです。

[26] 「軽量」と呼んでいても、必要な機能を追加していった結果、
複雑怪奇になっていたりします。
[[SGML]] も、最初はテキストに簡単に[[マーク]]を追加していくだけと謳っていたのですから、
世が世なら「軽量」の仲間に入っていたはずです。
([[SGML]] の中でも
[[shortref]] や[[データタグ]]は[[軽量マーク付け言語]]そのものといって良いでしょう。)

[29] 
[[MediaWiki]] の構文は (特に[[ウィキペディア]]では) [[雛形]]を使いまくって複雑になっていて、
あまり「軽量」感がありません。

[34] 
[[Markdown]] の構文は記号の使い方があまり直感的でなく覚えにくいです。
技術者はちょっとした構文はすぐに覚えてしまうので麻痺して [[Markdown]]
をあちこちで使いまくってしまいますが、非技術者に使わせるにはハードルが高かったり。
でも「軽量」の代表みたいな扱いです。
(実装も真面目にやろうとするとかなり厄介な点が多いし。)

[35] 「はじめ」は「作った人」にとって「軽量」な言語も、普及するにつれ複雑になっていくんですよねえ。
どんな (普及した) 言語も通る道。そして次の「軽量」言語が生み出されるのです。

;; [36] [[マーク付け言語]]の世界における[[軽量マーク付け言語]]は、
[[プログラミング言語]]の世界における[[スクリプト言語]]のようなものかもしれません。

;; [39] [[軽量プログラミング言語]]からの連想で発生した用語なのかもしれません。

** プログラミング言語系

[9] [[TeX]] 系の[[マーク付け言語]]:
[FIG(short list)[
- [[TeX]]
- [[LaTeX]]
- [[Texinfo]]
]FIG]

[19] [[TeX]] は[[マーク付け言語]]のような性質も持っていますが、
[[チューリング完全]]な[[プログラミング言語]]でもあります。
そのためもあってか、あるいは [[SGML]] の系譜から離れているためなのか、
[[マーク付け言語]]に含めないこともあります。

[38] その他の[[マーク付け言語]]に[[プログラミング言語]]を融合させた言語:

[FIG(short list)[ 

- [[Typst]]

]FIG]


[11] [[プログラミング言語]]埋め込み系の[[マーク付け言語]]:
[FIG(short list)[
- [[pod]]
- [[RD]]
- [[RT]]
- [[Javadoc]]
- [[JSDoc]]
- [[TomDoc]]
]FIG]

[30] 
[[プログラミング言語]]の構文の一部分という位置付けのためもあるのか、
あまり[[マーク付け言語]]として意識されないかもしれません。

[13] その他の[[プログラミング言語]]風構文を持つ[[マーク付け言語]]:
[FIG(short list)[
- [[TVML]]
- [[Macrodown]]
- [[PureDoc]]
- [[Scribe]]
- [[SATySFi]]
- [[Lore]]

]FIG]

** その他

[FIG(short list)[ [37] その他の[[マーク付け言語]]
- [CITE[[[Musa]]]] のマーク付け
- [[SML][Simple Markup Language]]

]FIG]

* 文書構造慣用句

[SEE[ [[文書構造慣用句]] ]]


* メモ

[3] 言語と言っても、[[自然言語]]や[[プログラム言語]]などとは趣が異なります。これらは言語が情報の主を成すのに対して、マーク付け言語は主たる情報に印をつける従たるものなのです。多分それが違いの原因です。

[12] [[RTF]]、[[PostScript]]、[[CSV]]、[[JSON]]、[[CSS]]、[[VRML]]、[[XBM]] なども[[マーク付け言語]]と似た性質を多かれ少なかれ持っていますが、通常は[[マーク付け言語]]とはいいません。

[31] [[RTF]] は[[マーク付け言語]]と読んでも良さそうなものなのに、
普通は含めないのは、[[SGML]] の系譜から遠いからですかね。
あるいは[[手書き]]することが稀だからですかね。

[32] 
[[PostScript]] や [[PDF]] も [[TeX]] が[[マーク付け言語]]である程度には[[マーク付け言語]]の仲間なのかもしれませんが、
[[プログラミング言語]]的な性質や[[手書き]]のし難さが、
[[マーク付け言語]]と呼ばしめないのでしょう。

[33] 
[[VRML]] は [[HTML]] の影響なのかいかにも[[マーク付け言語]]だと言いたげな名前なのですけど、
[[マーク付け言語]]ではないことになってるのですよね。
実際構文も[[マーク付け言語]]というより[[データ構造]]を記述してる[[プログラミング言語]]に近い[[データ形式]]で。
でも後継の [[X3D]] は [[XML]] ベースなので、 
名目上[[マーク付け言語]]でもあるとかいう。

[4]
[CITE[Steven J. Murdoch :: Survey of general-purpose data-representation formats and markup languages]] <http://www.cl.cam.ac.uk/users/sjm217/projects/markup/survey/>

[5]
[CITE@ja[虚像残影 - 何故みんな記法を使わないのか]] ([TIME[2007-05-25 16:54:53 +09:00]] 版) <http://nyarla.nowa.jp/entry/69a867cc73>
([[名無しさん]] [WEAK[2007-05-25 07:56:06 +00:00]])

[FIG(quote)[
[16] [CITE@ja[「XML」を編集中 - Wikipedia]] ([TIME[2016-08-01 00:13:43 +09:00]]) <https://ja.wikipedia.org/wiki/XML?action=edit&veswitched=1>

>
[PRE[
[[Category:ファイルフォーマット]] <!-- 削除しないでください、Category:マークアップ言語 からたどれるのは専門家だけです、専門家のためだけのカテゴリではありません -->
<!-- [[Category:Extensible Markup Language|*]] -->
[[Category:マークアップ言語]]
]PRE]
]FIG]

[17] 「ファイルフォーマット」も「マークアップ言語」もどちらも等しく専門家にしか理解されない言葉のような気がするが。。。

[21] [CITE@ja[「小説家になろう」や「カクヨム」の相互変換するツールをつくろうかな - KDP(電子出版)のメモ 急急如律令]]
( ([TIME[2017-04-07 14:53:13 +09:00]]))
<http://99nyorituryo.hatenablog.com/entry/2016/07/21/234922>

[25] [CITE@en[Lightweight markup language - Wikipedia, the free encyclopedia]] ([TIME[2007-05-20 23:53:17 +09:00]] 版) <http://en.wikipedia.org/wiki/Lightweight_markup_language>


[27] [CITE[ANSI/NISO Z39.98-2012, Authoring and Interchange Framework for Adaptive XML Publishing Specification - Z39-98-2012_AI_Framework.pdf]], [TIME[2020-10-13T02:09:09.000Z]] <https://groups.niso.org/apps/group_public/download.php/12125/Z39-98-2012_AI_Framework.pdf>




[FIG(quote)[
[FIGCAPTION[
[28] [CITE@ja[T-Time:インデント、アウトライン]]
([TIME[2020-10-25T02:56:16.000Z]])
<https://www.voyager.co.jp/support/T-Time/t_1-3.html>
]FIGCAPTION]

>  HTMLではない普通のテキストデータの場合、段落の頭にTABを入れておくと、その段落全体が自動的にインデント表示されます。また、▲や●などの図形文字を付加することにより、テキストに階層構造をもたせることもできます。詳しくは電子マニュアルの「05)テキスト表示設定」をご参照ください。

]FIG]




[FIG(data)[ [40] [[HTML要素概説]]

:注釈:
-
[DFN[[RUBYB@ja[マーク付け言語]@en[markup language]]]]
[[計算機]]用の[[言語]]の種別の1つ。
文章データに適宜[[マーク付け]]を埋め込んだような形態のものを指すのが本来だが、
[[XML]] などが多方面で利用されるため説明が難しい。

]FIG]

