‘epubcheck’ タグのついている投稿

Epubcheckのバージョンアップで仕様が変わったことについて

2023/07/13

 EPUBをリリースする前には必ずW3Cの公的なチェッカーであるEpubcheckに通してエラー等が出ていないかを確認する必要がありますが、そのEpubcheckに制作サイドとしては結構重要な変更があったようなので書いておきます。

OPFのManifestに記述されていないファイルがパッケージに入っていてもエラーにならなくなった

 どうもEpubcheckのバージョンが4.2.6から5.0.0に上がる際にかなり重要な変更があったようです。具体的には4.2.6まではEPUB内のManifestに記述されていないファイルがパッケージ内にあることは許容されておらず、エラー扱いになっていましたが、5.0.0ではエラーにならなくなりました

https://github.com/w3c/epubcheck/releases のEpubcheck v5.0.0のFeaturesにある

report as a usage when no reference were found to manifest items (09244a4), closes #1452
report as usage container resources not listed in manifest (f81b423)

が関連するらしいとのこと。

 まあ5.0.0以降でもEpubcheckの実行時に-uオプションを付けることでファイルの混入をチェックすることはできるようなのですが、扱いとして「エラーではない」ことになったということです。

Epubcheckの出してくるアラートの区分

 ここであらためてEpubcheckの出すメッセージの種類を確認しておきます。以下の4種類の分類があるようです。

・Fatal Error(致命的エラー)
・Error(エラー)
・Warnings(警告)
・Usage(利用法情報)

 このうち、Fatal ErrorおよびErrorは修正しないと流通が許されない種類のもので、Warningsは警告程度のニュアンスなので流通させること自体は問題ないはずですが、電子取次の規約を理由に修正を求められることはあるようです。まあ「非推奨」くらいの意味合いかと思いますので新規にデータを作る際には直した方が無難ではあるでしょう。Usageは単なる内部データの状況のレポートなので出ていても問題は無いはずです。とは言え今回のポイントである意図しないファイルがEPUBパッケージ内に入ったまま流通してしまうことはもちろん良くはないので、管理面でチェックしておきたくはあります。
 また、Fatal Error/Error/Warningsは「標準エラー出力」でアラートを出しているようですが、Usageは「標準出力」扱いなので、ターミナル等でepubcheckを直に使う分には問題ないですが、外部言語等でアラートの内容を取得している場合には「2>&1」のような指定を追加してメッセージをマージする必要があるようです。

-uオプションで混入自体は検出できるが・・・

 さて前述したように、

のように-uオプションを指定すればmanifestに記述されていないファイルの混入をチェックすることはできます。ただし、電書協ガイドのテンプレートに入っているstyle-check.cssに関連するレポートもたくさんUSAGE扱いで出てきてしまいます。これはEpubcheckの機能での選別はできそうにないので、USAGE扱いの中の特定のメッセージだけを出したければ後からフィルタリングするしかないことにはなります。まあstyle-check.css自体、内容確認の際にだけ有効にして使うためのものですので消しても実害はないはずですが、電子取次の内部チェッカーで引っかかって戻ってくる可能性が無いとも言えないのでできればそのままにしておきたいところです。

Epubcheckのアラートをフィルタリングして必要なものだけ出すようにしてみる

 ということでちょっとコードを書いてみました。

 ぐらいの感じでしょうか。ターミナルで

 の形で指定すれば使えます。

 これを取り込んだ「EPUB3トータルデータチェッカー2.5.0」こちらからダウンロードできます。

(2023.7.13)

「EPUB3トータルデータチェッカー」アップル公証対応しました

2022/11/11

 日本語EPUB3用のバリデーションチェックアプリ『EPUB3トータルデータチェッカー』アップル公証対応しました。

http://sanyoshasmds.xsrv.jp/main/?page_id=184

 これは以前から公開していたものですが、macOSのセキュリティ周りの厳格化改訂によって外部に配布して使用してもらうことが難しくなっていたものです。最初の公開時に簡単な説明は書いているのですが、その後チェック項目を追加したりしたこともありますので以下に改めて説明を書いておきます。

動作環境

 Apple silicon/Intel環境ユニバーサル対応
 macOS 12.6(Apple silicon採用Mac)/ macOS10.14(Intel Mac)にて動作確認済です。内部的にPerlおよびJava(Epubcheckで使います)を使っていますので、そちらの環境次第では正しく動作しないかもしれません。

著作権など

 このアプリケーションソフトの権利はJunTajima/三陽社メディア開発室に帰属します。
 また、内包するライブラリ「epubcheck」に関する権利は、同梱したフォルダ「epubchecklicenses」内テキストの記述に従います。

使い方

 アプリケーションを起動すると出てくるドロップウィンドウ内にepubファイルをドラッグ&ドロップするとepubファイルの各パラメータをチェックし、epubファイルと同じ場所にログファイル「EpubTotalDataCheck.log」を出力します。同名ファイルがすでに存在していた場合はテキスト末尾に追記します。

チェック可能なパラメータ

・SarrogatePair Character Check Result
 UTF-16環境でサロゲートペアとして扱われる文字(Unicodeで基本多言語面外の文字)が入っていないかを見ます。

