ハクソク

世界を動かす技術を、日本語で。

Markdownが世界を制覇した方法

概要

  • Markdownは、現代のテクノロジー業界で広く使われているシンプルなテキストフォーマット
  • John Gruberによる個人的な課題解決から誕生し、Aaron Swartzの協力で洗練された
  • ブログ黎明期のMovable Typeなどのツール開発と共に普及
  • HTMLよりも直感的な記法で、誰でも簡単に使える点が特徴
  • 今やGoogle DocsApple Notesなど、主要アプリに標準搭載されるまでに拡大

Markdownが世界を変えた理由

  • Markdownは、AIシステムから学生のコード、日常的なメモまで、幅広い用途に使われるテキストフォーマット
  • 技術大手による発明ではなく、John Gruberという一人の情熱的な人物が生み出したフォーマット
  • インターネットの本質は、賢い人々が独創的なアイデアを無償で共有し、世界を少しずつ良くしていくこと
  • Markdownは、個人の悩みを解決するための「現場発」ツールとして誕生
  • 2002年、GruberはAppleとブログに賭けてDaring Fireballを開始
  • 当時のAppleは今ほど注目されておらず、ブログも一般的ではなかった
  • Appleの復活と共に、Daring Fireballやブログ文化がテクノロジーメディアを牽引
  • 2004年にはブログとソーシャルメディアが文化の中心へ
  • その時代、ブログの書き手自身がMovable Typeなどのツール開発にも積極的に関与
  • 執筆画面のちょっとしたデザイン変更が、投稿内容そのものに大きな影響を与えることを発見
  • しかし、HTML記法の習得は難しく、ちょっとしたミスでデザインが崩れるリスクも

Markdownの誕生と普及

  • Markdownの目的は、キーボードで打てる記号だけでWeb用のリッチな文章を作れること
  • HTMLの複雑な記法を、より直感的で覚えやすいものに置き換える発想
  • 例:リンクを作る場合、HTMLでは<a href="...">だが、Markdownなら[タイトル](URL)でOK
  • 見出しも# 見出しタイトルとシンプル
  • **「複雑なマークアップ」(markup)の逆が「マークダウン」(markdown)**という発想
  • 誰でも数分で覚えられ、十分な表現力を持つ点が成功の鍵
  • Gruber自身がMovable Type用に実装し、すぐに他のツールにも波及
  • 開発初期にはAaron Swartzがベータテスターとして参加し、品質向上に貢献
  • 2004年3月、Markdownが静かに公開され、Web上のテキストファイルが一気に進化

Markdownの社会的インパクト

  • Markdownは、ブログ以外のあらゆる用途にも広がり、業界標準へと成長
  • Google DocsやMicrosoft Notepad、Apple Notesなどメジャーアプリに標準搭載
  • Slack、WhatsApp、Discordなど主要メッセージングアプリでもMarkdown記法が利用可能
  • 開発者界隈ではGitHubがMarkdownをドキュメント標準に採用
  • コードリポジトリのREADMEやドキュメント、日常業務の報告書、システム通知など多用途で活躍
  • Markdownの柔軟性と普遍性が、現代の情報共有を支える基盤となっている

技術と文化の融合

  • ブログ黎明期、作り手=書き手=ツール開発者という状況が、技術と表現の進化を牽引
  • 小さなUI変更がユーザー体験や文化に大きな影響を与える実例
  • Markdownの普及は、シンプルな発明が世界を変える好例
  • 技術の進化と文化の変革が相互に影響し合うインターネット時代の象徴

Markdownがもたらしたもの

  • 誰でも簡単に使えるテキスト記法の普及
  • 情報共有・表現のハードルを大幅に引き下げ
  • オープンな発明が、業界標準として定着する過程の体現
  • 技術と文化が交錯する現場から生まれたイノベーション

Markdownは、個人の課題解決から始まり、今や世界中の情報インフラを支える存在となった。シンプルさオープン性が、多くの人々の創造力と生産性を引き出し続けている。

Hackerたちの意見

