Entamy Platform

entaPub — どんな EPUB も、安全に、最後まで読む

壊れた本も、作りの古い本も、悪意のある本も。entaPub は EPUB を安全に開き、直せるところは直して、本の姿を保ったまま読み手へ渡す読書エンジンです。

開けない本を、なくしたい。 EPUB は世界中で使われる電子書籍の形式ですが、実際に出回っている本には、規格どおりでないもの、途中で壊れたもの、古い作りのものが少なくありません。entaPub は、そうした本でもできる限り開き、しかも読む人の端末を危険にさらさない、Rust で書かれた EPUB の読み取りエンジンです。

特徴#

壊れていても読める

まず規格どおりに厳密に読み、だめなときだけ XML の修復、HTML としての読み直し、本の組み立て直しへと段階を追って復旧します。

何を直したかが分かる

どの段階でどう直したかを、確からしさと一緒に診断として残します。「なんとなく表示できた」で終わらせません。

本を開くだけで外へ通信しない

外部の CSS や画像を読みに行かず、本の中にあるものだけで組み立てます。

実行できるものは取り除く

script・iframe・javascript: などを外し、外したことを記録します。

本の外のファイルに触れない

../ や絶対パスで本の外を指す参照は受け付けません。

大きすぎる本でも止まらない

ファイルの大きさ・展開量・入れ子の深さ・要素の数に上限を置き、極端な本でも端末を固まらせません。

メモリ安全

Rust の unsafe を禁止し、AFL++ による fuzz で壊れた入力を大量に試しています。

本の姿をそのまま届ける

傍点・縦書き・字下げは本文の一部。危険な指定だけを外し、縦書き・ルビ・固定レイアウト・見開きを保ちます。

EPUB 2 も EPUB 3 も

新しい本も、古い作りの本も、同じ入口で読めます。

読むことと、作ること#

entaPub には、同じ入力から必ず同じ EPUB を組み立てる「Builder」も含まれています。KuroEditor で書いた原稿を EPUB に仕上げるのはこの Builder、KuroViewer で本を開くのは Reader。読む側と作る側を同じ考え方で作ることで、Entamy の製品は電子書籍を最初から最後まで自分たちの手で扱えます。

対応形式EPUB 2 / EPUB 3(固定レイアウト・縦書き・ルビ・見開き)
復旧厳密 → XML 修復 → HTML として読み直し → 本の組み立て直し(各段階を診断として記録)
安全性外部通信なし・実行要素の除去・本の外への参照の拒否・資源の上限
実装Rust(unsafe 禁止)・AFL++ による fuzz
使っている製品KuroViewer(読む)・KuroEditor(作る)
提供形態Entamy の製品に組み込んで使用(オープンソース化は未定)

オープンソース化する場合は、Kuro License(MIT + 権利者表記)で公開する予定です。

Products & Services

製品

このブランドの製品情報は準備中です。