4
7

AozoraEpub3の改造

Last updated at Posted at 2020-05-10

AozoraEpub3とは青空文庫形式のテキストをEPUBに変換することができるソフトウェアである。ただ、このソフトウェアはEPUBの規格にきちんと対応していない部分が残っている。その部分の修正をどのようにしているかを書いています。JAVAで書かれたオープンソースのプログラムなので、JAVAがわかれば改造できる。そのためにEPUB規格に沿うように改造しています。EPUBの種類が色々ありますが、電書協EPUBをもとにEPUBの規格を書いていきます。

改造版AozoraEpub3では電書協EPUBに対応したEPUBを作成します。

EPUBバリデーションの問題
AozoraEpub3ではナビゲーション文章の部分にEPUBチェックエラーが出やすい。そのために修正を行ったが全ての場合についてのチェックが難しい。

ソースコード

AozoraEpub3の元のソースコードはここで、
https://github.com/hmdev/AozoraEpub3

私が修正したコードは
https://github.com/kyukyunyorituryo/AozoraEpub3

プルリクエストではOpenJDKの問題も出てきている。
https://github.com/hmdev/AozoraEpub3/pull/12
オラクルのJAVAが有償サポートになったのでOpenJDKに切り替える人が増えた。オラクルからOpenJDKに切り替えて実行したときにエラーが出ることが有る。

 EPUBビュワーでの表示の問題。
EPUB3のビュワーはReadiumを使っていたが、最近は超縦書で見るようにしている。AozoraEpub3を超縦書で表示したときに画像が2ページにまたがって表示されることが有る。原因は画像にスタイルシートが指定されていなかったから。
 EPUBリーダーでは、ソニーリーダー、kobo、キンドルが多かったが。今は紀伊国屋、ブックウォーカーなどの国内での表示に対応する必要が出てきている。

開発環境の構築

https://github.com/hmdev/AozoraEpub3
をクローンしてからIDEなどでビルドしました、最近はライセンスの問題からOpenJDKを利用することにしています。 Pleiades All in Oneを使っている関係で、AdoptOpenJDKを利用しています。
 元のソースにビルドファイルがなかったので、ビルドファイルを作成した。クラスパスにAozoraEpub3/lib/ のフォルダーの中身を指定すると実行が可能になるだろう。

 アプリケーションの実行はAozoraEpub3/src/フォルダーの
AozoraEpub3Applet.java。コマンドラインはAozoraEpub3.javaで実行する。

リリースビルド

 JAVAでビルド作られるものは実行ファイルをjar等にしたファイルか、フォルダーまるごとにしたjarができる。jarをさらにexeなどに変換する場合もあるが、ここではやらない。
 AozoraEpub3では実行ファイル本体だけではなくテンプレートファイルなどを読み込んで実行するので、その他のファイルも必要となる。Antなどのビルドツールに、どのファイルをリリースに含めるかを書いておく。
 そのときに注意が必要なのは、初回実行時に生成される設定ファイルや、web小説のキャッシュなどを含まないようにすること。

よくあるバグの修正例

EPUBファイルのOPFのテンプレートは次のフォルダーの中のpackage.vmに入っている。
template/OPS/package.vm

prefix="ebpaj: http://www.ebpaj.jp/"
を追加して

prefix="rendition: http://www.idpf.org/vocab/rendition/#"
を削除した。

最近はprefixにebpajを指定する電書協になっていたので変更した。

最新のビルド環境はGithub ActionsのJava21でgradleになっている。

GitHub ActionsでJavaプロジェクトをビルドしています。

参考

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7