すごい広島を紹介するための書籍(通称、薄い本)である、すごいHiroshimaの本というものを作成しました。 作成した主の目的はオープンソースカンファレンスで展示をするためです。
作成した電子書籍はすごいHiroshimaの本置場というところに置いています。 ePubとPDFを提供しています。
OSC2014広島編
せっかく電子書籍を作ったので、興味をもってもらうために、オープンソースカンファレンス2014広島のLT駆動開発 ベストセッションズ – 凪のライトニングトークの中でライトニングトークをしました。
題して、すごいHirohsimaの本のここがヒドいです。
少し、補足。
しつこいですが、我馬は広島のラーメン屋です。博多ラーメンを提供します。
私とすごい広島の章は実際には4人しか書いていません。 一人で5役している人がいます。誰やねん。あ、でも一役は入れ替わる可能性も。
第71回 WEB TOUCH MEETING
OSC2014広島と同日に行なわれたWEB TOUCH MEETING 71で、Web製作者向けにこの書籍をつくるのに利用技術がどんなものなのか、すごい速さでざっくりと紹介しました。 対象者をWebの初心者にすればよかったと少し反省しております。
速さ自体はやや意図的にやった部分はあるのですが、いろんな参加者がいて真ん中あたりの人を対象にしてしまった感じがあります。 よくわからないけど、キーワードをひろってもらったりしてもらえた良いかなぁ。という感じでつくりました。
それよりも図はもっとがんばらなければ。
スライドは前半のすごいHiroshimaの本のここがヒドいの部分はカットしてアップロードしています。
そして補足。
電子書籍をつくるためにはRe:VIEWを利用しました。はじめて挑戦する場合はクイックスタートガイドを読めば良いと思います。
Re:VIEWは電子書籍をつくりたい場合でも、技術書を書きたい人向けのものっぽいです。プログラミングなどをしてない人には少し扱うのが難しいかもしれません。 ただ、環境さえ用意できれば、使うこと自体はは難しくはないと思います。 書くだけとかなら。
本の中でグラフをかくのに今回gnuplotを利用しました。 gnuplotは理系の学生であれば利用したことが多いと思われるグラフ作成ツールです。コマンドラインから利用します。
Re:VIEWではgnuplotのコマンドを書く方法が用意されていて、PDFに変換する時はPDF用の画像をつくってくれて、ePubに変換する時はePub用に画像をつくってくれます。 ありがたい。
この本をつくるにあたって、最初にしたことは、ePubとPDFに変換する部分を自動化したことです。 もし途中で執筆に誰かが参加しようと思った時に作成されるものをわかりやすくしたり、本が生成されてるところを見せて、興味をもってもらおうと思ったというのが主な目的です。 他にも執筆に集中してしまって、いざePubやPDFに変換する際にトラブルで間に合わないという自体を避けるなどの理由もあります。 実際に文字化けとかグラフが生成されなかったり、予期していなかったエラーを事前に発見することができました。
Octokitは付録の「すごい広島の統計情報」「すごい広島の参加者」を作成するために、利用しています。すごい広島のサイトの情報がおいてあるGitHubのリポジトリgreat-h.github.ioから情報を取得して、gnuplot用のCSVを作成したり、Re:VIEWの.re
ファイル内に挿入する文字列を作成しています。
Octokitを使った例として、GitHub戦闘力があります。(GitHub戦闘力が完全にこれを作るときの副産物である)
蛇足ですが、この電子書籍には他にも最新の情報を取得して、更新している部分がいくつかあります。 コミットの数なんかは随時変化していくので、ePubやPDFを作成する際に最新情報を使うようにしています。
対象読者に対して説明不足になってしまうのですが、この電子書籍はgit pushしたら自動生成するようにしています。 これを実現しているのがCIサーバで今回利用したサービスがWercerです。 CIサーバでできることは結局は自分のコンピュータできることと基本的に同じです。 しかし、CIサーバを使うと基本的にクリーンな状態でePubやPDFを作成することができます。 これがどんな時に嬉しいかというと、執筆者が増えた時に、ePubやPDFをつくるのに、自分が追加し忘れたファイルがないことを保証できます。 (一部のファイルがキャッシュされたりはじますが…) また、ePubやPDFを生成するための手順をコードに落とす必要がでるため、作成方法が明確なります。
こういったことを早めにやっておくと、本を作成するための全体像を把握しやすくなります。
Werckerを使う際にRe:VIEWを使うための仮想マシン(box)も作成しました。 この詳しい話は今回割愛しますが、リポジトリは晒しておきます。
Werckerで作成したePubやPDFはAmazon S3へアップロードしています。
作成したファイルはtmp/great-h-book-[バージョン番号]
というファイル名にして保存しています。
これらのファイルは1週間たつと削除されるようにしています。こちらはAmazon S3の機能です。
ただ、masterブランチものをCIサーバに動かした場合は、great-h-book
というファイル名にして、消えないようにしてあります。
(厳密にはファイル名はオブジェクト名ですが…)
Amazon S3はとても安価で信頼性も高いので、最近、成果物はなるべくS3におくようにしています。特に変更がもうないものを置くのが良いと思います。
最後に、ePubやPDFが生成されたことがみんなに伝わらないと意味がないので、Twitterに流すようにしています。この時にユニークなハッシュタグをつけるようにしています。 夜フクロウは特定のキーワードを含むツイートを音声つきで通知する機能があるので、これも使ってます。 とても便利です。
継続的デリバリなんて言葉を使いましたが、みんなで一緒になって何かをつくるときはみんが嬉しくなるようにやるのが大切だと思います。 書く人も、確認する人も、作りたい人も、読む人もみんなチームだよね。
意外と長くなってしまった。 関連する技術を深く掘り下げて紹介して欲しい要望があればLT駆動やWEB TOUCH MEETINGで紹介したいと思います。