2013年3月2日土曜日

Markdown の良さについて考えてみた

先日「HTML に変換できる軽量マークアップ言語で良さ気なの知ってる?」的な質問されたので Markdown を勧めようと思ったのだけど、どういった点でオススメすればいいのか頭の中でまとまってなかったのでまとめついでにブログに書いてみようかと。

ちなみに私自身の Markdown 歴は半年ほど。GitHub を使い始めたタイミングで Markdown 記法を覚えました。使ってみると快適だったので、今やテキストはほとんど Markdown で書いてます。

追記: 実際に Markdown 他いくつかの軽量マークアップ言語でメモを書くとどんな感じになるか、別記事 Markdown 記法を他の軽量マークアップ言語と見比べてみた にまとめました。

Markdown ってどんな軽量マークアップ言語?

Markdown についてはググればいろいろ出てくるので詳しい事はそちらに見てもらう事として、個人的な印象をまとめると以下の通り。

  • 結構広く利用されてるっぽい
  • 記法がシンプルでプレーンテキストとしても読みやすい
  • HTML 文書に変換する Perl スクリプトを利用可能

それぞれもうちょっと詳しく説明してみます。

どんなところで使われてる?

結構あちこちで採用されてますし、専用エディタも存在していることから、軽量マークアップ言語としては結構普及しているものなのかなという印象です。

採用例については Markdown - ウィキペディアの利用例の項目 が詳しいです。

記法の特徴と雑感

これまで軽量マークアップ言語としては

を使ってきた経験がありますが、それらと比較して Markdown の良いところは以下かなと思います。ただ「読みやすさ」などは個人の趣味や慣れに依存する部分も大きいため、その点はご留意のほどを。

  • 記法がシンプルでプレーンテキストとしても読みやすい
    • プレーンテキストの状態での読みやすさをかなり意識して作っている印象で、記法もシンプルになってます。
    • 整形済みテキスト (pre)、リスト (ul,ol,li)、強調表現 (em)、コード (code) などの表現に関して Markdown は少ない文字列でスッキリ書けるようになっており、RD、Textile、Pukiwiki、Trac Wiki に比べてプレーンテキストとしては読みやすいです。
    • 別記事 Markdown 記法を他の軽量マークアップ言語と見比べてみた で実際に例を挙げて比較してます。
  • HTML タグ自体をそのまま埋める事ができる
    • Markdown は記法がシンプルな分、table などのタグについては独自に表現する記法を持ちません。その代わり HTML タグを挿入すれば、HTML へ変換した際にそのまま反映されます(例: <b>&lt;b&gt に変換しません)。
      • <b>&lt;b&gt のようにしたい場合は code タグ表現にすればよく、Markdown においてはバックスラッシュで括る事で表現できます。
    • このようなルールとなっている理由は Markdown: Syntax - Inline HTML (日本語訳) で述べられています。以下に一部抜粋します。割り切りが良くて初めて読んだ時は目からウロコでした。
      • MarkdownはHTMLタグの代わりにならないし、HTMLタグで表現できるレベルにも達してない
      • Markdownのルールのコンセプトは原文のままで読みやすく、書きやすく、編集できること
      • HTMLタグルールはホームページを作成するためのルール、Markdownは書きやすくするためのルール
    • どうしたって軽量マークアップ言語で HTML を全部表現するのは無理なので、プレーンテキストとして読みやすくできる範囲では独自の記法を持つけど、複雑な表現について独自記法で無理はせずに「HTML タグをそのまま埋め込めばOK」にしているようです。これにより、Markdown 記法の複雑化を回避しながら、HTML の機能もフル活用できるようになっているわけですね。
    • 上に挙げた他の言語だと、そもそも HTML タグをそのまま使用できないか、もしくはブロック単位で「この範囲内は HTML で書く」と明示的に指定するマーカを記載する必要があります。
  • もちろん一般的な(?)軽量マークアップ言語としての基本的な記法は揃ってる
    • 見出し, 引用, リスト, コード, リンク, 強調, 画像といった基本的な記法はちゃんとあり、個人的には必要十分です。

個人的に不満なところは無いですが、前述の通り tableを表現する独自の記法はない ので、 table を表現したければ直に HTML を書く必要があります。他の軽量マークアップ言語で table を表現する記法を多用している方はちょっとなぁ、かもしれません。また、HTML タグをそのまま埋めれる事をメリットとして挙げましたが、逆から見ると HTML タグについての知識が必要 とも言えます。これも人によってはデメリットになるかもしれませんね。

文法の詳細について知りたい方はこちらをどうぞ。

HTML への変換ツール

HTML への変換ツールは Markdown の本家サイトで配布されています。

1500 行程度の Perl スクリプトで特殊なライブラリに依存してもいないようなので、Perl が動く環境であればスタンドアロンで動くようです。私の手元の環境 (Mac OS X および Windows XP + DWIM Perl) でも簡単に動きました。使い方は以下の通り。

$ perl markdown.pl [Markdown書式のテキスト]

標準出力に HTML に変換されたテキストが表示されます。ただし、<body><head> タグは挿入されないので、そこは利用者の方で適宜用意してねというスタイルのようです。

私は Emacs で Markdown テキストを編集しているのですが、Emacs の markdown-mode を利用することで

  1. Emacs の markdown-mode が提供する markdown-export 関数を利用
  2. markdown-export 関数により、<head><body>タグを挿入した HTML を出力

するようにしています。具体的な設定を知りたい方は 以前の Emacs 記事 を参照下さい。

ちなみにこの記事も元は Markdown のテキストです。上記 Emacs で HTML に変換した後、一部のタグを sed で置換して後、Blogger の編集画面に貼り付けてます。前述の通り Markdown は HTML もそのまま貼り付けられるので、画像関連のタグについても一旦 Blogger 側で生成した後、その部分を元の Markdown のテキストファイルに戻してます。こうすることでブログの文章の管理は手元の Markdown のテキストファイルに一元化できるので助かってます。

まとめ

以上、自分なりに Markdown のオススメなところを簡単にまとめてみました。何かしらの文章を書くことを生業や趣味にしている人にとって、気持よく文章を書き込める/読める環境は大切ですよね。文章の記法も合うものが見つかると結構快適になれるのかなと思ってます。たかがメモ書き、されどメモ書きかなと思いますので、皆さんも是非自分に合う軽量マークアップ言語を探してみてはいかがでしょうか?

0 件のコメント:

コメントを投稿