EPUBの話

2012/11/07
 
@fuba

自己紹介

@fuba として

今日は、EPUB3の話をします

EPUB®はIDPF(International Digital Publishing Forum)が策定する電子出版物の配信並びに交換に使用されるオープンな標準フォーマットです.EPUBは、完全にフリーなフォーマットであり、利用に際してIDPFやその他の団体、特定の企業・個人に対してライセンス料金が発生することはありません。

2012 年 5 月にEPUB2 → EPUB3

  1. XHTML1.1 だったのが、HTML5(っぽい XHTML5 というやつ)+CSS3 (のサブセット) になった
  2. 動画も貼れる!すごい!
  3. 音も出る!最高!
  4. あとどうでもいいけど
わたしたちにとって一番大きいのは、日本語組み版機能が強化されていることです。縦組み、段組み、行末の揃え、禁則、ルビなどがサポートされます

EPUB3 対応ビューア

  1. iBooks on iOS
  2. Readium
  3. Kobo
  4. Kinoppy
  5. Kindle
  6. Sony Reader
  7. ほかいろいろ
だいたいサポートしている機能が充実している順。対応状況はまちまち、でも結構みれる

フォーマット

EPUBはこんな感じのファイルを集めてZIPで固めたもの

EPUB3 に必須のファイル

  1. mimetype: application/epub+zip ってだけ書いたファイル
  2. META-INF/container.xml: ルートファイルへのパスを書いとくファイル
  3. 適当なディレクトリ/content.opf: ルートファイル
  4. 適当なディレクトリ/適当なファイル名.xhtml: ナビゲーションファイル(もくじ)

META-INF/container.xml

content.opf

ナビゲーションファイル

作るときに地味にひっかかるポイント 1

mimetype は無圧縮で、ZIPの最初に置かないといけない

my $zip = Archive::Zip->new();
my $member = $zip->addFileOrDirectory(
    './mimetype',
);
$member->desiredCompressionLevel( COMPRESSION_LEVEL_NONE );
...

作るときに地味にひっかかるポイント 2

epub validator で error 出ても案外うごく

作るときに地味にひっかかるポイント 3

Kobo 用は拡張子を .kepub.epub にしないといけない

試しに作ってみた EPUB ファイルの構成

unzip c08011249b1c3dc46a7881bba2bfc49e.epub
Archive:  c08011249b1c3dc46a7881bba2bfc49e.epub
  extracting: mimetype                
    inflating: META-INF/container.xml  
    inflating: OEBPS/content.opf       
    inflating: OEBPS/css/stylesheet.css  
    inflating: OEBPS/nav.xhtml         
    inflating: OEBPS/xhtml/2008-05-24.xhtml  
    inflating: OEBPS/xhtml/2008-09-19.xhtml  
    inflating: OEBPS/xhtml/2008-07-01.xhtml  
    inflating: OEBPS/xhtml/2009-07-18.xhtml  
    inflating: OEBPS/xhtml/2011-01-12.xhtml  
    inflating: OEBPS/xhtml/2009-03-20.xhtml  
    inflating: OEBPS/xhtml/2008-09-08.xhtml  
    inflating: OEBPS/xhtml/2008-06-25.xhtml  
    inflating: OEBPS/xhtml/cover.xhtml  
    inflating: OEBPS/xhtml/2008-06-26.xhtml  
    inflating: OEBPS/xhtml/2008-05-30.xhtml 
EPUB3 を作るのは簡単で良かったですね 〜完〜

ちょっとまって

EPUB3 は JS が使える…、つまり

とりあえず

(function() {
    var requestAnimationFrame = (function() {
        return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback, element) {
            return window.setTimeout(function() {
                return callback();
            }, 1000);
        };
    })();
    var i=0;
    var step = function() {
        document.getElementById("container").style.paddingLeft = i+"px";
        i = i == 0 ? 20 : 0;
        requestAnimationFrame(step);
    };
    requestAnimationFrame(step);
})();
via http://hitode909.hatenablog.com/entry/2012/08/09/202739
これを、XHTML ファイルに直書き(epub, kobo 用)

Readium で開いてみる

iBooks

Koboで開いてみる

Kobo に期待なんかしない方が…
すごい…

調子に乗って video タグを試してみる

iPhone いつもこんなんですよね

結論

EPUB3 作るの簡単だし、まあまあ便利そうだけど、プラットフォームでの実装状況にけっこう差があるし、 HTML5 のつらみをそのまま電子書籍の世界に持ち込んでいる感じがしますね…

おわり