ネットワークからプログラムを入手したとき、“README”というファイルが付属していることがある。これは、該当のプログラムの最も先に読むべき文書である。1970年台、磁気テープの郵送などでソフトウェアが配布されていたときにも、この名称のファイルが含まれていたらしい。

ファイル名のルールはシステムにより異なり、短いものもあれば、記号の利用に制限が出る場合もある。そうした背景から、最も単純なファイル名が選ばれたのであろう。大文字であるのも、小文字が使えない、あるいは、Unixなどのように小文字の使用が一般的なので、より目立つ(ASCIIコードでソートしたときに前に来る)などの理由があると思われる。伝統的にこのファイルはプレーンテキストを使い、“.txt”などの拡張子を付けることもある。しかし、最近では、「README.md」などのMarkdown形式のファイルが増えつつある。

世の中には、書籍のような大量の文章を含む重量級の「文書」もあれば、付箋に書かれたメモのような軽量な「文書」まで、さまざまな「文書」がある。また、デジタルの文書作成に関しても、ワードプロセッサやデスクトップパブリッシング・ソフトウェア、テキストエディタ、メモ帳アプリまで、さまざまなソフトウェアが使われている。

日常的な文書作成を振り返ってみると、多くの場合、日々作られるのは、どちらかというと軽量な文書であり、重量級の文書を作成する人は限られる。そう考えると、軽量文書作成には、それなりの需要があると考えられる。READMEファイルもどちらかというと軽量文書にあたる。

しかし、単純なテキストファイルだけでは表現力が劣る。たとえば、太文字や斜体を使いたい、あるいは、表示幅が変わっても、箇条書きのような書式を維持したいと考えると、ワードプロセッサの独自形式を使うしかなかった。

そこに登場したのがテキストベースで簡易な文法を持つHTMLなのだが、仕様が確定していく過程で、表現力が強化され、サイト構築用途が重視され、軽量文書の交換形式にはかえって使いにくくなってしまった。

これをカバーすべく登場したのがMarkdownだ。Markdownは、当初、Perlプログラムを用いて、HTMLに変換することを目的とした「軽量マークアップ言語」だった。HTML(Hyper Text Markup Language)の“Markup”からの連想で付けられた名前である。表現は限られるものの、可読性はプレーンテキストに近く、覚えることも少なく、「直書き」するのに向いている。

このため、MarkdownをHTMLや他の形式に変換するライブラリが複数登場した。これにより、ローカル実行からBlogのような「ユーザー作成データ」の形式として広く使われ始める。また、ライブラリ化したことで拡張が容易な構造を持つものも出現した。このため、数式や図形、表など、さまざまなオブジェクトを表示できるようになってきた。

Markdownを使うには、いくつか方法がある。Windowsでローカルファイルを作成するなら、VS Codeエディタが利用できる。また、Markdown用のエクステンションも多数あり、これらを利用することで便利になる。

Webブラウザで利用できるサービスでもMarkdownを扱えるものがいくつもある。筆者は、StackEditを使うことが多い(写真01)。というのもGoogleのBloggerに直接出力できる機能があるからだ。Blogger.comには、投稿のGUIエディタがあるが、削除を繰り返すなどで奇妙な状態に陥りやすく、かえって作業効率を落としてしまう。なので、StackEditで作成して、これをBloggerに転送している。MarkdownファイルはGoogleドライブなどに保存が可能だ。

写真01: StackEditは、GitHubでソースコードが公開されているほか、サービスとして利用することもできるGoogleアカウントを使って、Google Driveにファイルを保存可能。そのほか複数のストレージサービスや、Bloggerへのエクスポート機能などがある

ただ、Markdownは、アプリケーションやサービスごと、あるいはそれらで使っているライブラリによって拡張機能部分に違いがある。以前紹介したMermaidに対応して図版を出せるものと、そうでないものがある。VS Codeの場合には、標準ではMermaidに対応していないが、「Markdown Preview Enhanced」エクステンションなど、プレビュー機能を強化するエクステンションがある(写真02)。

写真02: Visual Studio Codeも、Markdownに対応している。そもそも、Microsoftが買収したGitHubはMarkdownを標準的なREADMEファイルの形式としている。エクステンションをいくつか入れることで、mermaidやfootnotesといったMarkdownの拡張機能に対応が可能だ

今回のタイトルネタは、ルイス・キャロルの「不思議の国のアリス」(Lewis Carroll、“Alice's Adventures in Wonderland”)である。READMEファイルの起源や最初の命名者は定かではないが、もっともそうに聞こえる説として、「不思議の国のアリス」の“Eat me”と書かれたクッキーのエピソードにちなむというものがある。これは奇妙といえば奇妙、「物」(Eat this)ではなく「私」なのだから。じっくり考えてみると普通の発想ではない。古くからファイルとして引き継がれ、書籍“The Hacker's Dictionary”(ハッカーズ大辞典などの邦訳あり)にもなった「Jargon file」は、READMEの起源がこのエピソードであるとしている。