自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

軽量マークアップおさらい

adventar.org

軽量マークアップ言語の用語とマークアップ言語の用語の区別はしていませんので悪しからず。 多くの人はHTMLにおいてよく触れるワードもあるので必要性は薄い気もしますが。 今日はお茶濁しです。

独自というか今後記事で触れる普遍的でない要素もこの記事で書きます。あるいは書き足します。

メタデータ

記事中では、タイトルや著者名といったものを含む、それぞれのドキュメントに必ず必要ではないものをメタデータとします。 これ以外の要素は、凡そインラインとブロックに分類できます。

ブロック

この区切りの後には改行が入るような構造、というのが一番ふわっっとした解釈でしょうか。 何らかの「まとまり」で表わされるような要素を格納します。他の要素

生ブロック

内部に他のインライン・ブロックを持てないブロックです。所謂verbatim。 これ自体のスタイルをいじるのは別のレイヤの話です。

インライン

改行が入らないやつ(ry

文(ライン)中で使われるので「インライン」ですね。 軽量マークアップの多くはインラインは他のインライン・ブロックを許容しない作りのことが 多いのではないでしょうか。

生インライン

所謂verb

オプション

ブロック・インラインの要素についての補足。属性の付与といった補助的な要素。

Headings(見出し)

ブロックとすべきかインラインとすべきかは構成によるでしょう。

まあ見出しとしか書きようがない。Sectioningとの比較としては、これは「見出し」そのものです。 意味マークアップ的にはそのSectionの内容を端的に表す文字列といったところでしょうか。 多くの(軽量)マークアップ言語では、見出し要素のある箇所によってSectionが区切られるので 混同することがあるかもしれません。それこそHTML5が分かりやすく、sectionタグとh1タグは別ですね。

Sectioning

「節」は意味マークアップ的には同じトピックについてまとめたさらに細かいマークアップの塊のブロックですね。 Headingsとこれが明示的に分かれていると、「はじめに」「おわりに」を使わなくても どの程度の深度のトピックについて話しているか(戻ってきたか)が分かりやすくなりますが、 マークアップ言語以外だと実はあんまり恩恵がないのかもしれない。

Table

忌まわしきテーブル。テーブルが悪いのではなく、人類がテーブルマークアップに 向いていないし、あとブラウザと当時のHTMLが貧弱だったためにテーブルレイアウトというものが 生まれてしまったのがいけない。

複雑なテーブルはそもそもの構成を見直すべきという説もありますが、 表現力自体は維持したいマークアップ言語実装者の大きな壁。

リスト

スニペットをListとキャプションしたりするので紛らわしいですが、箇条書き系統のことです。

マークアップ記号について

マークアップ記号、特にその接頭はは文書中に登場しない、あるいは出現頻度が少ない記号であることが期待されるのは 多分自然でしょう。かつ、できるだけ統一性があると記憶とパースがしやすくなりますね。 そして、自由度の高い文書を作るマークアップのために、使用に制限や制約がかかる記号は少なければ少ない程良いです。

SGMLの系譜は<``> </ですね。\TeX{}\``{``}といっていいでしょう。多分。

しかし、もっと様々な記号を使った方が人間がパースするときに見易いだろうというのは皆経験したことでしょう。 更に、厳格なマークアップは、マークアップに使うタグなどが文書の本文よりも多いような状況になり 可読性が落ちますね。

軽量マークアップ言語の登場の背景の一因として今挙げたものが考えられます。 より多言語のための抽象化みたいな話はおいておいて、 この考え方に則ると、軽量マークアップ言語はマークアップ言語のSDLドメイン特化言語)として捉えることができます。 このへんに関する議論は後日土台を書き直すので今はインターネット読み物としてスルーしてください。

上の方で挙げた、ブロックとインライン、これらは同じ記号で記述するより別に表記した方が人間の目には優しそうですね。

他にも、頻出する構造に関して短縮記法があると便利ですね。

このバランスが難しいところで、人が覚えてすぐ使えるフレーズというのはあまり多くないことを考慮しなければなりません。

以前の参加レポート記事で、

CAS-UBがMarkdownに対して敗北したというアンテナハウス社の方の発言がありましたが、

X(HT)MLを何とか簡易にしようという思想で生まれたであろう*1CAS-UBは 記法が多すぎてそもそもの学習コストが高いというのがあります。1対1対応で全てのショートハンドを用意すると、全ての書き方を覚えなければならないということですね。

更に脱線しますが、

Markdownマークアップではない」

という話がありました。

ここで広義の約物(Punctuation)について考えてみましょう。 日本語であれば、句読点 「``」といったもの。文章を読み易くするために使う記号ですね。これらはプレーンテキストの文章に含まれます。この拡張として **strong** などがあるとして、それを構造としてパースしようというのが「視覚的マークアップ*2」になる訳ですね。論理構造と文章の読み易さはある程度まで共通します。 このバランスを取るのが簡易マークアップの醍醐味なのではないでしょうか。

にな

*1:要出典

*2:この用語は昨日しった