Open1

epub

スースー

概要

目的

epubのファイル形式について調査し、翻訳+epub化など自動化する際のはまりポイントを明らかにする

  1. ファイルの取り扱い
  2. ファイルでバグを孕みやすいような背景について
  3. 現在の標準仕様が何か
  4. Kindleが対応しているepubの形式は何か

事前にユーザーがいる場合、共有した方が良いこと

  1. epub2以前の使用であれば、うまく翻訳とepub化が動作しない可能性を見せられるようにすること
  2. 読み込まれる先のリーダーが何かを指定しておかないと、レイアウト崩れが起こる可能性があることを見せられるようにしておくこと
  3. Content-Typeだけではなく、Content-Dispositionを使ってダウンロード時のファイル名も指定した方が良い

epubとは

EPUB(イーパブ)は、国際電子出版フォーラム(International Digital Publishing Forum、IDPF)が策定した、オープンフォーマットの電子書籍ファイルフォーマット規格である。「EPUB」は”Electronic PUBlication”の意味を持ち「ePub」「epub」などと表記される場合もある。 EPUBはXML、XHTML、CSSおよびZIPに基づいた規格であり、対応するハードウェアやアプリケーションソフトウェアは多く、電子書籍ファイルの標準となっている。
2014年11月5日にはISOより “ISO/IEC TS 30135” として刊行され、国際規格に近い段階である技術仕様書として標準化された。

epubでバグを孕みそうな仕様について

最新版: EPUB 3.0

  1. 縦書き・ルビも含む日本語組版に対応しており、多くのEPUBリーダがこれらを実装している
  2. しかし、EPUBリーダごとに挙動が異なること、出版側の意図した通りの結果にならないことがある

これらの諸問題に対応するため、日本電子書籍出版社協会(電書協)が『電書協 EPUB 3 制作ガイド』を策定しており、日本の電子書籍出版では電書協仕様に準拠することが業界標準となっている。
ただし、古いバージョンのファイルについてはこの限りではないため、注意が必要。

リーダーによって対応が変わる

EPUB3についての話を前提とする。

  1. 日本語の様々な組版に対応できるようになった一方で、電子書籍リーダーが対応しきれていない場合がある
  2. 日本語組版に対応しているものの、複雑な組版になると表現できない場合がある
    2−1. 日本語組版を表現する技術としてCSSを用いているためです。CSSの特性上、縦組みと横組みが同一ページに混在する場合などは、いずれかの指定を無効にする必要があるため。

チェッカーが存在するため、そちらで確認しても良い

https://pagina.gmbh/startseite/leistungen/publishing-softwareloesungen/epub-checker/

PHPの場合のepubを取り扱うライブラリについて

https://github.com/lywzx/php-epub
https://github.com/justinrainbow/epub

どちらもあまりメンテされてなくてどうしようかなーという感じw

参考

https://www.hxa.name/articles/content/epub-guide_hxa7241_2007.html
https://zenn.dev/kawachi/articles/af3bebb55e3668
https://blog.lqd.jp/php/phpepub/
http://ebpaj.jp/counsel/guide
https://techracho.bpsinc.jp/genki/2018_10_25/63573
https://github.com/yunreading/EpubParser