書き方やツールの話はしない。
「そもそも何者?」「何の意味があんの?」あたりの話をする。
Markdown とは
文書を書いたり生成したりするためのフォーマットの一つ。
より専門的に言えば「軽量マークアップ言語の一つ」との説明になるが、よくわからんので掘り下げていく。
掘り下げる旅
コンピュータで文書を書くとはどういうことか――。
Markdown の意義を知るまで掘り下げてみるとしよう。
1: テキスト
リアルだとペンで紙に書いたりするが、デジタルでは少し違う。
キーボードやスマホなどで書く。最近は音声入力もあったりするし、音声を認識して文字起こししたりもできる。もちろん、プログラムの力で生成させることもできる。ChatGPT とかもそうで、内部的にプログラムが文章を生成している。
コンピュータ上で書いた文章を テキスト(Text) と呼ぶ。
2: テキストの表現方法は 2 種類
テキストには 2 種類ある。これはそういう仕様なので受け入れるしかない。
2-1: プレーンテキスト
まずは、キーボードなどで書いた文章を素のままで扱う プレーンテキスト(Plain Text)。プレーンとは「素の」といった意。
プレーンテキストは素の情報なので扱いやすい。どの PC やスマホで書こうが、プログラムで生成しようが、どこででも読める。一方で、何の装飾情報もないので読みづらいし、扱いづらい。たとえば太字にすることすらできない。素の文字情報しか扱ってないので、太字という概念はない。
2-2: リッチテキスト
次に、太字をつけたり文字色を変えたり、あるいは表や画像や動画を貼り付けたりしたテキストが リッチテキスト(Rich Text)。私たちが普段画面ごしに見ているのは、たいていはリッチテキスト。その名のとおり、プレーンと比べるとリッチだ。
リッチテキストのからくりは、プログラミング言語と同じようなもの。「こういう表記で書かれたものを太字と解釈します」みたいなルールがあって、私たちはそのルールに従ってプレーンテキストで書く。で、これをプログラムに読ませる。すると、プログラムはそのとおり、太字の表記で書かれた部分を太字とみなして、太字で表示する。
しかし、そんな難しそうなことなんていちいちやってられない。素人にプログラミング言語書かせるのか?ひえー。……なので普通は Microsoft Word みたいな専用ソフトを使う。このソフトは「ルールに基づいたプレーンテキストの記述」と「それを解釈してちゃんと表示」を上手く隠蔽して、まるで直接リッチテキストを編集できているように見せる。スライドをつくる Powerpoint とかも同じ。
3: リッチテキストをもっと楽につくりたい……
プログラマーやライターなど、書くことを生業とした人にとって、Word のような専用ソフトはだるい。
だるい理由その1、行き来がだるい。いちいちキーボードとマウスを行き来しなきゃいけないのがだるい。文字入力して、太字にしたいところを範囲選択して、ツールバーにある B のアイコンをクリックして……みたいなことを何度も何度もしないといけない。やってられない。キーボードから手を離さずにガリガリ書きたいよね。
だるい理由その2、管理や連携がしづらい。リッチテキストはその仕組み上、「表記ルールとそれを解釈するプログラム」のセットがたくさんできる。Word でスライドはつくれないし、Powerpoint で文書はつくれない。Word でつくった .docx ファイルを、Powerpoint で編集することはできない。これは「Word におけるセット」と「Powerpoint におけるセット」が違うからだ。もちろん Microsoft だけじゃなくて、セットはもっとある。かといって世の中の全員に Microsoft Word を使わせることもできない。統一的に扱えるのはプレーンテキストだけだ。
そこで生まれたのが マークアップ言語 である。これは「人間が直接書ける程度に単純化された表記」と思えば良い。最も有名なのは Web ページを表示する HTML で、HTML では太字は <b>太字</b>
と書く。<b></b>
で囲めばいいのだ。いちいち <b></b>
で囲むのは面倒くさいけど、これでもだいぶかんたんになった。ともかく、HTML が想定するルールどおりに書けば、あとはプログラム(もっというと Chrome や Edge や Safari などのブラウザ)が読み取ってちゃんと太字とか表示してくれる。
マークアップ言語自体はプレーンテキストで書けば良い。だから書くのが生業の人でもバリバリ書ける。<b></b>
とかは正直書きづらいし、覚えないといけないけど……。
4: もっと楽に書けるマークアップ言語が欲しい……
まあすぐわかることだが、<b></b>
みたいなのをいちいち書くのは正直つらい。もっと簡単にできねえのか?
そうして生まれたのが 軽量マークアップ言語 であり、Markdown はこのカテゴリに属する。
Markdown では太字は **太字**
と書く。アスタリスク二個で囲むだけだ。ずいぶんと簡単である。他にも見出しとか、箇条書きとか、リンクとかも比較的かんたんに書ける。慣れたらサクサク書けるし、今この記事を書いている私もサクサク書いている。HTML よりはだいぶマシだし、愛用できる程度にはよくできている。
ただし、ブラウザが直接読み取ってくれるわけではない。ブラウザが読み取ってくれるのはあくまでも HTML だけ。なので、Markdown で書いたものをリッチテキストで読みたければ、Markdown → HTML と変換して、変換した HTML をブラウザで開く、なんてことになる。他にも変換例はあって、Markdown → PDF や Markdown → Docx もできる。
5: Markdown マジで便利
書くことが生業じゃない人にはわかりづらいだろうが、Markdown はかなり楽なのである。
実際、IT エンジニアの世界でもかなり使われている。Qiita を見る層は、おそらくすでに縁があるのではないか。一方で、SIer など専用ソフトで書く世界もまだまだあるし、まだまだ圧倒的多数派(そもそも Microsoft Office が強すぎる)だったりする。
まとめ: Markdown とは
- プレーンテキストとリッチテキストがある
- リッチテキストは Word など専用ソフトで書くが、書くことが生業の人達にはつらい
- Q: プレーンテキストでリッチテキスト書きたいんだけど?
- Ans: よりかんたんに書ける表記を考案すればいい!
- ソリューション1: マークアップ言語。HTML とか
- 問題点: 言うて結構だるい
- ソリューション2: 軽量マークアップ言語。Markdown とか
- だいぶいける
- いけるので、ITエンジニアの世界でもかなり使われている
.md ファイル
Markdown の意義は理解できたが、ついでに .md ファイルも見ておく。
ファイルの種類をもって区別する
先ほど「表記ルールとそれを解釈するプログラムのセット」の話をしたが、このセットは ファイルの種類 で区別する。
- Word のファイルは .docx
- Powerpoint のファイルは .pptx
- Excel のファイルは .xlsx
- で、マクロがある場合は .xlsm
同様に、
- HTML ファイルは .html
- Markdown ファイルは .md
以上。
Markdown ファイルの種類は .md で表現する、と決まっているので受け入れるしかない。仮に退職届を Markdown で書くとしたら「退職届.md」になるだろう。
拡張子
この .xxx を 拡張子 という。
解釈するプログラムは、ファイル名についてるこの拡張子をもとに、それがどんな種類のファイルであるかを見る。退職届.docx だったら Word で書かれたファイルだし、退職届.md だったらプレーンテキストの Markdown で書かれたものだ。
関連付け
内部的には、拡張子ごとに自動でこれこれのプログラムを使え、との紐づけがある。退職届.docx を開いたときに Word で開かれるのはそのためだ。すでに「.docx ファイルは Word で開け」的な設定がされている。これを 関連付け という。
ちなみに関連付けは、必ずされているとは限らない。特に Linux ではされていない方が多いだろう。この場合、「解釈するプログラム」に対して「これを読み込め」と私たちが与える必要がある。たとえば、以下のようにして開くだろう。
$ vi 退職届.md
上記は、vi というプログラムに、退職届.md というファイルを与えている。vi さんに「この退職届.mdを開け」と言っているわけだ。
おわりに
Markdown の存在意義と、ついでに .md ファイルの意味を押さえた。