運営中

Bookil

iPadとiPhoneのためのPDFリーダー。

何を解いているか

PDFは溜まりますが、増えるのはファイル名の一覧です。表紙も、どこまで読んだかも、リストからは見えません。一度閉じたPDFに戻らなくなるのは、読む気が失せたからではなく、探せないからです。

なぜ作ったか

自分たちがiPadで読むために作り始めたサイドプロジェクトです。既存のPDFアプリはリーダーとしては十分でも、蔵書として並べる部分が弱い。Bookilは表紙を生成して本棚に並べ、読書の進捗をファイルとは別に持ちます。ファイルを削除して取り込み直しても、続きのページから開きます。 PDFを読む機能は無料のまま置く方針です。プランも広告もアップセルも入れていません。

設計の判断

  • PDFKit を外し、ページを画素として持つ

    表示をPDFViewに任せると、描かれた画素はフレームワークの内側で完結します。 BookilはCGPDFDocumentでページを1枚の画像に焼き、セピアやコントラストをその画素へ適用してからページャに載せています。 保険としてPDFKitを併存させる道は採らず、importごと外しました。 代償として、入力フォームを持つPDFは開きません。

    PDFView に任せる案と、CGPDFDocument でページを1枚の画像にしてから色調を適用しページャへ載せる自前構成の対比図
    描画層の置き場所。PDFView に任せる案を捨て、画素をアプリが持つ側へ振った
  • 読書の位置をファイルの外に置く

    読書の位置はPDFのファイルではなく、アプリ側のデータベースに持っています。 ファイルを削除しても履歴は消えず、同じPDFを取り込み直せば続きのページから開きます。 ファイルの実体と読書の記録を切り離す代わりに、書庫としての連続性を優先しました。

    PDF ファイルと ReaderDocument を PDF の /ID という値で結ぶ図。改名・ファイル削除・/ID を持たない PDF の3通りで結び付きがどうなるかを示す
    進捗の置き場所。ファイルを消しても履歴が残るよう、値で結んで切り離した
  • 解像度は落とさず、並列で速くする

    表示を速くするために解像度を落とす選択はしていません。 ページを横帯に分割し、並列で描いて1枚に合わせる形にしています。 等倍で焼いたうえで待ち時間を詰める方向に振ったので、拡大しても文字が甘くなりません。

    1ページを8つの水平バンドへ割り、バンドごとに別の CGPDFDocument から並列に描いて1枚へ合成する流れと、電力・熱でバンド数を8・4・1に切り替える条件の図
    同じ画素数のまま並列に描く経路と、電力・熱でバンド数を絞る条件

提供形態

対応プラットフォーム
iOS / iPadOS
動作要件
iPadOS 18.4 以降 / iPhone
価格
無料(PDF数の上限なし)
配布
App Store
対応言語
14言語
取り込み
iOSの共有メニュー(ファイル、Safari、メール、クラウドドライブなど)
プラットフォーム
  • iOS
  • iPadOS

開発の記録

Bookilを作るなかで書いた記事です。

ほかのプロダクト

同じプラットフォーム向けに作っているものです。

← 自社プロダクト一覧へ