KOBO EPUB (kepub) の解析

KOBO EPUB について

Kobo Touch では EPUB2 と EPUB3 でレンダリングエンジンが異なり EPUB3 の方は KOBO EPUB (kepub) と呼ばれる独自拡張フォーマットが使われています。EPUB3 のレンダリングでは ACCESSの「NetFront® BookReader v1.0 EPUB Edition」が使われているようです。この KOBO EPUB の仕様は公開されていません。

通常の EPUB ファイルの拡張子を .kepub.epub に変更するだけで KOBO EPUB として認識されますが、書籍を閉じた位置の保存やしおり、マーカーや書き込み、全文検索に問題が生じます。

また、楽天 kobo イーブックストアから取得できるほとんどの日本語の EPUB は独自 DRM (kdrm) がかかっています。青空文庫EPUB にも DRM がかけてあるため、これも中身を調べることができません。

ところが、「プレビュー」には DRM がかかっていません。プレビューで取得したものと実際の EPUB が同じかどうかはわかりませんが、とりあえずプレビューを取得して中を調べてみようと思います。

プレビューの取得

まず、ブラウザから http://rakuten.kobobooks.com/ にログインし、適当な書籍を探し、「プレビューを取得」をクリックします。

次に、Kobo Desktop を起動すると、自動的にダウンロードされます。

ファイルは、「c:\Users\ユーザ名\AppData\Local\Kobo\Kobo Desktop Edition\kepup」フォルダに保存されます。

ファイル名は、「e767106e-37ff-48e7-8494-c186e11ad8f5」のような 16進数の文字列になっています。拡張子を epub にすれば、EPUB リーダで読めます。

プレビュー EPUB の中身

タグ内には以下の javascriptcss がありました。

<!-- kobo-style -->
<script type="text/javascript" src="js/kobo.js"></script>
<style type="text/css" id="koboSpanStyle">.koboSpan { -webkit-text-combine: inherit; }</style>


文章はすべて、以下のような span タグで囲ってあるようです。

<span class="koboSpan" id="kobo.1.1"></span>

ここで、id の値は「kobo.x.y」であり、x はファイルごとの連番、y は絶えず 1 でした。

例: h3 タグ

<h3 id="heading_id_3" class="sigilNotInTOC"><span class="koboSpan" id="kobo.5.1">見出し</span></h3>

例: p タグ

<p class="c735"><span class="c736"><span class="koboSpan" id="kobo.134.1">複数の文章</span></span></p>

例: ruby タグ

<ruby><span class="c527"><span class="koboSpan" id="kobo.13.1">漢字</span></span><rt><span class="c528"><span class="koboSpan" id="kobo.14.1">ルビ</span></span></rt></ruby>

例: a タグ

<a href="R4524797354500_0011.xhtml#R4524797354500_0009_No00001"><span class="koboSpan" id="kobo.2.1">見出し</span></a>

EPUB Converter の改良

上記に基づいて「Kobo Touch で達人出版会の電子書籍をもっと読みやすくする」で作成した EPUB Converter を改良しました。