
Markdown→HTMLはこう進化したーパイプライン最前線
BRANK
はじめにZennのようなブログ記事やAstroなどの静的サイトジェネレーターが、どのようにMarkdownを受け取り、ドキュメントを生成しているのか。その仕組みに強い関心を抱いた私はAstroの Content Collections のソースコードを読み始めました。とりわけ印象的だったのは、フロントマターを抽出する gray-matter でメタデータを取り出しつつ、本文をunifiedパイプラインへ流し込む一連の設計です。この記事では、そうした実装を眺めた好奇心から始まり、多重パース時代の課題、ASTリレーがもたらした転換点やMDX 3・WASM・Edgeが広げる近未来までを、コードと図を交えながら俯瞰します。第一世代:多重パース時代Markdown変換ライブラリの草創期を支えた markdown-it や marked は、変換ステップごとに文字列を再パースする仕組みを採っていました。MarkdownをHTMLにしたあと、別のフィルターをかけるたびにHTMLを再び文字列として読み込み直し、新しいASTを作り直していたのです。次のシーケンス図が示すように、ASTを何度も破棄・再生成するループがボトルネックを生み出していました。ファイル数が百単位から千単位に増えた途端、ビルドが劇的に遅くなる原因はこのループに…