mubook-honは、Dropboxに保存したEPUB/PDFファイルをブラウザで読めるウェブアプリです。 Notionと連携して、読書メモや進捗をNotionに記録できます。

URLが https://mubook-hon.vercel.app/ から https://mubook-hon.jser.workers.dev/ に変更されました。

前回の記事から約2年半が経ち、大きな変更をしたので紹介します。

EPUBビューアーをBibiからfoliate-jsに移行

EPUBの表示エンジンをBibiからfoliate-jsに移行しました。

foliate-jsはFoliateというLinux向けの電子書籍リーダーのJavaScript実装です。 Web Componentベースで実装されており、カスタマイズ性の高い点が特徴です。

Bibiと比較して、次の点が改善されました。

mubook-hon on PC

mubook-hon on Mobile

9ゾーンタップ設定

画面を3x3の9ゾーンに分割し、各ゾーンにアクションを割り当てられるようになりました。

設定画面から、各ゾーンに「次ページ」「前ページ」「メニュー」「閉じる」「なし」を割り当てられます。 プリセットとして「Default」「Right Hand」「Left Hand」を用意しています。

Tap Zones

VercelからCloudflare Workersへ移行

ホスティングをVercelからCloudflare Workersに移行しました。

Notion APIはCORSに対応していないため、ブラウザから直接APIを呼び出すことができず、プロキシが必要です。 VercelのServerless Functionsには4.5MBのBodyサイズ制限があり、今後の障壁になる可能性があるためCloudflare Workersへ移行しました。 Next.jsをstatic exportで公開し、Cloudflare Workersでプロキシを実装することで、同一ドメインでシンプルな構成になりました。

O’Reillyハイライトインポート

Kindleに加えて、Learning Platform - O’Reilly Japanのハイライトも半分自動でインポートできるようになりました。

インポートページでは、コピーボタンとブックマークレットを用意しています。 ブックマークレットをブックマークバーにドラッグしておけば、ワンクリックでハイライトを抽出して、それをmubook-hon形式でNotionにインポートできます。

最近のOreilly Learningでは、AI翻訳で日本語で書籍が読めることが多くなったので、Oreillyのアプリで読んでそのハイライトをNotionに取り込みたい時に使っています。

ACM経由なら$174/yearで利用できるので、結構おすすめです。

IndexedDBのキャッシュ問題

Safari/iOSでは、IndexedDBにBlobを保存すると、ページ遷移時などにBlobの破損が発生しました。この問題はiOS 17.4.1から報告されており、iOS 18でも発生していました。 mubook-honでは、SWRのキャッシュ実装でこの問題が発生したため修正しました。

Blobオブジェクトのsizeやtypeプロパティは存在するものの、実際にデータを読み取ろうとすると壊れている状態になります。

対策として、BlobではなくArrayBufferを保存するように変更しました。

// Before: Blobを直接保存(Safariで破損する可能性あり)
await db.put('cache', blob, key);

// After: ArrayBufferとして保存
const arrayBuffer = await blob.arrayBuffer();
await db.put('cache', arrayBuffer, key);

// 読み出し時にBlobに変換
const arrayBuffer = await db.get('cache', key);
const blob = new Blob([arrayBuffer], { type: 'application/epub+zip' });

まとめ

mubook-honは、Dropboxに保存したEPUB/PDFファイルをブラウザで読めるウェブアプリ かつ 読書メモの管理ツールです。 自分でもよく使っていて、EPUBをよく読むためインクリメンタルにレンダリングできる方式を求めてfoliate-jsへ移行しました。

飛行機などで完全オフライン対応が欲しくなるため、Service Workerでの対応を検討しています。

また、Amazon、一部のKindle本がEPUBまたはPDF形式でのダウンロードに対応へ。2026年1月20日からというニュースもあり、EPUBリーダーの需要は増えそうです。

書籍リーダーは7回目(mubook-honを2回作り直してる)ぐらいですが、だいぶ満足度の上がるものを作れるようになった気がします。