メインコンテンツにスキップ

ArtinTech Solution

Offline E-Paper Reading with a Service Worker and a Web App Manifest

オンラインで新聞を読むときのいちばんの不満は、デザインではなくトンネルです。読者は家で号を開き、駅の間で電波が途切れる電車の中で読み終えます。Inkfold 1.1では、電子版をインストール可能なWebアプリにし、開いた号をオフラインでも読めるようにしました。アプリストアも別のコードベースも不要です。

編集部の設定から生成するマニフェスト

Webアプリマニフェストは静的ファイルではなくルートとして提供しています。発行元の設定からサイト名、キャッチフレーズ、ブランドカラーを取り込み、3つのアイコンを指定します。拡大縮小できるSVGと、192ピクセルと512ピクセルのPNGで、大きい方はmaskable指定にしてAndroidがどんな形にも切り抜けるようにしています。編集部が新聞名を変えれば、インストール済みアプリの名前も変わります。再ビルドは不要です。

3つのシンプルなルールのService Worker

Service Workerは一気に読み切れる小ささに保ちました。

  • 紙面画像と静的ファイルはキャッシュ優先。ファイル名にランダムな部分が含まれ変わることがないので、キャッシュは常に正しい内容です。
  • HTMLはネットワーク優先。オンラインなら常に今日の1面が表示され、キャッシュはネットワークが使えないときだけ使います。
  • 編集画面と読者アカウントはキャッシュしない。管理画面とアカウントページへのリクエストは直接ネットワークに送ります。

キャッシュ名にはバージョンを付け、新しいService Workerが有効になったときに古いバージョンを削除するので、更新後に古いファイルが残ることはありません。

リーダーが号全体を要求する

読者がたまたま見たものだけを保存すると抜けが生じます。そこで号を開くと、リーダーのスクリプトが、訪問者が閲覧を許されたすべてのページの中サイズ画像をService Workerにメッセージで伝え、Workerが足りないものを1号あたり最大80枚までバックグラウンドで取得します。ロックされた有料ページがこのリストに入ることはありません。権限のない訪問者には、そもそも画像が送られないからです。

3台のスマートフォンに表示したInkfold電子版:トップ、リーダー、ベンガル語画面
ブラウザからインストールすると、ネイティブアプリのように全画面で開きます。

記事をあとで読むために保存

オフライン閲覧と相性がよいのが「あとで読む」リストです。ログインした読者は記事や切り抜きをワンタップで保存でき、媒体名・日付・ページとともにアカウントページに表示されます。保存処理は冪等なので、二度タップしても同じ記事が二重に保存されることはありません。また最初に権限を確認するため、有料号のロックされたページの記事は、読む権限のない人には保存できません。

保存した記事と設定が並ぶInkfoldの読者アカウントページ
保存した記事、メール設定、支払い履歴を1か所で確認できます。

ポイント

  • マニフェストを設定から生成し、インストールしたアプリがブランドに従うようにする。
  • 変わらないファイルはキャッシュ優先、HTMLはネットワーク優先、非公開領域はキャッシュしない。
  • 完全なオフライン用コピーに必要なものを、ページからService Workerに伝える。
  • 訪問者が見られない内容はキャッシュしないどころか、そもそも送らない。

シリーズ前回は見開き表示でした。スマートフォンのブラウザメニューから Inkfoldのデモ をインストールして試せます。ソフトウェアは Charming Theme で入手できます。

読者のホーム画面に自社の新聞を置きたいとお考えですか?ご相談ください — ArtinTech Solution は出版社向けのプログレッシブWebアプリを開発しています。

Share this article

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です