Bibiを単独のアプリとして使えるbi-epub-readerを作りました。

Bibiはepub形式の電子書籍に対応したepubリーダで、bi-epub-readerはElectronでBibiをラップしたスタンドアローンなアプリケーションです。

mu-epub-readerなども作っていましたが、縦書きのepubファイルは対応していませんでした。 縦書きの表示を色々調べてみるとBibiが綺麗な表示だったので、単独で動くアプリケーションが欲しくなってbi-epub-readerを作成しました。

インストール

  1. The latest binaryをダウンロード
  2. アプリを開く

⚠️ このアプリは署名してないので、開くときに警告が出ると思います。

たとえば、macOSの場合は、次のような手順で開かないと署名がないのでひらけないと思います。

  1. bi-epub-reader.appを選択
  2. 右クリックから”開く”を選択して開く

使い方

書籍の開き方は2つあります。

  1. bi-epub-readerを開いてから、epubをD&Dで開く
  2. epubファイルに関連付けて、bi-epub-readerを開く

前者の方法は、Bibi自体が持ってる機能です。

epub-reader

後者の機能は、bi-epub-readerが実装している機能です。

epubの関連付けて開く仕組み

bi-epub-readerではBibiをそのままiframeで表示しているだけです。 Bibiはソースコードも公開されているオープンソースですが、npmパッケージとして公開されているわけではありません。 そのため、Bibiを使うにはHTMLやJSを含んだソースコードをアプリにコピーして利用する必要があります。

このときに、Bibiのソース自体は変更せずにBibiをラップしたアプリケーションとして作成することを目標にしました。 これはBibi自体のアップデートを取り込みやすくすることで、メンテナンス性を上げるためです。 ソースコードを変更してしまうと、新しいバージョンの反映が大変になってしまいます。

一方で、Bibiにはローカルファイルを開く仕組みはないため、ソースコードを変更せずにローカルのepubファイルを開くには少し特殊なことをしています。

bi-epub-readerのElectronアプリが起動すると、ローカルサーバが起動し、開いたファイルを返すAPIサーバが立ち上がります。

Bibiには?book=urlで指定したリモートURLのepubファイルを開く仕組みがあったので、このURLにローカルのAPI URLを指定することで、 ローカルのファイルを開いています。

このように、epubを返すだけのローカルサーバを立てることで、Bibiのソースコードは変更せずにローカルファイルを開く仕組みを実装しています。 また、URLには毎回推測できないIDを含めるようにしています。

Maintainer Month

6月はMaintainer Monthということで、bi-epub-readerのメンテナンス性を高める工夫について書いてみました。 メンテナンスが複雑なオープンソースは持つには色々覚悟がいるため、ラッパーアプリに徹することでメンテナンス性を保つ方向にしました。

Maintainer Month is a reminder for the ecosystem to support, celebrate, and compensate open source maintainers.
Maintainer Month

Maintainer MonthはGitHubが主催していて、オープンソースのメンテナーが集まって情報共有したり、祝ったりするイベントらしいです。

GitHubがGitHub社が依存してるオープンソースのメンテナー900名以上に、500,000ドルを分配したという話もこのMaintainer Monthの一環のようです。 自分もこれの対象になっていて、これで初めてMaintainer Month自体を知りました。

後、一週間しかないですが、Maintainer Monthに乗っかる形でオープンソースのメンテナンスとかGitHub Sponsorsとかについて書けるといいなーと思います。せっかくのイベントだし、色々な人が色々書くと良さそうと思いました。