未来はあまりに遠いし、おれはもう待てない

SF小説やプログラミングの話題を中心とするフジ・ナカハラのブログ

小説を書く時のマークアップ言語に何を採用すべきだろう

小説を書こうとしてふと思った。
「小説ってどう書けばいいのだろう?」
小説らしい文体がわからないわけでも、内容のアイデアがないというわけでもない(いや、アイデアは実際ないが)。 小説という文書のフォーマット、形式がわからないのである。

文書の形式の1つとして、小学生の頃に原稿用紙の書き方は教わった。 なんなら、当時のわたしはクラス一の原稿用紙マスターだったと自負している。 しかし、今どき原稿用紙に小説を書く人はほとんどいないだろう。 文書の作成は、パソコンを使うのが現代の主流である。

高校生の頃までは、Wordの原稿用紙モードを使って小説を書いていた。 大学生になってレポートをLaTeXで書くようになってからは、小説をLaTeXで書くことにも挑戦した (これは失敗だった。というのも、スタイルの調整やコンパイルを通すことに時間を取られ、肝心の内容に集中できなかったからである)。

今でもWordで小説を書く人はいるだろうし、藤井太洋がScrivenerで『Gene Mapper』を書いたことは有名である。 しかし、私は使い慣れたテキストエディタAtomで小説を書きたい。 ちなみに、この記事もAtomを使って書いている。 では、テキストエディタで小説を書くのに適した形式とはどういったものだろう?

ここで、「形式なんかにこだわらず自由に書けばよい」という人がいるかもしれない。 しかし、小説は多くの場合、人に読まれるまでに何らかの形へと変換される。 例えば、紙の本や電子書籍、Webページである。 アマチュア作家は、この変換作業を基本的には自分で行わなければならない。 その際、自由なフォーマットの文書をこうした形に変換するのは容易ではない。

そうした変換を手助けするのが、マークアップ言語である。 マークアップとは、見出しや段落といった文書の構造を記述することである。 そして、マークアップ言語は、そうした文書構造の記述方法を定義したものである。 規格化されたマークアップ言語で文書を構造化すれば、その変換を支援するアプリケーションは数多くある。

既存のマークアップ言語の比較

代表的なマークアップ言語にHTMLやXMLがあるが、これらはマークアップのための記述量が多く、小説を書くのには適さない。 あくまで主目的は小説の執筆や校正であり、それを阻害するようでは本末転倒である(LaTeXで書こうとした時の二の舞である)。 よって、最小限の機能を持ちつつも、文書の書きやすさや読みやすさを阻害しないというのが、小説を書く際のマークアップ言語に求める要件となる。

青空文庫の注記法

マークアップ「言語」と呼ばれているわけではないが、日本語小説の構造を記述する方法として、青空文庫の注記法がある。

この記法の良い点は、

  • ルビや傍点など、日本語小説で必要とされる基本的な表現のための記法をカバーしている
  • 青空文庫という実績がある

逆に悪い点は、

  • 独特の記法なので一から覚える必要があり、学習コストが高い
  • 周辺アプリケーションはそれなりにあるものの、メンテされていないものが多く、また、かゆいところには手が届かない感じがする
    • 特定機能に特化したものが多く、汎用的なものは少ない印象だった。もちろん、Atom用に青空文庫記法をサポートするパッケージなんかはない

候補として挙げたものの、個人的には記法がとっかかりにくいと感じている。

Markdown

Markdownは、書きやすさと読みやすさを重視した軽量マークアップ言語である。 このブログ記事の原稿もMarkdownマークアップされている。 ただし、一口にMarkdownといっても、そこには多くの方言・拡張がある。 例えば、今私が書いているはてなブログMarkdownも、はてな記法の一部が使えるよう拡張されている。

CommonMark

CommonMark は、そうしたMarkdownの標準化を目指すプロジェクトである。 GitHub Flavored MarkdownもCommonMarkをベースにしている。

良い点は、

  • Markdownの)学習コストが低い
  • 周辺アプリケーションが無数にある

悪い点は、

  • ルビなど日本語小説で必要とされる基本的な記法がカバーされていない
    • Issue はあるが、対応されそうにない

普段からGitHub Flavored Markdownを使っているのでなじみ深いが、小説投稿サイトでは標準的にサポートされているルビの記法がないのは厳しい。

でんでんマークダウン

でんでんマークダウンは、日本語と電子出版に最適化されたMarkdownの拡張で、EPUB 3変換サービスでんでんコンバーターの入力に用いられる。

良い点は、

  • ルビや縦中横など、日本語小説で必要とされる基本的な表現のため記法をカバーしている
  • 学習コストが低い
  • EPUB 3に簡単に変換できる

悪い点は、

これまで挙げた中では、でんでんマークダウンが最も有力だと思う。

独自記法の作成

でんでんマークダウンが有力とはいえ、その表現力は決して高くはない。 マークアップ方式によって小説の表現が制限されるくらいであれば、Markdownを独自に拡張することを検討するのも良いだろう。

Markdownの拡張に関しては「Markdownを拡張して独自記法をつくる」というこちらの記事が詳しい。 この記事では、HTML::Pipeline を使ってMarkdownを拡張している。 また、Mato という CommonMarker をベースにしたMarkdown拡張用のライブラリもある。


小説を書く時のマークアップ言語としては、でんでんマークダウンが良さそうである。 ただし、でんでんマークダウンのパーサは公開されていないので、EPUB 3以外に変換する場合は、先に挙げたライブラリ等を使って変換を実装する必要がある。 個人的には、これを実装して、さらに独自の拡張を必要に応じて加えていきたいと思っている。

ちなみに、小説はまだ1文字も書いていない。


2018/5/3追記

でんでんコンバーター作者の id:lost_and_found さんより、でんでんマークダウンは OSS であるとの指摘をいただきました。 他にも、Densho Channel という GitHub Organization で電書ちゃんねる周辺のソースコードが公開されているようです。