« アジャイル開発が問題点をすり替えた品質特性~機能性と信頼性 | トップページ | AWSで使うRedmine ALMinium »

2012/07/29

書籍執筆で継続的デリバリー

@kaorun55さんがJenkins勉強会のLT資料を公開されたのでリンクしておく。
記事や原稿、提案資料を書く人は、テキストから自動ビルドしてPDF、Wordなどの印刷媒体へ自動ビルドする手法が必要になった時代だと思う。

【元ネタ】

オライリー・ジャパンのePUBフォーマットを支える制作システム - O'Reilly Japan Community Blog

Geekなぺーじ:svn+TeXでcommitするとPDF - オーム社開発部の出版システムでの書籍執筆

sphinxで Wordファイル(docx)出力する.(Windows): 100ねんごの未来予想図

sphinx で word / epub / pdf で出力した結果(windows): 100ねんごの未来予想図

Overview ? Sphinx v1.0 (hg) documentation

Sphinxでドキュメントを生成する - Basic

epub出版システムの作り方: プログラマの思索

電子書籍の作り方part7: プログラマの思索

@kaorun55さんの環境は、Sphinx上でテキストベースの原稿を書き、CloudBees というクラウドホスティングサービスにあるJenkinsを使って、PDFやepubなどを自動ビルドで出力しているようだ。

この手法の利点はいくつかある。
一つは、原稿がテキストベースなので、SubversionやGitなどのバージョン管理と相性がよく、Sphinxのようなドキュメント生成ツールと組み合わせれば、PDFやepubなど各種媒体に出力できること。

この考え方は、昔のLaTexも同じような発想だと思う。
例えば、物理や数学の論文を書く人は、Texで英文の論文を書いて、雑誌に投稿する時にTexをビルドしてeps、dviなどに出力して渡していた。
今なら、SphinxやREViewのようなツールでテキストからPDFやepub、HTMLなど各種フォーマットへいくらでも出力できる。
しかも、blockdiagramなどのツールを使えば、ネットワーク図やシーケンス図などもテキストベースから変換できるので、バージョン管理と相性が良い。
@kaorun55さんの話では、PDFは印刷媒体として相性が良いが、iPadやiPhoneなどのスマートフォンで読む時はepubが相性が良いらしい。
確かに、スマートフォンでいつでも原稿を読めるようにしておけば、即座にフィードバックしてもらえるだろう。

でも、一つ疑問があるのは、Sphinxなどに索引や目次、引用文献などを生成する機能があるのか、という点。
Texには索引や目次、引用文献を自動生成する機能がある。
紙媒体やWordで原稿を書く時に面倒な作業は、索引や文献を抽出することだ。

だから、20年以上前のIT化されていない出版スタイルでは、索引や文献を手作業で抽出後、京大式カードなどで記録してファイリングしていた。
梅棹 忠夫さんの「知的生産の技術」の本では、そんな時代では索引作りが学者として重要な作業であったことを示している。

索引や文献も、原稿に何らかのポインタないしタグを付けておけば、プログラムで自動生成できる代物だ。
多分、そういうツールはあるだろうと推測している。

もう一つは、Jenkinsというビルド管理ツールを出版システムの中核機能に配置すること。
つまり、原稿というテキストをコミットした後、Jenkinsが検知して、Diffメールを送信したり、即座に自動ビルドしてPDFやHTML、epubで成果物を配布したり、索引や文献や目次を自動生成したり、出版フローのメトリクスを出力したりする。

この仕組みは、我々プログラマの仕事と全く同じ構造だ。
実際、テキストベースで書かれたプログラムをコミット後、ビルドされてサーバーにデプロイ後、システムとして稼働されて、ユーザが直接触ることができるようになる。
同様に、小説家が原稿をテキストで書いてコミットしたら、ビルドされてPDFないしHTMLなどの印刷媒体で出力されて、読者が直接読めるようになるフローと全く同じ。
その意味では、プログラマも小説家も同じ職業であり、クリエイターでもある。

個人的には、AntなどのビルドスクリプトでテキストをPDFやepubへ変換するツールをキックするようにすればいいと思う。
Jenkinsは強力なツールであるがゆえに、単なるビルドツールだけでなく、コードレビューや原稿のレビューをビルド前に組み込んで品質チェックしたり、コミットの差分をメールで流したり、ビルド失敗をメールで流すなどのやり方もある。
他にも、原稿を書く人ないし小説家のコミット履歴から、執筆に関するメトリクスを出力して、その結果から経験則を抽出できたとしたら面白いかもしれない。

|

« アジャイル開発が問題点をすり替えた品質特性~機能性と信頼性 | トップページ | AWSで使うRedmine ALMinium »

Agile」カテゴリの記事

Git・構成管理」カテゴリの記事

IT本」カテゴリの記事

電子書籍」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« アジャイル開発が問題点をすり替えた品質特性~機能性と信頼性 | トップページ | AWSで使うRedmine ALMinium »