iBooks用にRuby on Rails GuidesのePubを自炊してみた

先週の金曜日に日本でもiPadが発売になりました。エアーズでも業務用および開発用として3GモデルとWi-Fiモデルの各1台を購入し、電子書籍ビューワーや JIRA のダッシュボードモニタとして活用しています。

今回は、Rails 3のガイドドキュメントである Ruby on Rails Guides [Edge Guides] から、iPad用の電子書籍フォーマットであるePubファイルを作成してみたので、その手順を紹介します。

ePubとは

ePubとは、iPadの電子書籍アプリのiBooksやソニーの電子書籍端末で採用されている電子書籍ファイルフォーマット規格です。コンテンツをXHTMLで作成しCSSでデザイン制御をおこなえるので、ウェブコンテンツを作成したことのある人には馴染みやすいフォーマットだと思います。

ウィキペディア: EPUB

iPadやiBookストアについては、その閉鎖性について色々と抵抗もあるようですが、ePub自体はオープンな規格で誰でも作成できますし、作成したファイルはiTunes経由で簡単にiBooksのコンテンツとして転送できます。また、iBooksはHTML5にも一部対応していて videoタグで電子書籍に簡単に動画を埋め込むことができます

iPad用の電子書籍フォーマットについても、PDFが良いとか、オープンで軽いウェブブラウザで見るタイプが良いとか色んな意見があるようですが、iPadのビューワーアプリの中では今のところiBooksが一番できが良いと思いますし、データのポータビリティに関しても問題ないと思うので、現時点で僕はePub派です。

Ruby on Rails GuidesからePubを自炊した手順

Ruby on Rails Guidesはウェブサイトとして公開されているので、ヘッダー・フッター・サイドバーなど電子書籍には不要な要素が含まれています。また、スタイルシートにも余分なデザインが含まれているのでそれらも削除する必要があります。

1. GitHubから最新ドキュメントのソースコードを取得

Ruby on Rails GuidesはGitHub上にあるRails関連ドキュメントのプロジェクト docrails の中でメンテナンスされているので、そこから最新のソースコードを取得します。

% git clone git://github.com/lifo/docrails.git

Ruby on Rails Guidesのサイトのソースコードは取得したdocrailsプロジェクト内の railties/guides になります。

2. レイアウトファイルとスタイルシートを変更しサイトを生成

Ruby on Rails Guidesのサイトは、コンテンツのソースコードから同梱のRubyスクリプト rails_guides.rb を使って生成します。その前に、ePub用にレイアウトファイルとCSSファイルを変更しました。変更内容は以下のとおりです。

gist: docrails_guides_epub.diff

変更が済んだら、サイトの生成をおこないます。出力先は output ディレクトリです。

% ruby rails_guides.rb

3. ePubライブラリEeePubをインストールしてちょっとイジる

ePub生成には jugyo さんが公開されている EeePub を利用しました。まず、gemでインストールします。

% gem install eeepub

EeePubはHTMLや画像、CSSといったコンテンツをePub内の同じディレクトリ内にフラットに配置するのですが、Ruby on Rails Guidesのサイトは画像やCSSを別ディレクトリに配置しているので、そのままではePub化したときに画像などへのリンクが切れてしまいます。

EeePubでは、階層化コンテンツには対応されていないようなので、今回は以下のようなモンキーパッチで eeepub/maker.rb を直接修正して対応しました。

gist: eeepub_maker_assets_subdir.diff

4. ePub生成スクリプトを書いてePubファイルを生成する

最後にePub生成用のRubyスクリプトを書いてサイトデータをePubファイルに変換します。スクリプトでは引数として渡されたサイトデータをもとに、ファイルのコピーやクレジットページからの著者データの生成、目次の作成などをおこなっています。

gist: rails_guides_to_epub.rb

スクリプトを実行すると、RubyOnRailsGuides.epub というファイル名のePubファイルが生成されます。

% ruby rails_guides_to_epub.rb /path/to/guides/output

Ruby on Rails Guides ePub版のダウンロード

自炊はイヤだという方のために作成したePubファイルをしばらくダウンロードできるようにしておきます。ダウンロードしたファイルはiTunesのライブラリにドラッグアンドドロップして登録できます。データは上記の手順で生成したもので怪しいファイルは含まれていないはずですが、インストールはあくまで自己責任でお願いします。

Ruby on Rails Guides ePub版: RubyOnRailsGuides.epub[1.2MB]

また、手元のiPadで問題なく閲覧できることは確認していますが、あくまでウェブサイトのスタイルを継承しているので、多少見にくい部分もありますし、ePubのフォーマットや妥当性は検証していません。ePubの検証については標準的なツールがあるようなので、いずれ利用したいと思います。

ePubオーサリングの課題

今回、すべての作業はMac上のエディタとiTunesを使っておこなったのですが、ePubを作るのが初めてということで色々とハマりました。昨日の仕事が終わった後に始めて、日が変わる前に終わらせようと思っていたのが、夜なべになる程度のハマリです。以下、参考までに。

  • iBooksのレンダリングは独特なのでiTunesで実機に配置しないと確認できない
  • iBooksはCSSをメモリにキャッシュするので、ファイルを入れ替えたらiBooksも再起動しないといけない
  • 実際の閲覧状況によって1行に表示できる文字数が大きく変わるので、codeブロックなどはどうしても見切れる

iBooksでのレンダリングについては、Mac上でePubリーダーの Stanza でも確認してみたのですが、iBooksとはまったく異なります。XCodeについているiPad simulatorで確認できるようになるといいですね。

iBookストアでは個人出版も出来るようですし 、いずれ日本版のiBookストアもオープンすると思うので、今後もePub関連の情報を追っていきたいと思います。

Bookmark and Share