Insight Technology

2020.09.08

MarkdownをHTMLへ変換する Pandocとは?

このエントリーをはてなブックマークに追加

こんにちは。東京の開発本部に勤めている川原です。私は普段ドキュメントを書くのにMarkdown形式を採用しているのですが、次の理由があって色々な形式で書く場合が出てきます。

  • Redmineでtextile
  • 他の部署向けの資料を作成
  • google siteに対してHTML

大抵はリッチテキストが用意されているので、困る事がないのですが、なるべく書きなれたMarkdownで書きたいものです。そこで変換ツールであるPandocを紹介したいと思います。

Pandocとは

一言でいうとMarkdown等の形式を別の形式(HTML等)に変換するです。これだけを聞くとそれほど大したものでは無いように聞こえるかもしれませんが、驚くことに変換元と変換先の対応項目がかなり多いです。 変換可能な項目数はなんと44にもなります。何が対応しているかは公式ページに載っています。

pandoc_page.png

がそれぞれ変換先と変換元の対応項目を表していてが両方表しています。

使い方

使い方は凄くシンプルでpandoc input.md -o output.htmlのようにinputするファイルに変換するファイル名を指定するだけです。試しに公式サイトにあるMarkdown形式ファイルをPandocで変換してみます。

変換前 input-md.png

変換後 output-html.png

上手く変換されているようにみえます。変換したものをHTMLで表示します。

ブラウザで表示してみる

on-browser.png

うまくいっていますね。ここでは紹介しませんが、PowerPointにも変換をしてくれます。

Pandocを紹介している記事もたくさんあるのでぜひとも覗いてみてください。

欠点

HTMLからMarkdown等に変換するときはMarkdownで表現できないものはHTMLのtagとして表現されます。HTMLのtagMarkdown内で許容しているのですが、完全にHTMLのtagを消して変換したいという方には向かないので、注意してください。

Pandocは多彩な変換を可能にするために構造を定義しているのですが、構造が定義されていないものに対してはどのような挙動になるのかは実装依存になります。加えて言語がHaskellのためを実装を追うのは大変だと思います。

最後に

Pandocは2006年に初リリースがされましたが、まだまだ開発が盛んで最新リリースが2020年6月29日と定期的にアップデートされています。PandocHaskell製のツールで構文解析を利用して作られています。

項目数が豊富なのもHaskellだからこそ可能かなと思います。Haskellがどのように構文解析をしているかはまた別の機会に書きたいと思います。

ページトップへ