軽量マークアップ言語の特徴比較まとめ

ドキュメント記述に便利なMarkdownを代表とする軽量マークアップ言語。実はMarkdown以外にも種類があります。
この記事では代表的な軽量マークアップ言語をピックアップし特徴を比較して、自分の目的に合った言語を選びます。

マークアップ言語とは
====================

マークアップ言語とは、PCを用いた文書の作成において、組版(レイアウト)のために図表の位置や章立てなどの情報を文書ファイルに付加するための形式言語(文法、またはマークの規則)です。

元来は英語圏の出版業界において、原稿に組版情報を書き加えていく作業を`marking up`と呼んでいたことに由来するようです。[\[wikipedia-markup\]](#wikipedia-markup)

代表的なマークアップ言語には、以下のようなものがあります。

-   HTML

    ウェブブラウザ上で、意図したレイアウトで文書を表示する用途に使われている。

-   XML

    HTMLと同様にウェブブラウザで表示する文書のレイアウト指定の他に、汎用的にデータを記述する用途にも用いられている。

-   TeX

    学術分野における論文などの図表や数式を含む印刷物を、意図したレイアウトで出力・印刷するために使われている。

軽量マークアップ言語とは
========================

上記のマークアップ言語は、角カッコ`< >`でタグを記述するなどして目的のレイアウトを得ます。

しかしその結果、マークアップ言語で記述された文書ファイルは、そのままの状態では人間にとって余計な装飾が多いために内容が即座に理解しづらく、可読性が低いと言えます。(`WYSIWYG: What You See Is What You Get`[\[wysiwyg\]](#wysiwyg)
ではない、と言える)

また、さまざまなタグ記述の規則を学ぶために少なくない時間が必要です。(学習コストが高い)

そこで、人間がテキストエディタ(例えばWindowsのメモ帳)で開いたときにも内容が見やすく、基本的な機能に絞ることで学習コストを抑え簡単に記述できることを目的とし、**軽量マークアップ言語**が設計されました。[\[wikipedia-lml\]](#wikipedia-lml)

代表的な軽量マークアップ言語には以下のものがあります。

-   Markdown

-   Textile

-   reStructuredText (reST)

-   AsciiDoc

軽量マークアップ言語はマーク規則と共に、マークからレイアウトを解析(`parse`パース)しHTMLやXMLなどのマークアップ言語に変換するソフトウェアである、**パーサー(`parser`):
構文解析器**が用意されています。

軽量マークアップ言語で記述されたテキストファイルは、もちろんそのままの状態でも可読性が高いと言えますが、最終的にはパーサーを使用しHTML等に変換し、ウェブブラウザ等で開くことで目的のレイアウトが表示されるようになります。

つまり、軽量マークアップ言語とそのパーサーを使用すれば、HTMLを直接記述するよりも簡単にウェブブラウザ表示用の文書を記述することができます。
そのため、これら軽量マークアップ言語はGitHubなどのWebサイトで開発者がREADMEファイルなどを記述したり、Wikiのようなサイトで記事を投稿・編集するために広く用いられるようになりました。

軽量マークアップ言語で記述されたテキストファイルの拡張子について、いずれの言語でも厳密な規定はありません。テキストエディタではどの拡張子でも開くことはできますし、パーサーはどの拡張子であれ渡されたファイルがそのパーサー用の言語で記述されているものとして解析します。つまり、単に`.txt`であってもファイルとしての機能は失われません。しかし、そのテキストファイルがどの軽量マークアップ言語で記述されているかを明確に示すために、特定の拡張子を付記することは強く推奨されます。

要求する機能
============

上記の通り、軽量マークアップ言語には複数の種類があります。

これから自分用にノウハウや情報をまとめた文書を軽量マークアップ言語で書いていこうと思っています。そこで、代表的な軽量マークアップ言語を下記の観点から比較し、自分に合った言語を選びます。

-   学習コストが低いか

-   統一された規格が存在するか

-   複雑な表を作れるか

-   数式が表現可能か

-   "Note"や"Tips"などのブロック要素を入れられるか

-   更新日の自動記録機能があるか

-   VSCodeで構文強調とプレビューが可能か

-   Obsidianで利用可能か

-   QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか

-   他の言語への変換機能があるか

-   メモ帳で開いても内容が読みやすいか

比較結果
========

<table>
<caption>まとめ</caption>
<colgroup>
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
<col style="width: 20%" />
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>Markdown</th>
<th>Textile</th>
<th>reStructuredText</th>
<th>AsciiDoc</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>学習コストが低いか</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
</tr>
<tr class="even">
<td><p>統一された規格が存在するか</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="odd">
<td><p>複雑な表を描けるか</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="even">
<td><p>数式が表現可能か</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="odd">
<td><p>"Note"や"Tips"などのブロック要素を入れられるか</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="even">
<td><p>更新日の自動記録機能があるか</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
</tr>
<tr class="odd">
<td><p>VSCodeで構文強調とプレビューが可能か</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="even">
<td><p>Obsidianで利用可能か</p></td>
<td><p>〇</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
</tr>
<tr class="odd">
<td><p>QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか</p></td>
<td><p>〇</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
<td><p>×</p></td>
</tr>
<tr class="even">
<td><p>他の軽量マークアップ言語への変換機能があるか</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
<tr class="odd">
<td><p>メモ帳で開いても内容が読みやすいか</p></td>
<td><p>〇</p></td>
<td><p>×</p></td>
<td><p>〇</p></td>
<td><p>〇</p></td>
</tr>
</tbody>
</table>

各言語の詳細
============

Markdown
--------

<table>
<caption>Markdownの詳細</caption>
<colgroup>
<col style="width: 33%" />
<col style="width: 66%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p>拡張子</p></td>
<td><p>最も一般的な拡張子は<code>.md</code>です。 他に、<code>.markdown</code>, <code>.mdown</code>, <code>.mkd</code>, <code>.mdwn</code>, <code>.mdtxt</code>, <code>.mdtext</code>の場合もあります。</p></td>
</tr>
<tr class="even">
<td><p>パーサーの開発言語</p></td>
<td><p>最初のパーサーである<code>Markdown.pl</code>はPerlで書かれています。しかし、多様な方言実装にあわせてユーザーがPythonなどで独自のパーサーを実装したりしています。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>Markdownの比較結果</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 12%" />
<col style="width: 62%" />
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>結果</th>
<th>詳細</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>学習コストが低いか</p></td>
<td><p>はい</p></td>
<td><p>軽量マークアップ言語の中でも簡単な機能に絞られており、マークも直感的に理解しやすいため、学習コストは低いと言えます。</p></td>
</tr>
<tr class="even">
<td><p>統一された規格が存在するか</p></td>
<td><p>いいえ</p></td>
<td><p>現在Markdownに統一化された規格は存在しません。</p>
<p>MarkdownはGitHubをはじめとする様々なWebサイトで投稿記述に使用可能ですが、Markdownの初期の実装は基礎的な機能しか無かったため、その後サイト毎に独自の文法(方言)が追加され使用されています。これは即ちパーサーが複数あることも意味します。</p>
<p>最も有名な方言は<code>GitHub Flavored Markdown (GFM)</code>です。</p>
<p>こうした文法が分裂した状況を鑑みて、統一したMarkdownの仕様を決定しようという試みが<code>CommonMark</code>です。しかし、機能が限られていることと、更新が活発ではないことから、各種WebサイトはCommonMarkに対応するものの、サイト独自の構文を追加で使用することを前提としています。</p></td>
</tr>
<tr class="odd">
<td><p>複雑な表を作れるか</p></td>
<td><p>いいえ</p></td>
<td><p>Markdownではセルを結合するような複雑な表は描けません。</p></td>
</tr>
<tr class="even">
<td><p>数式が表現可能か</p></td>
<td><p>いいえ</p></td>
<td><p>Markdownには数式をレンダリングする機能はありません。</p></td>
</tr>
<tr class="odd">
<td><p>"Note"や"Tips"などのブロック要素を入れられるか</p></td>
<td><p>いいえ</p></td>
<td><p>CommonMarkにはコードブロックと引用以外の、<code>Caution</code>や<code>Warning</code>などのブロック要素はありません。</p>
<p>Webサービスによっては独自の構文として実装されている場合がありますが、他のサービスと互換性が無い点に注意が必要です。</p></td>
</tr>
<tr class="even">
<td><p>更新日の自動記録機能があるか</p></td>
<td><p>いいえ</p></td>
<td><p>ありません。</p></td>
</tr>
<tr class="odd">
<td><p>VSCodeで構文強調とプレビューが可能か</p></td>
<td><p>はい</p></td>
<td><p>各種のサードパーティー製の拡張機能が必要です。</p></td>
</tr>
<tr class="even">
<td><p>Obsidianで利用可能か</p></td>
<td><p>はい</p></td>
<td><p>Obsidianのデフォルトの記述言語とされています。</p></td>
</tr>
<tr class="odd">
<td><p>QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか</p></td>
<td><p>はい</p></td>
<td><p>しかし、殆どのサイトが独自の構文を導入していることに注意が必要です。場合によっては変換が必要なことがあります。</p></td>
</tr>
<tr class="even">
<td><p>他の言語への変換機能があるか</p></td>
<td><p>はい</p></td>
<td><p>Markdownは基本的な文法しかないため、<code>Pandoc</code>を使用し他の軽量マークアップ言語やマークアップ言語に変換可能です。</p></td>
</tr>
<tr class="odd">
<td><p>メモ帳で開いても内容が読みやすいか</p></td>
<td><p>はい</p></td>
<td><p>Markdownはシンプルな構文のため、パーサーを通さずメモ帳で開いても可読性が高いと言えます。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>Markdownの各種Webサイト</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="header">
<th>サイトの種類</th>
<th>リンク</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>公式サイト</p></td>
<td><p><a href="https://daringfireball.net/projects/markdown/">Daring Fireball: Markdown</a></p>
<p>CommonMark: <a href="https://commonmark.org/">CommonMark</a></p></td>
</tr>
<tr class="even">
<td><p>文法リファレンス</p></td>
<td><p><a href="https://daringfireball.net/projects/markdown/syntax">Daring Fireball: Markdown Syntax Documentation</a></p>
<p>CommonMark: <a href="https://spec.commonmark.org/">CommonMark Spec</a></p>
<p>CommonMark日本語訳: <a href="https://commonmark-ja.readthedocs.io/ja/latest/">CommonMark-ja — CommonMark ドキュメント</a></p>
<p>GitHub Flavored Markdown: <a href="https://github.github.com/gfm/">GitHub Flavored Markdown Spec</a> または <a href="https://docs.github.com/ja/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/quickstart-for-writing-on-github">GitHub 上での書き込みに関するクイックスタート - GitHub Docs</a></p></td>
</tr>
<tr class="odd">
<td><p>パーサーのリポジトリ</p></td>
<td><p><a href="https://daringfireball.net/projects/markdown/">Daring Fireball: Markdown</a></p>
<p>CommonMark: <a href="https://github.com/commonmark">CommonMark - GitHubリポジトリ</a></p></td>
</tr>
</tbody>
</table>

Textile
-------

<table>
<caption>Textileの詳細</caption>
<colgroup>
<col style="width: 33%" />
<col style="width: 66%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p>拡張子</p></td>
<td><p>最も一般的なものは<code>.textile</code>です。他に<code>.tt</code>の場合もあります。</p></td>
</tr>
<tr class="even">
<td><p>パーサーの開発言語</p></td>
<td><p>PHP</p></td>
</tr>
</tbody>
</table>

<table>
<caption>Textileの比較結果</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 12%" />
<col style="width: 62%" />
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>結果</th>
<th>詳細</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>学習コストが低いか</p></td>
<td><p>はい</p></td>
<td><p>軽量マークアップ言語の中でも簡単な機能に絞られており、マークも直感的に理解しやすいため、学習コストは低いと言えます。</p></td>
</tr>
<tr class="even">
<td><p>統一された規格が存在するか</p></td>
<td><p>はい</p></td>
<td><p><a href="https://textile-lang.com/">Textile Markup Language Documentation</a> に示された単一の実装しか存在しません。</p></td>
</tr>
<tr class="odd">
<td><p>複雑な表を作れるか</p></td>
<td><p>いいえ</p></td>
<td><p>単純な表しか描けません。</p></td>
</tr>
<tr class="even">
<td><p>数式が表現可能か</p></td>
<td><p>いいえ</p></td>
<td><p>数式をレンダリングする機能はありません。</p></td>
</tr>
<tr class="odd">
<td><p>"Note"や"Tips"などのブロック要素を入れられるか</p></td>
<td><p>いいえ</p></td>
<td><p>コードブロックや引用以外のブロック要素はありません。</p></td>
</tr>
<tr class="even">
<td><p>更新日の自動記録機能があるか</p></td>
<td><p>いいえ</p></td>
<td><p>ありません。</p></td>
</tr>
<tr class="odd">
<td><p>VSCodeで構文強調とプレビューが可能か</p></td>
<td><p>はい</p></td>
<td><p>サードパーティー製の拡張機能をインストールする必要があります。</p></td>
</tr>
<tr class="even">
<td><p>Obsidianで利用可能か</p></td>
<td><p>いいえ</p></td>
<td><p>Textileファイルを整形可能なプラグインは開発されていません。</p></td>
</tr>
<tr class="odd">
<td><p>QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか</p></td>
<td><p>いいえ</p></td>
<td><p>Redmineでは標準で対応していますが、その他多くのサイトではMarkdownなどへの変換が必要です。</p></td>
</tr>
<tr class="even">
<td><p>他の言語への変換機能があるか</p></td>
<td><p>はい</p></td>
<td><p><code>PanDoc</code>を使用しMarkdownへの変換が可能ですが、GFM固有の表記には対応していません。</p></td>
</tr>
<tr class="odd">
<td><p>メモ帳で開いても内容が読みやすいか</p></td>
<td><p>いいえ</p></td>
<td><p>構文は簡単であるものの、HTMLタグを簡略化したような表記を採用しています(見出しは <code>h. ～</code>など)。そのため、メモ帳で開いた際の可読性はMarkdownよりは劣ります。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>Textileの各種Webサイト</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="header">
<th>サイトの種類</th>
<th>リンク</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>公式サイト</p></td>
<td><p><a href="https://textile-lang.com/">Textile Markup Language Documentation</a></p></td>
</tr>
<tr class="even">
<td><p>文法リファレンス</p></td>
<td><p><a href="https://textile-lang.com/">Textile Markup Language Documentation</a></p></td>
</tr>
<tr class="odd">
<td><p>パーサーのリポジトリ</p></td>
<td><p><a href="https://github.com/textile">Textile</a></p></td>
</tr>
</tbody>
</table>

reStructuredText (reST)
-----------------------

<table>
<caption>reStructuredTextの詳細</caption>
<colgroup>
<col style="width: 33%" />
<col style="width: 66%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p>拡張子</p></td>
<td><p>推奨される拡張子は<code>.rst</code>です。他に<code>.rest</code>、<code>.txt</code>の場合もあります。</p></td>
</tr>
<tr class="even">
<td><p>パーサーの開発言語</p></td>
<td><p>パーサーである<code>Docutils</code>はPythonで記述されています。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>reStructuredTextの比較結果</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 12%" />
<col style="width: 62%" />
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>結果</th>
<th>詳細</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>学習コストが低いか</p></td>
<td><p>いいえ</p></td>
<td><p>改行の使い方などに細かな規則があります。また、<code>-, +</code>などの記号を駆使し、視覚的に記入する必要がある構文があります。</p></td>
</tr>
<tr class="even">
<td><p>統一された規格が存在するか</p></td>
<td><p>はい</p></td>
<td><p>reStructuredTextは、HTMLやXMLなどの文書を生成するためのPythonライブラリである<code>Docutils</code>で使用する言語として設計されています。従って、<code>Docutils</code>が定める仕様が唯一の仕様です。</p></td>
</tr>
<tr class="odd">
<td><p>複雑な表を作れるか</p></td>
<td><p>はい</p></td>
<td><p>セルの結合などを駆使した複雑な表を描けます。しかしその場合は<code>-, +</code>などの記号を駆使し視覚的に入力する必要があります。</p></td>
</tr>
<tr class="even">
<td><p>数式が表現可能か</p></td>
<td><p>はい</p></td>
<td><p><code>Docutils</code>には数式をパースする機能はありませんが、<code>Docutils</code>をベースとした<strong>ドキュメントジェネレータ</strong>である<code>Sphinx</code>には、TeX構文で書かれた数式をパースする機能が追加されています。</p></td>
</tr>
<tr class="odd">
<td><p>"Note"や"Tips"などのブロック要素を入れられるか</p></td>
<td><p>はい</p></td>
<td><p><code>注釈</code>や<code>ちなみに</code>、<code>警告</code>などのブロック要素を入れられます。</p></td>
</tr>
<tr class="even">
<td><p>更新日の自動記録機能があるか</p></td>
<td><p>いいえ</p></td>
<td><p>ありません。</p></td>
</tr>
<tr class="odd">
<td><p>VSCodeで構文強調とプレビューが可能か</p></td>
<td><p>はい</p></td>
<td><p>LeXtudio社というサードパーティー社製の拡張機能のインストールが必要です。</p></td>
</tr>
<tr class="even">
<td><p>Obsidianで利用可能か</p></td>
<td><p>いいえ</p></td>
<td><p>reSTをパース可能な拡張機能は提供されていません。</p></td>
</tr>
<tr class="odd">
<td><p>QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか</p></td>
<td><p>いいえ</p></td>
<td><p>そのままでは対応しておらず、目的のレイアウトを得るにはMarkdownなどへの変換が必要です。</p></td>
</tr>
<tr class="even">
<td><p>他の言語への変換機能があるか</p></td>
<td><p>はい</p></td>
<td><p><code>Pandoc</code>を使用しreSTからMarkdownへの変換が可能です。</p></td>
</tr>
<tr class="odd">
<td><p>メモ帳で開いても内容が読みやすいか</p></td>
<td><p>はい</p></td>
<td><p>軽量マークアップ言語の中では最もテキストエディタで開いたときの可読性が高いように設計されています。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>reStructuredTextの各種Webサイト</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="header">
<th>サイトの種類</th>
<th>リンク</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>公式サイト</p></td>
<td><p><a href="https://docutils.sourceforge.io/rst.html">reStructuredText</a></p></td>
</tr>
<tr class="even">
<td><p>文法リファレンス</p></td>
<td><p><a href="https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html">reStructuredText Markup Specification</a></p>
<p>Sphinxサイトにおける日本語訳: <a href="https://www.sphinx-doc.org/ja/master/usage/restructuredtext/index.html">reStructuredText — Sphinx documentation</a></p></td>
</tr>
<tr class="odd">
<td><p>パーサーのリポジトリ</p></td>
<td><p><a href="https://docutils.sourceforge.io/">Docutils: Documentation Utilities</a></p>
<p>Docutilを使用したドキュメントジェネレータである<strong>Sphinx</strong>については <a href="https://www.sphinx-doc.org/ja/master/">ようこそ! — Sphinx documentation</a></p>
<p>日本のSphinxユーザーコミュニティ: <a href="https://sphinx-users.jp/">Sphinx-Users.jp — Python製ドキュメンテーションビルダー、Sphinxの日本ユーザ会</a></p></td>
</tr>
</tbody>
</table>

AsciiDoc
--------

<table>
<caption>AsciiDocの詳細</caption>
<colgroup>
<col style="width: 33%" />
<col style="width: 66%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p>拡張子</p></td>
<td><p>最もよく用いられるものは<code>.adoc</code>です。他に<code>.asciidoc</code>、<code>.txt</code>が挙げられます。</p></td>
</tr>
<tr class="even">
<td><p>パーサーの開発言語</p></td>
<td><p>オリジナルであるAsciidoctorはRubyで開発されています。他にJavaで書かれたAsciidoctorJや、JavaScriptで書かれたAsciidoctor.jsがあります。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>AsciiDocの比較結果</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 12%" />
<col style="width: 62%" />
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>結果</th>
<th>詳細</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>学習コストが低いか</p></td>
<td><p>いいえ</p></td>
<td><p>機能が多いため、Markdownより学習に時間を要します。しかし、reST程の細かな文法規則はありません。</p></td>
</tr>
<tr class="even">
<td><p>統一された規格が存在するか</p></td>
<td><p>はい</p></td>
<td><p>Eclipse Foundationによって標準化作業が行われており、<code>AsciiDoc</code>という名称自体もEclipse Foundation, Inc.の商標となっています。</p></td>
</tr>
<tr class="odd">
<td><p>複雑な表を作れるか</p></td>
<td><p>はい</p></td>
<td><p>セルの結合や、列幅の指定、表タイトルの付加などが可能です。</p></td>
</tr>
<tr class="even">
<td><p>数式が表現可能か</p></td>
<td><p>はい</p></td>
<td><p>LaTeX、またはAsciiMath構文をインライン要素またはブロック要素として記入することで、パーサーによってレンダリングされた数式を表示できます。</p></td>
</tr>
<tr class="odd">
<td><p>"Note"や"Tips"などのブロック要素を入れられるか</p></td>
<td><p>はい</p></td>
<td><p><code>NOTE</code>や<code>TIP</code>の他に、<code>CAUTION</code>、<code>WARNING</code>などがあります。文法リファレンスには<code>CAUTION</code>と<code>WARNING</code>の使い分けに関する指針が書かれています。</p></td>
</tr>
<tr class="even">
<td><p>更新日の自動記録機能があるか</p></td>
<td><p>はい</p></td>
<td><p>パーサーによってレンダリングされたドキュメントには自動でフッターとして<code>Last updated YYYY-MM-DD hh:mm:ss +TZ</code>の形式で編集日時が記入されます。</p></td>
</tr>
<tr class="odd">
<td><p>VSCodeで構文強調とプレビューが可能か</p></td>
<td><p>はい</p></td>
<td><p>asciidoctor.orgによる公式の拡張機能をインストールする必要があります。</p></td>
</tr>
<tr class="even">
<td><p>Obsidianで利用可能か</p></td>
<td><p>はい</p></td>
<td><p>そのままの状態では対応していませんが、ユーザーが作成したプラグインをインストールすることで表などをパースして表示できます。</p>
<p><a href="https://github.com/juracy/obsidian-asciidoc-blocks">juracy/obsidian-asciidoc-blocks: A plugin to render asciidoc blocks in Obsidian, initially asciidoc tables</a></p>
<p>しかし、あくまでもサードパーティー製のプラグインによるものであり、サポートされているわけではありません。</p></td>
</tr>
<tr class="odd">
<td><p>QittaやNoteなどのWeb投稿サイトへそのまま投稿できるか</p></td>
<td><p>いいえ</p></td>
<td><p>そのままの状態では対応しておらず、一度Markdownなどへ変換してから投稿する必要があります。</p></td>
</tr>
<tr class="even">
<td><p>他の言語への変換機能があるか</p></td>
<td><p>はい</p></td>
<td><p>他の軽量マークアップ言語で使用できた<code>Pandoc</code>は、AsciiDocファイルを出力することができるものの、入力することはできません。そのため、XMLやDocBook形式を介し変換する方法が使われています。<a href="#adoc_to_md">[adoc_to_md]</a> <a href="#adoc_to_md_2">[adoc_to_md_2]</a> <a href="#adoc_to_md_qiita">[adoc_to_md_qiita]</a></p>
<p>また、Markdownへの変換が可能なソフトウェアがユーザーによって開発されています。 <a href="#downdoc">[downdoc]</a></p></td>
</tr>
<tr class="odd">
<td><p>メモ帳で開いても内容が読みやすいか</p></td>
<td><p>はい</p></td>
<td><p>多くの機能がありますが、長い文章でマークを記入する必要などは無いので、メモ帳で開いた際の可読性も保たれていると言えます。</p></td>
</tr>
</tbody>
</table>

<table>
<caption>AsciiDocの各種Webサイト</caption>
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="header">
<th>サイトの種類</th>
<th>リンク</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>公式サイト</p></td>
<td><p><a href="https://asciidoc.org/">AsciiDoc</a></p></td>
</tr>
<tr class="even">
<td><p>文法リファレンス</p></td>
<td><p><a href="https://docs.asciidoctor.org/">Asciidoctor Documentation Site</a></p>
<p>日本語訳: <a href="https://takumon.github.io/asciidoc-syntax-quick-reference-japanese-translation/">Asciidoctor 文法クイックリファレンス(日本語訳)</a> または <a href="https://docs.netapp.com/ja-jp/contribute/asciidoc_syntax.html">AsciiDoc リファレンス</a></p></td>
</tr>
<tr class="odd">
<td><p>パーサーのリポジトリ</p></td>
<td><p><a href="https://asciidoctor.org/">Asciidoctor A fast, open source text processor and publishing toolchain for converting AsciiDoc content to HTML5, DocBook, PDF, and other formats.</a></p></td>
</tr>
</tbody>
</table>

結論
====

多くのサイトで対応している、いわばデファクトスタンダードとなっている軽量マークアップ言語はMarkdownであると言えるでしょう。GitHubやGitLabなどでリポジトリを共有する場合は、MarkdownでREADMEやCHANGELOGを記述すると、サービスとの親和性も高いと思われます。

しかし、Markdownは規格化されておらず、対応しているサイトもそれぞれ独自の実装を持っている点に注意が必要です。GitHubで用いられているGFMは多くのサイトでも対応していますが、サイトにより異なるパーサーが用いられ、表示が異なったりします。

また、Markdownは基本的な構文しか持たないため、最適なレイアウトを得るためにサイト独自の方言に頼らざるをえない面が多くあります。

従って、自分用のマニュアル・Wikiを作るという目的のためには、学習コストを低く保ちつつ、より高機能な軽量マークアップ言語を検討していく必要があります。

候補に挙がるのはreStructuredTextとAsciiDocです。

どちらもMarkdownより高機能で、規格化された文法を持っていますが、reStructuredTextは表の構文などでやや手間のかかる記述が必要で、学習コスト・記述コストが比較的高いと言えます。

結果として、機能が豊富であり、かつ学習コストが抑えられるという点から、AsciiDocが一番の選択肢となりました。

AsciiDocを選択する上で留意すべき点は、Markdownなどの他の軽量マークアップ言語へ変換する方法が限られる、または、やや手間がかかるということです。このことから、QiitaやZennなどで公開するための記事を記述する用途としては不向きであると言えます。

引用文献
========

[マークアップ言語 -
Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E)

[軽量マークアップ言語 -
Wikipedia](https://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E)

[WYSIWYG - Wikipedia](https://ja.wikipedia.org/wiki/WYSIWYG)

[How to convert asciidoc to Markdown |
CodeAhoy](https://codeahoy.com/q/q502/How-to-convert-asciidoc-to-Markdown)

[asciidoc to markdown -
Qiita](https://qiita.com/yumechi/items/4124576d21e7242b878f)

[Converting AsciiDoc to Markdown – Keep
Kalm](https://karinavarela.me/2020/05/06/converting-asciidoc-to-markdown/)

[opendevise/downdoc: Rapidly converts AsciiDoc to
Markdown.](https://github.com/opendevise/downdoc)