golden-luckyの日記

ツイッターより長くなるやつ

マークアップ言語における記法とは何かって、確かに定義が必要だった。

ここで取り沙汰されている記事を書いてるときは、「構造およびレイアウトの指定に使うメタ情報」、もしくは、それだけだとWordのスタイルとかも「記法」になってしまうので、「テキストベースの文書データで文書の構造およびレイアウトの指定などに使うメタ情報のシンタックス」だと思ってもらえることを期待してたんだけど、これって実際のところ、ぜんぜん自明じゃないな。

コンピュータを使うにせよ使わないにせよ、印刷して人にみせられる文書を著す場合、そのための版を作るという作業が必要になる。 「印刷して人にみせられる文書」の定義は、現代では非常にめんどくさいので、このへんは適当に解釈してください。たとえば、ブラウザでのレンダリングであっても用語は違うけど同じことです。

で、文書というものは、いろんな役割の部分から構成されている。たとえば、本文段落というのも、そのような役割のひとつ。もちろん、見出しとかもそう。

紙に人間が手書きした状態を読むときは、そうした文書の各部の役割を、読み手が誤読しない規範的な見せ方として書き手自身でハードコードする必要がある。 小学校で「段落の先頭は一文字開けましょう」とか習うのは、これ。 行頭一字下げというのは、和文における伝統的な段落組版ではない。和文における伝統的な段落のためのハードコード方法ならいえる(江戸しぐさが日本の伝統である的な意味で)。

というわけで、手で文書を著すときは、紙にどんな文字をどんな見た目で配置すれば文書の各部の役割を誤解なく読み手に解釈してもらえるか、っていうスキルを書き手が意識する必要がある。 しかし、少なくともグーテンベルクからこっち、書き手自身による見せ方の工夫として文書の各部の役割をハードコードするしかないという状況ではなくなった。 そのかわり、「文書のこの部分の役割は本文段落です」といった情報を文書そのものに付随して明示して、その付随された情報をもとに、誤解のない見せ方であったり魅力的な見せ方であったりを専門家が考慮できるようになり、さらにはコンピュータで解釈して一定の見え方を決定できたりするようになった。 この付随情報を示すルールのことを、もとの記事では「記法」と言ってます。

こう考えると、コンピュータで文書を書くときに「記法」が問題になるのは、常に印刷する前提で文書を書いてるから、という面もありそう(ここで印刷というのは、プリンタから紙を出すことだけじゃないです、念のため)。

ここで、本文段落という役割をもつ部分をコンピュータで書くときの「記法」について想いを馳せると、だいたいこんなのが主流になってると思う。

  1. 行頭から空行までの文字列
  2. 行頭から改行までの文字列
  3. <p>という記号列から、一定の規則を満たす状態まで
  4. <p>という記号列と</p>という記号列で挟まれた文字列

などなど。

1つめは、MarkdownとかTeXとかで広く採用されているおなじみのやつで、ふだんは記法だと意識してないかもしれないけど、記法です。 念のため注意しておくと、これは、欧文組版で行間スペースだけで段落としている場合がある、という事実とはまったく関係ない。 そういう組み方の例があるからこそ書き手の直観と一致する記法として広く採用されるに至った、みたいなストーリーがあったりするのかもしれないけど、知らない。

2つめは、テキストデータにおける1行を1つの本文段落とみなす記法で、DTP工程への指示として出版業界ではよく使われている。 この場合、空行は段落より大きな意味上の区切りを終端するための記法とみなされることが多い。 このように1行1本文段落の記法が使われているのは、DTPアプリケーションに流し込むときに空行があるとハード空行になってしまうから、という実務的な事情が大きいと思う。 行頭に全角スペースを入れたがる編集者もいるかもしれませんが、DTP工程では嫌がられてると思うので、やめようね。

3つめと4つめは、いうまでもなくHTMLですね。整形式でないHTMLをわざわざ別建ての項にしたのは、構造の話ではなくあくまでも記法の話だというのを強調するため。

ここまで考えて、ZRさんの疑問を基にしているsky_yさんのこの記事が、ZRさんの疑問とはちょっと違う話題になってしまっているな、と気づいた。

note.solarsolfa.net

ZRさんは、「複数の段落に役割を持たせ、そのための記法にハード空行を使っている文書」について考えていて、「そういう構造を利用して文書を書いている人が、ハード空行が段落区切りにしかならない一般的なMarkdown方言の処理系を使うと、戸惑いそう」という話をしてたんだとおもう。 それに対して、sky_yさんの記事は段落をハードコードする流儀の話になってしまっている。

このような話でこういう齟齬が生じてしまうのも、そこそこ直観に合致するハードコードで文書の役割を明示する記法であるところのMarkdownにとって避けられない暗黒面のひとつなのかもなあ。