SPACEKEY

Technical Memorandum

Pandocを活用して開発っぽくドキュメントを作成したい

November 28, 2014

Pandocはドキュメントを変換するツールです。 なんらかのマークアップ記法に基づいて書かれたドキュメントを、別の形式に変換することができます。Markdown形式で書いたものをそれなりに装飾して見やすいドキュメントにしたいなと探していたら、なんか界隈ではよく使われてそうだったので試してみました。

Windows,Mac,Linux,BSD……とどんな環境でも使えるようになっていますが、とりあえずさくっと試してみたいのでWindows版を使ってみました。

インストール

jgm/pandoc https://github.com/jgm/pandoc/releases

インストーラーがあるのでダウンロードして、インストールしてしまえばOKです……が、インストールされるところが、

C:\Users\username\AppData\Local\Pandoc

みたいなところになっていて、コマンドラインツールですからとくにスタートメニューに登録されるわけじゃないのでご注意。 あと、ここにPATHを通しておかないと不便です。

簡単な使い方

とりあえず単純には、

pandoc (入力ファイル名) -o (出力ファイル名)

だけです。 出力形式は、テキスト系の形式だったら拡張子とかで判断してくれるので、

pandoc sample.md -o sample.html

としたらhtml形式になります。

HTML+CSS

上記の例だと、もう素のままのhtmlがでますのでCSSを適用できるようにします。 なにかcssを作成して、htmlが出力されるフォルダにでも置いといてください。

pandoc sample.md -c style.css -o sample.html

としたら、指定したcssファイルがlinkされたhtmlになります。

pandoc sample.md -c normalize.css -c style.css -o sample.html

複数指定できるので、初期化系のcssを使っている場合などはこんな感じにすればいいですね。

活用

とりあえず今回はこれぐらいできれば要件に足りそうなのでここまでしか試してませんが、もっといろんな使い方ができます。 PDFにしたり、Wordに出力したり、EPUBなんかにも出力できますし、ネット上を探してみるといろんな活用のされ方をしているようです。

オーソドックスな活用方法としては、Markdownなどの記法でささっと何かを書いて、人に見せるときにぱっと変換する、ということに尽きるでしょうか。やはり何かドキュメントを書くときに、見た目の部分に気が行ってしまって集中できなかったり、重たいアプリケーションを使うより慣れたエディタでぱぱっと書きたいことを書く方がはやかったり、内容を確認したり保存するときなども特定のアプリケーションよりは軽快ですからね。

また、テキストの状態で管理できると、差分がとりやすいと言う利点があり、Gitなどで連携して共同作業したり、人にレビューしてもらったりするのもやりやすくなるという利点もありますね。

まあ、画像を貼り付けた資料とか、貼り付けた画像に図形で注釈入れたりとか、そういうのはちょっと手間がかかったり直感的じゃなかったりすることもあるんでしょうけど、とりあえずテキストベースで中身を作り込んでいって、あとから画像を整頓していくという感じでやればいいかもしれません。Excelの資料に貼り付けた画像なんて、資料書いてる間何回も見るわけでもないですし、貼ってある画像が多かったりすると何かと邪魔だったりしますからね。

仕事の要件的に資料のフォーマットは方眼紙的Excelシートにがちがちに書き込まないと行けない、とか指定されちゃったらしょうがないですが、そうじゃないんだったらなんかもうちょっと緩い感じで、編集しやすく、変化させやすい、共同作業しやすい形で記録しておくことで、息の長いドキュメントになるんじゃないかと思います。

とりあえず、今目の前にある事例で「脱Excel」にチャレンジして見ようかと考えてます。

RedmineとGitで作業を進めてレビューもして、pushされたらjenkinsを使ってpandocでhtml変換して……みたいな流れで進められれば、やることはシステムじゃないんですけど、作業の仕方はまるっきりシステム開発と同じですね。 プログラミング作業と並行してこういうプロセスをトレーニングしようとしても、視点が「プログラムを作る」方に向いてしまってなかなか身につかないということもありますので、トレーニングにはいいかもしれませんし、「ドキュメントを書く」というのは古来から開発者にとってやる気がなくなる作業の一つですしそれがちょっとでも見方を変えられるといいかもしれません。