unifast とは
unifast は、Rust コアを備えた高性能な Markdown / MDX コンパイラです。GFM、サニタイズ、ハイライト、TOC を組み込みパスとして提供します。
unifast は、Rust コアを備えた高性能な Markdown および MDX コンパイラです。JS プラグイン互換ではなく、機能を組み込みパスとして直接実装することで、remark/rehype の主要なユースケースをカバーします。
なぜ unifast なのか
unified/remark/rehype などの従来の Markdown ツールチェーンは強力ですが、次のようなトレードオフがあります。
パフォーマンスのオーバーヘッド - 複数の JS AST 変換が積み重なり、特に大規模な処理で顕著になる。
プラグインの調整 - 数十ものプラグイン間で順序、互換性、重複に悩まされる。
組み込み機能がない - GFM やサニタイズのような基本的な処理でも、個別のパッケージが必要となる。
unifast は異なるアプローチを取っています。
Rust コア - パース、変換、出力のすべてをネイティブコードで実行する。
組み込みパス - よく使われる機能 (GFM、サニタイズ、ハイライト、TOC) は後付けではなく、最初から組み込まれている。
単一のコンパイル - 1 回の呼び出しで Markdown を HTML にコンパイルし、すべての機能を適用する。
主な機能
| 機能 | 説明 |
|---|---|
| CommonMark + GFM | テーブル、タスクリスト、取り消し線、自動リンク、脚注 |
| Frontmatter | YAML、TOML、JSON のメタデータ抽出 |
| MDX | Markdown 内での JSX 式と import |
| 診断 | 行・列のマッピング付きの正確なエラー範囲 |
組み込みパス
よく使われる remark/rehype プラグインは、ネイティブの Rust パスとして再実装されています。npm install も順序の悩みも不要です。
| パス | 説明 |
|---|---|
| サニタイズ | 安全なデフォルトを備えたスキーマベースの HTML 許可リスト |
| シンタックスハイライト | プラガブルなエンジン (syntect、Shiki) |
| 目次 | 見出しツリーの自動抽出 |
対応プラットフォーム
unifast は単一の Rust コアから複数のプラットフォームで動作します。
@unifast/node- N-API (napi-rs) による Node.js バインディング。メインのターゲット。@unifast/core- すべてのパッケージで共有される TypeScript の型定義。unifast(CLI) - スクリプトや CI 向けのコマンドラインインターフェース。WASM - ブラウザおよびエッジランタイムへの対応 (セカンダリターゲット)。
目的としないこと
unifast は unified の ドロップイン置き換えではありません。次のことは行いません。
既存の remark/rehype JS プラグインをコア内で実行すること。
unified エコシステムとの API 互換性を提供すること。
コアのコンパイルパスで Node のモジュール解決に依存すること。
その代わり、ユースケースの網羅性 を重視しています。プラグインパイプラインを組み立てる複雑さを伴うことなく、ほとんどのプロジェクトが必要とする機能をカバーします。