[WIP] きのこ本を勝手に電子書籍(epub)化
はじめに
- いわゆる「きのこ本」とよばれる書籍があります。「プログラマが知るべき97のこと」とかのシリーズものです。
- これらの書籍は CC-by-3.0 などでライセンスされているため、著作者名を明記することで、自由に使用することができます(改変もOK。商用もOK)
- そこで、きのこ本を勝手に電子書籍(epub)化してみました。紙の書籍は持っていますが、電子書籍は持ち運びが便利ですよね。
- その際の作業メモとか思ったことなどを残しておきます。主に「プログラマが知るべき97のこと」での作業がメインです、それ以外の書籍についても含まれているかも。
- 後で追記するかも。
データの入力
書籍の各コラムは自由に使えるのですが、紙の書籍のデータを電子データにしないと電子書籍にできないのでデータの入力が必要です。
といっても、実は「きのこ本」の非公式データは、ネットワーク上にいくつかあるみたいで、今回は以下のサイトの内容を使わせていただきました。
(ほかにも、wikisource にもあるみたいですが、上記ページのコピーのように見えました)
ただしいろいろとチェックしてみると、結構抜けがあったり、誤字(入力ミスや OCR 誤り)などがありそうなので、手元の紙の書籍と見比べてこまごまと修正しました。
自分で全部作業するよりはかなり省力化できていますが、それなりに手間がかかりました。目が痛い。
電子書籍化の方法
まず、最終形の電子書籍のフォーマットとして、一般的だと思われる epub 形式にしようと決めました。
変換するツールとしては pandoc
を利用することにしました。
これは epub 以外の形式として html などにも変換できると良いと思ったためです。
そして、入力ファイルは pandoc の独自拡張のマークダウン形式としました。
マークダウンにしたのは、そこまで複雑な構造はないだろうし、十分だと思ったためです。
しかし、実際に作業すると意外と困ることが多かったです。
複数言語が混じっているとか、テーブル構造がマークダウンで書けないケースがあるとか、ルビがあったり。
もしかしたら、入力フォーマットを html として、意味的なマークアップをする(装飾的なマークアップをしない)ほうがよかったのかもしれません。
(見た目は、 pandoc で html -> html 変換をして、出力テンプレート側で装飾すれば良いのではないかと思いました)
画像データ
「プログラマが知るべき97のこと」の、45 番目のコラムに画像がついていました。
英語版の wiki を探して(既に存在していなかったので、 Internet Archive で掘り起こしました)、元の画像そのものは手に入りましたが、そのまま使うのはどうかと思ったので、自力で作り直してみました。
その際、拡大縮小されても大丈夫なように SVG でつくってみました。
しかし、いくつかの電子書籍リーダーで表示してみたところ、サイズがうまく表示されなかったり(リーダー毎に表示サイズが変わっていたり)しました。
結局 PNG に変換して使用しています。
まだ、しばらくは SVG の対応は難しいのかもしれません(確認したのは 1 年ぐらいまえなので、最近は改善しているのかもしれません)。
文字や表の色
同様にコラムには表が含まれているものもありました。
その際、普通にテーブルを作り、CSS で色を指定してしまっていました。
しばらくはそれで問題ないと思っていたのですが、電子書籍リーダーによっては、紙面の色や文字の色を変えられるものがありました(夜間モードやカスタマイズなど)。
そうすると、固定で色を指定していると、うまく表示されないことがありました(CSS で表の枠線を黒指定してあり、夜間モードで背景が黒になると、枠線が見えなくなる)。
基本的には、色はデフォルトの背景色と前景色を使うべきで、CSS では変えるべきではないようです。
表紙について
「きのこ本」はオライリー発行の本なので、非公式版の電子書籍もなんとなくオライリー風の表紙画像にしたいと思いました。
オライリー本の多くは、表紙が動物の細密画(?)っぽい感じのものが多いと思います。
そこで動物は避けて、それ以外のものをなんとなく細密画っぽい感じにして使用することにしました。
たとえば非公式版「プログラマが知るべき97のこと」の表紙は、 Wikipedia の「シイタケ」の項から画像を借用し、加工しました。
この画像は CC-by-2.0(表示 2.0 一般)でライセンスされています。
- File:Shiitakegrowing.jpg
- Author frankenstoen from Portland, Oregon
- This file is licensed under the Creative Commons Attribution 2.0 Generic license.
- https://creativecommons.org/licenses/by/2.0/
加工には gimp
(かなり古いバージョンだったはず)を使用しました。
細密画っぽい感じにするには、試行錯誤をしてとりあえず完成しました(なんとなく今一つですが)。
しかし、後から考えると何度も処理できるように(別の画像も同じように処理できるように)、コマンドラインで加工する仕掛けを作ったほうが良かったかもしれません。
また、表紙のイメージカラーは「色覚多様性」対応や白黒表示を考慮して、オライリー発行の書籍とは少し色をかえてみました。
たった三色(黒、白ともう1色)なのに、かなり大変でした。
もしかしたら、書籍のタイトルは袋文字にして見やすくしたほうが良かったかもしれません。
その他の「きのこ本」
いわゆる「きのこ本」は現状、全部で 5 冊あります。
- 「プログラマが知るべき97のこと」
- 「ソフトウェアアーキテクトが知るべき97のこと」
- 「プロジェクト・マネジャーの知るべき97のこと」
- 「ゲームクリエイターが知るべき97のこと」
- 「ゲームクリエイターが知るべき97のこと 2」
もし見てみたかったら、GitHub までどうぞ。
誤字・脱字などあったら、プルリクください。