書籍執筆で継続的デリバリー
@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
@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は強力なツールであるがゆえに、単なるビルドツールだけでなく、コードレビューや原稿のレビューをビルド前に組み込んで品質チェックしたり、コミットの差分をメールで流したり、ビルド失敗をメールで流すなどのやり方もある。
他にも、原稿を書く人ないし小説家のコミット履歴から、執筆に関するメトリクスを出力して、その結果から経験則を抽出できたとしたら面白いかもしれない。
| 固定リンク
「IT本」カテゴリの記事
- 「システム開発・刷新のためのデータモデル大全」を読み直した感想~親子頻出アンチパターンは初心者モデラーに多い(2024.08.31)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 『世界一流エンジニアの思考法』が学べる環境を手に入れてかつ継続する方法の感想 #devboost(2023.12.10)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
「電子書籍」カテゴリの記事
- yWriterは映画の脚本を作るためのアプリだったのではないか(2021.01.05)
- 小説分析ツールyWriterの機能を元にストーリーの構造や考え方を解説するpart2(2020.12.31)
- 小説分析ツールyWriterの機能を元にストーリーの構造や考え方を解説するpart1(2020.12.30)
- 考えながら書く人のためのScrivener入門の感想(2020.12.06)
- GitHubが無料でプライベートリポジトリも使えることで小説家にもGitが必須になってきたのではないか(2019.01.11)
コメント