・Unicode IVS Character Check Result
 Unicode IVS(漢字の異体字セレクタ)の異体字表示文字が入っていないかを見ます。

・Unicode SVS Character Check Result
 Unicode SVS(絵文字など)の異体字表示文字が入っていないかを見ます。

・Irregular Space Character Check Result
 U+2004〜U+200Dの特殊幅スペース文字が入っていないかを見ます。

・Voiced Soundmark Check Result
 濁点半濁点が合字扱いで入っていないかを見ます。macOSがFinder等で濁点半濁点を分離して扱う処理をする(Unicode正規化)ため、そこ由来の文字列が混入していないかを見るためのものです。

・JIS2004Character Check Result
 JIS X 0213:2004(JIS2004)で外字扱いとなる文字が入っていないかを見ます。電書協ガイドではJIS2004内の文字のみを使用するように規定しています。

・Adobe-Japan1-6Character Check Result
 Adobe-Japan1-6で外字扱いとなる文字が入っていないかを見ます。多くのEPUBビューアはAdobe-Japan1-6規格のフォントを採用しているため、そこからはみ出た文字は外字画像等にしないと化けるリスクがあります。

・SVG Wrapping Image Pixel Count Check Result
 SVGラッピング配置ページのViewPort記述サイズと画像の実ピクセル数が一致しているかどうかを見ます。電書協ガイド仕様のフィックス型EPUBおよびKADOKAWAフィックスドハイブリッド仕様のチェック対応です。KADOKAWAの仕様についてはこちらを参照してください。

・ImageFile ColorMode Check Result
 EPUB内で使用されている画像のカラーモードにCMYKが使用されていないかを見ます。

・ImageFile PixelCount Check Result
 EPUB内で画像が400万画素を越える画像が使用されていないかを見ます。「Apple Books アセットガイド」の規約に準じたチェック項目です。

・ImageTagFileName Check Result
 imgタグの属性値srcで指定されている画像ファイル名末尾にスペース文字が入っていないかを見ます。epubcheckでスペースが入っていてもエラー扱いにならなくなったため入れました。

・epubcheckのチェック結果
 epubcheckのチェック結果を出します。

 以上です。なお、epubcheck以外の独自追加項目は通知の性格としてはERRORではなくWARNINGで、制作物の性質上無視してよいと判断できるならそれで構わない性質のものと考えています。ご理解の上でご利用ください。

(2022.11.11)

EPUBCheck4.2でのエラーについて

2019/05/22

 先日発表がありましたEPUBの公式データチェッカー、EPUBCheck4.2なのですが、試用してみたところ、これまでのバージョンでは出なかったエラーが表示されてしまいました。具体的には以下のようなエラーです。

ERROR(NAV-011): ./Desktop/test.epub/item/navigation-documents.xhtml(19,73): ‘toc’ nav must be in reading order; link target ‘item/xhtml/p-001.xhtml#toc-2C4CB0422A16-4C9E-B148-05A28E0A49C9’ is before the previous link’s target in spine order.

 従来のバージョンでは出ていなかったエラーが新バージョンでは出るようになったということなので、どういうことなのかちょっと策定に関わった方などに聞いてみたのですが、どうやら以下のような話のようです。

  1. もともとEPUBの仕様としては論理目次(電書協ガイド仕様の場合はnavigation-documents.xhtml)のリンクの表示順はOPFのSPINEの順番と同じでなければならないという決まりがあった
  2. ただ、これまでのEpubCheckにはそれをチェックする仕組みがなく、論理目次のリンクの表示順を自由に変えてもエラーにはならなかった
  3. 今回のアップデートで厳密にそこをチェックするようになり、エラーになるようになってしまった

 確かに規格を厳密に解釈すればエラー扱いになるのかも知れませんが、これに沿ってチェックをすると現在既に市場で流通しているEPUBファイルがかなりの確率でエラー扱いになりそうなのでちょっと困ったなという印象です。EPUB3.0.1に関してはエラー扱いにしないなどの形でもう少し既に大量に流通しているものへの後方互換性を考慮して欲しかったというのが正直なところです。

 とは言え新規に作るものはこのルールに従って作れば良いわけなのでそこまで問題はないはず。過去に作ったものへの対応は今後ファイル受け入れストア側の対応状況を見ながら考えたいと思っています。現場に大きな負担がかからない形で収束すれば良いのですが。

OPFのSPINEブロック

OPFのSPINEブロック

 なお、OPFについて少し解説しておきますと、これはそのEPUBの書誌情報や収録されているファイル等を記述するパッケージとしてのEPUBのコアになるファイルで、その中のSPINEブロックというのは「EPUB内に複数収録されているXHTMLファイルを見せる順番を決める」ことがメインの目的になるものです。ビューア上でEPUBを見ていくとここに書かれている順番通りに内容が表示されます(その他、ページめくり方向の規定や見開き時にページをどちらに配置するかの指定もここ)。今回はここの記述の順番とビューアの目次機能から呼び出す方の目次(論理目次)の記述順が同じでないとエラーになるようになった、という話になります。

(2019.5.22)

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。