Markdownが大好き!一番好きなMarkdownの作成物は「GistDeck」っていうブックマークレットで、GitHubのGistにあるMarkdownコンテンツをスライドショーに変えてくれるんだ。PowerPointのデッキよりもずっと簡単に作れてシェアできるよ。
ホームページが壊れてる
「心優しい頑固者が、今この瞬間にもキューブリックの映画を見返しながら、絶対に擁護できないスポーツチームを応援している」っていうのが面白かった。
「あらゆる異なる文脈に合った味があった」っていうのを利点として挙げるのがちょっと面白いと思う。Markdownがどこでも同じじゃないのがイライラするし、*bold*や**bold**、*italics*で混乱することがよくあるんだ。(Slackの変なバージョン、呪われろ。)Anilの言う通り、拡張性があっていろんな文脈に適応できてるのは尊敬するけど、実際にはその緩さが問題を引き起こすことはないんだよね。CommonMarkがもっと広まってほしいし(Markdownって名前の受け入れや使用も)、基本的なことに関しては標準があった方がいいな。
Markdownが最もよく使われる文脈では、太字とイタリックの区別はあまり重要じゃない。*これ*や**これ**が強調を伝える形でレンダリングされる限り、意味は保たれるから。
バリエーションをマイナスじゃなくてプラスとして見るのに時間がかかったよ。RSS対Atomの戦争のベテランとして、私は良いコーダーのように技術的正しさを支持してた。でも、その後の年月で、実用的なポステリズムみたいな考え方にずいぶん柔軟になったと思う。これは、適用された「悪い方が良い」みたいなもので、現実にはフォークや多様性が常にあるから、それをバグじゃなくて機能として見るべきだって気づいたんだ。ハードウェアが故障することを受け入れて、それをシステムに組み込むような感じだね。HTML自体はストリートではしっかり仕様が決まってるし、シートでは無限に違うフレーバーがある。正直それは好きじゃないし、コードを書く自分はそれが嫌い。でも、システムが成功することを望む自分は、ただそれを尊重しなきゃいけなかったんだ。
他のフォーマットで使われているもっと直感的な規則は、例えば: *太字* /イタリック/ _下線_ みたいな感じだったよね。
単一のアスタリスクで太字はMarkdownじゃないよ。Slackは自分たちのやつを「マークアップ」って呼んでると思う。私もそれはイライラする。イライラしすぎて、Slackのキーボードショートカットを覚えちゃったよ。
いいまとめだね。でも、私が好きな理由の一番は欠けてるよ - 基本的にテキストだから。フォーマットやベンダーに縛られず、gitリポジトリに住むのにも最適なんだ。私のメモ取りには、もうこれだけで他のものには勝ってる。OneNoteが使ってる呪われたフォーマットが2035年でも取り出せるか心配したくないしね。それに、LLMが話すデファクトスタンダードになってるのもいいよ。サーバーのリポジトリのコードを見て、API_documentation.mdを作ってって言えば、このエンドポイントの使い方をテキストベースで要約してくれるのが分かる。
同じく。今『The UNIX Programming Environment』(1984年)を読んでて、もっと色んなことにテキストを使いたくなってる。プロプライエタリなフォーマットは出たり消えたりするけど、テキストは永遠だよね。
それだけじゃなくて、Markdownは人々がテキストファイルで既に使っていた慣習を利用してるんだ(記事のポイント3)。Markdownが存在する前から人々はMarkdownを書いてたんだよ、ただそれを正式化しただけ。実際、私はメモやドキュメントをテキスト形式で書くのが好きで、気づいたらずっとMarkdownを使ってたから、テキストファイルの名前を.mdに変えて、いくつかのマーカーを修正したら、Markdownをサポートするビューアで見た時に綺麗に見えるようになったし、テキストエディタでも構文ハイライトが効くようになった。
でも、Markdownのビューアが圧倒的に足りないんだよね。オープンソースプロジェクトや他の場所でMDファイルは見つかるけど、意図した通りにレンダリングするビューアはほとんどない。だから、結局はプレーンテキストとして見て、フォーマット文字がいっぱい入ってる状態になっちゃう。じゃあ、何の意味があるの?最近やっとWindowsのメモ帳がMarkdownをレンダリングするように改訂されたと思う(今はそうなってるはず)。で、Mac用のを探してやっとMarkedを買ったけど、それぐらいしか見つからなかった。他はMDファイルを何かエディタに読み込んで「プレビュー」するしかない。いや!ただファイルをダブルクリックして読みたいだけなのに、フォーマットが適用された状態で。なんでそんなに難しいの?
えっと、Markdownが競争相手にしようとしてたのもテキストだったんだよね。プレーンテキストも含めて。確かに、README.RTFやREADME.DOCを作ってた人たちにはみんなイライラしてたけど、README.TXTやREAD.ME(またはREADME.DOCがプレーンテキストだったり)も同じくらい使われてた。GameFAQsやニュースグループもプレーンテキストとASCIIグラフィックスでかなり進んでたし。問題は、人々がウェブブラウザを使ってドキュメントを表示したいと思ってることなんだよね。リッチなドキュメントが欲しいし、ウェブブラウザは構造を理解してないテキストを表示するのが苦手なんだ。タグは読み返すといつもひどく見えるから、XMLやHTMLを読むときはシンタックスハイライトが強く好まれる理由なんだよね。本当に大きな競争相手はBBCodeで、主な問題はHTMLに似すぎてること。Wikitextは、あまりにも基本的すぎてドメイン特化しすぎてるのが問題だった。Markdownの大きな利点は、1. 単純に読みやすいこと。人々がプレーンテキストとして読むために自然にフォーマットしていた方法を取り入れているから、プレーンテキストで文書を書くときに人々が望むスタイルに近いんだ。それが、書いているときにドキュメントを読みやすくしている。強調するためのアスタリスクは古い慣習だし、箇条書きのためのダッシュやアスタリスクもそう。実際、アスタリスクは強調のための英語の句読点になったと思う。2. パースが簡単で短いから、Web 2.0のソーシャルメディアで人気が出た。Slashdot、Reddit、Stack Overflowが「十分良い」や「BBCodeよりマシ」として取り入れたんだ。あの頃、WYSIWYGエディタボックスを使うのが好きな人はいなかったよね。遅いし、バグが多いし、HTML5が出る前はFlashベースだったこともあった。プレーンテキストのフォーマットオプションが必要だったし、BBCodeはタイプするのがイライラするほど不自然だった(HTMLタグみたいに)し、ちょっと柔軟性がなかった。誰もMySpaceの二の舞を演じて、ユーザーにHTMLを使わせたくなかったんだ。それはひどいアイデアだった(Samy、XSSとか)。
その通り。Obsidianが大好きな一番の理由は、マークダウンのためのオペレーティングシステムみたいだから。
基本的にはまあまあ見た目のテキストだよね。Markdownがテーブルをサポートしてない一番の理由だと思う。テーブルをサポートしてる代替手段もあるけど(例えばwikitext)、Markdownほど人気にはなってない。なんでだろう?多分、テーブルはどんなに巧妙な構文でも、純粋なテキストでは見栄えが良くならないからじゃないかな。
まあ、Markdownはあったけど、その前にはphpbbとかがフォーラム投稿で使わせてたフォーマットがあったよね?テキストっぽいものがあった。でも、多分それが最初の大きなフォーマットで、Unixっぽい「これを使ってHTMLにするCLIツールがある」って感じだったんじゃないかな、PHPスクリプトじゃなくて。
Markdownが大好きなんだけど、ほとんどのウェブブラウザで.mdファイルをデフォルトで開けないのはちょっと驚きだね。ブラウザが自動的にHTMLに変換して表示するのはかなり簡単なはずなのに。
そうだね、Markdownを安全なHTMLに変換するための組み込みJS APIが欠けてるのも残念だね。いろんな実装があるのは分かるけど、せめて小さなもので始めてみたらどうかな。
これはいい提案だね。何度も提案されてきたのは知ってるけど、フォーマットを拒否した理由が気になるな。ファイルを読み込む時にレンダリングするオプションがあっても良さそうだし。(もしかしたら「HTMLとして表示」ボタンみたいなのが必要だったのかも。)
上で愚痴ったけど、Markdownファイルをフォーマット付きで見ることって、普通はできないんだよね。最近、Notepadがそれに対応するようにアップデートされたかもしれないけど、そうじゃなければ…フォーマット文字がいっぱい入ったプレーンテキストしか見れない。なんで?不思議だよ。シンプルなMarkdownリーダーはどこに行ったんだろう?
CommonMarkとPandocの作者が新しいフォーマット「Djot」を作ったらしいよ:https://djot.net/。解析がもっと簡単らしくて、そういうことに詳しい人から出てきたものなんだ。
韓国人としてちょっと困ったことがあって、「djot」って名前(あと「jot」って一般的な言葉も)韓国のスラングで「ちんこ」って意味に聞こえるんだよね :/
わあ、これはもっと厳格で理にかなったマークダウンに見える!いいね、試してみる…かも。
Djotは素晴らしいよ。自分のプロジェクトで使ってる(https://timbran.org/moor.htmlのクライアント)。Markdownから余計なものを省いた必要な機能が全部揃ってるし、安全で解析も簡単、みんなにも馴染みやすい。
まだこれに関しては新参者だけど、Markdownが素晴らしい理由はいくつかあると思う:ただのプレーンテキストだから、ベンダーロックインがなくて、ripgrepやfzf、grepで検索できるし、適切なdiffでgitリポジトリに幸せに住める。LLMがネイティブに使える - Markdownを出力して、Markdownの入力も理解する。PDFよりもエージェントが解析しやすい(PDFはバイナリでレイアウト重視、テーブルがグチャグチャになる)。テーブル(少なくともGFMでは)、ヘッダー、コードブロック、リンクができて、すべての構造が保持される。私が理解している限りできないこと:複雑なレイアウト、正確なタイポグラフィ、埋め込みバイナリコンテンツ、ピクセルパーフェクトなレンダリングが必要なもの。何か見落としてる?他に知っておくべき制限はある?
MarkdownはHTMLの粗いスーパーセットで、YAMLがJSONのスーパーセットであるのと似てる。だから、HTMLで表現できることはMarkdownでも表現できるんだ。CommonMarkの仕様の書き方からすると、Markdownは実質的にHTMLのプリプロセッサみたいなもんだね。Markdownの大きな制限は標準化がないこと。例えば、GFMの中でも微妙なバリエーションがいくつかあって、Markdownファイルをレンダリングする時に単一の改行がスペースになったり、イシューコメントでは改行になるんだ。
視聴者が全然いないんだよね。
> できないこと(私の理解では):複雑なレイアウト、正確なタイポグラフィ。一部の「拡張」バージョンではHTMLやCSSを埋め込むことができて、レイアウトの問題は解決できるけど、その時点では本当のマークダウンじゃないよね。 > 埋め込まれたバイナリコンテンツ、拡張バージョンを使っているなら、画像をb64エンコードできるけど…やっぱり、これもマークダウンの本来の精神とは違うよね。
> それができないこと(私の理解する限りでは):複雑なレイアウト、正確なタイポグラフィ、埋め込まれたバイナリコンテンツ、ピクセル単位でのレンダリングが必要なもの。何か見落としてる?他に知っておくべき制限はある?多層リストは、行の先頭から4つ以上のスペースがあるせいで、深いレベルではコードとしてレンダリングされちゃうのが面倒。これはMarkdownの大きな欠点で、開発者向けにしか良くない。普通の人はコードをレンダリングしたくないからね。その欠点を取り除けば、もっと広まると思う。
> ...手でフルHTMLを書くのが難しすぎるか不便すぎるってこと それは必ずしもHTMLや他のマークアップを手書きするのが難しいってわけじゃない(もちろん難しいけどね)。でも、Markdownの魅力は、素の状態でもスタイルが適用された状態でも完璧に読みやすいところなんだ。で、Markdownの見た目をカスタマイズする話が出たから、私が作ってるカスタマイズオプションが豊富なMarkdownエディタの宣伝をしちゃうね: https://kraa.io/about
ほぼ合ってる。マルチラインのテーブルセルが必要なこともあって、モノスペースフォントの使用も求められることがある。
前にあなたの製品を見たことがあるけど、自己ホスティングできないから管理できないのがちょっと不安。セキュリティの詳細があまり具体的じゃないし。プライバシーポリシーには少し書いてあるけど、実際の詳細はないんだよね。個人のメモはもちろん、仕事のメモも敏感な内容だからさ。でも、もしそれが気にならないなら、見た目はいいと思うよ。一般的にお疲れ様!最終的にマネタイズする予定はあるの?
Google DocsにMarkdownサポートを追加したのは、20%プロジェクトの一環だったんだ。Markdownの歴史に参加できて光栄だよ :)
ほぼ毎日使ってるよ。ありがとう!
これは素晴らしい追加だった。`alt+/`でオプション/コマンドパレットを開くのもお気に入りの機能だけど、あなたのおかげでGoogle Docsが楽しくなったよ。
ReStructured Textが負けた理由について、別の記事が書かれるのを待ってる気がする。若い頃、プロジェクトに参加するときに.rstファイルを.mdに変換することで結構叩かれたのを覚えてる。(年を取るにつれて、あまり.rstを見かけなくなったけど)
rSTはPython界隈ではまだ結構人気だよ。特にSphinxを使ってる人にはね。