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

パンドックの20年

2026年8月4日原文(pandoc.org)

概要

  • Pandoc は2006年8月3日にJohn MacFarlaneによって初公開
  • Haskell で開発され、文書変換ツールとして多様なフォーマットに対応
  • 20年超 で200回以上のリリースと世界的な普及
  • 多数の 貢献者 と拡張機能により進化
  • 学術・技術分野 での標準的なツールとして定着

Pandoc誕生と初期の歩み

  • 2006年8月3日、John MacFarlaneが自身のウェブサイトで Pandoc 0.1 をGPLライセンスで公開
  • 約3000行のHaskellコード で構成、依存関係はGHC標準ライブラリのみ
  • Markdown、reStructuredText、HTML、LaTeX から各フォーマットおよびRTFやS5への変換機能
  • 最初は個人的な学術用途 とHaskell学習のためのプロジェクトとして開始
  • プロジェクト管理・バグ修正・機能追加 に膨大な時間を費やすことに

Pandocの開発動機とHaskell選択理由

  • Haskell に興味を持ち、学習目的で何かを書こうと考えたことが出発点
  • Markdownパーサ の実装に着手、従来の正規表現変換方式とは異なる AST(抽象構文木)生成アプローチ を採用
  • 拡張性・信頼性 の高い設計
  • N個のリーダー(パーサ)とM個のライター(レンダラー) でN×Mの変換パターンを実現
  • reStructuredTextリーダーLaTeXライター など機能を次々追加し、プロジェクトが拡大

初期リリースとコミュニティとの出会い(2006–2008)

  • 初公開後、ほとんど宣伝せず、友人2名にメールを送っただけ
  • Turkish開発者Recai Oktaş との出会いにより Debianパッケージ化、プロジェクトの可視性向上
  • 2007年、DocBookライターやMarkdown拡張(脚注・表・定義リスト等) を追加
  • Hackage (Haskellパッケージリポジトリ)公開により依存パッケージの活用が容易に

Pandoc 1系の進化(2008–2017)

  • 2008年Pandoc 1.0リリース、MediaWikiやODT、コードブロック自動ハイライト等を追加
  • zip-archiveやhighlighting-kate など必要なHaskellライブラリを自作
  • CSLスタイルによる自動引用・文献リスト生成 機能
  • Markdown拡張仕様の策定 や、他実装者との協働
  • 柔軟なテンプレートシステムEPUB/Org-mode/Textile 等多様なフォーマット対応
  • JSONフィルタやLuaカスタムライター による拡張性強化
  • commonmarkプロジェクト への参画とMarkdown仕様の明確化
  • Pandoc 1.14でcommonmark対応、以降も多様な拡張と新機能を追加

Pandoc 2系と現代への発展(2017–2023)

  • Pandoc 2.0(2017年)で大規模なアーキテクチャ刷新
    • 従来の純粋関数型パーサ/レンダラーから、I/Oを伴う形式へ拡張
  • 画像やファイルインクルード等、より複雑な文書変換要件 に対応
  • 多国籍・多分野の貢献者 によるコラボレーション
  • 学術執筆ツール(Quarto、Jupyter Notebook等)との統合
  • 世界中の何百万台ものPCにインストール、事実上の業界標準ツールへ発展

Pandoc成功の要因と今後

  • Haskellの特性 を活かした堅牢かつ拡張性の高い設計
  • オープンソースコミュニティ の活発な貢献
  • 学術・技術文書の多様なニーズ に柔軟に対応
  • 今後も新フォーマット・新機能への対応 と、ユーザー・開発者コミュニティのさらなる発展が期待

Hackerたちの意見

pandocに感謝!博士課程を始めたとき、あまり賢い選択とは言えなかったかもしれないけど、全力で取り組むことにしたんだ。その決断がずっと良い結果をもたらしてくれて、今の科学者としてのキャリアはこれのおかげだよ。

pandoc、本当にありがとう!djotのことは聞いたことなかったけど、誰か使ってるの? [0]: https://djot.net/

Djotは最高だね。俺はこれを使ってネイティブなウェブサーバーを書いたよ。[0] [0] https://github.com/gn0/nvim-web-server

N個のパーサー(「リーダー」)とM個のレンダラー(「ライター」)を書けば、N × Mの変換をサポートできる。素晴らしいプロジェクトのための美しい説明だね。バイブコーディングの流行の時代に、基本原則から手作りで正しく構築されたものが、どれだけ拡張されて役立つかを見るのは本当に素敵だ。 > もしかしたら、将来的にはpandocのようなツールが必要なくなるかもしれない。でも、私はpandocのような素晴らしいものがますます必要になると思う。大きな生態的かつ実用的な違いがあるからね。LLMが決定論的なレベルの信頼性に近づけたとしても、特に大規模なバッチ処理などでは、効率の面で何桁も優れているから。

難しいのは良い中間表現を見つけることなんだけど、彼らはそれをやったね。

pandocは最高だよ。Outlookのメールとコーディングハーネスの間でコンテンツを移動するのに、1日に何回も使ってる。: https://gist.github.com/rahimnathwani/210b1f9cb6ce731a304322... cat email-to-xyz.md | md2clip clip2md > email-from-xyz.md

一番よく使うpandocのスニペット:tidyhtml () { pandoc -f html-native_divs-native_spans -t markdown-raw_html-raw_attribute | pandoc -f markdown -t html } これで、例えばGoogleやWordのドキュメントからコピーしたHTMLからスタイリングやラッパーdiv、span、インライン属性などを取り除ける。セマンティックな良さだけが残るんだ!

pandocが大好きで、いろんなことに使ってるよ…これが私のミニマルな静的サイトジェネレーターだ:find . -name '*.md' -type f -exec sh -c ' for file do out="docs/${file#./}" out="${out%.md}.html" mkdir -p "$(dirname "$out")" pandoc --quiet --template template.html "$file" -o "$out" done ' sh {} +

哲学の教授が [1] 世界中で何百万もの人に使われるツールを作ったなんて…本当に驚きだよ。いい意味でね(素晴らしい!)。pandocは私のお気に入りのツールだ。ありがとう、先生! [1] https://johnmacfarlane.net/index.html [2] https://johnmacfarlane.net/tools.html

pandocの好きなところは、きれいなHTMLやLaTeXコードを生成してくれるところ(正しいオプションを使えばきれいなMarkdownも作れる)。typstやheveaが生成するHTMLと比べると、これはすごく便利で、自分たちのスタイルを展開できるからね。

それに加えて、Pandocは貢献者にとって素晴らしい体験を提供してくれる。ここ数年でTypstやdocxに関するバグ報告をいくつか開いたけど、どれも親切で役に立つ返事をもらえた。Haskellについてほとんど何も知らなかったのに、いくつかのPRもマージされたよ。

今日、この素晴らしいツールのことを知った。なんで今まで使わなかったんだろう、驚きだね。