Fincs

横断/運用基盤 / PWA

最終更新: 2026-07-14

横断/運用基盤 / PWA

概要

fincs サービスを PWA(Progressive Web App)として提供するための基盤レイヤ。Web ブラウザから fincs を「アプリのように」ホーム画面に追加して使えるようにし、起動高速化・オフライン対応の一部・通知受信などのアプリ的体験を提供する。

主な構成要素:

  • PWA インストール対応: ホーム画面追加用のメタ情報(マニフェスト)・アイコン提供
  • Service Worker: 静的アセットの事前キャッシュ・通知受信・OS バッジ更新を担当
  • PWA 起動時の自動遷移: ログイン済みユーザーが PWA を起動した際、最後に訪問していた講座ページへ直接遷移する仕組み
  • 配信キャッシュの無効化: リリース時に CDN(CloudFront)のキャッシュを全パス無効化し、最新版を即座に配信
  • 更新検知 + リロード促進: 新バージョンがリリースされたタイミングで内部的に検知し、必要に応じて画面リロードを促す
  • ストレージ容量管理: ブラウザの localStorage が満杯にならないよう、自動で不要なキャッシュ痕跡を削除する仕組み

主な利用想定は、スマートフォン・タブレットでアプリ的な体験で fincs を使う、iOS で通知機能を使うために PWA 化する、デプロイ後にユーザーが最新版を即座に受け取る、など。

iOS は PWA 化が前提: iOS Safari は標準では通知機能を使えない。ホーム画面追加で PWA として動作させた状態でのみ通知を受け取れる仕様。CS で「iOS で通知が来ない」相談時は PWA 化を案内する運用。

PWA 機能トグル: PWA 機能は内部の機能トグルで有効化/無効化可能。各環境で個別に制御している。

CloudFront キャッシュ無効化のコスト: リリース毎に全パスを無効化する仕組みのため、リリース頻度に応じて配信コストが発生する。配信頻度・コストのバランスは運用で判断。

iPhone PWA での画面更新の特殊事情: iPhone PWA では画面の自動更新処理が一部不安定であるため、内部的に通常の URL 履歴更新 + ページリロードを使う代替手段で対応している。

利用シナリオ

シナリオ 1: ホーム画面追加してアプリ風に利用

ユーザーがブラウザのメニューから「ホーム画面に追加」を選び、fincs を PWA としてインストール。インストール後はホーム画面アイコンから起動でき、ブラウザバー無しのアプリ風 UI(スタンドアロン表示)で利用できる。

シナリオ 2: PWA 起動時に最終訪問講座へ自動遷移

ログイン済みのユーザーが PWA を起動すると、トップ画面ではなく最後に訪問していた講座ページへ自動的に遷移する。継続学習の利用導線として、毎回トップから探し直す手間を減らす。

シナリオ 3: 新バージョンリリース後の最新版受信

運営側がリリースを行うと、配信キャッシュが全パス無効化され、ユーザー側では次回読み込み時に最新版が配信される。さらに、内部的にバージョンを定期確認し、新バージョンが出たことを検知するとユーザーに更新を促す動作も走る。

シナリオ 4: iOS で PWA 化して通知を受け取る

iOS ユーザーがホーム画面追加で PWA 化することで、通知機能の利用が可能になる。PWA 化していない iOS Safari では通知を受け取れない。

よくある失敗ケース

  • PWA 未対応ブラウザでのインストール: 古いブラウザや一部の環境ではホーム画面追加機能自体が提供されていない。代替案内が必要
  • localStorage 容量超過: ブラウザの localStorage が容量上限に達すると一部機能が動作不能になるケース。内部的に閾値到達時の自動削除で回避
  • 更新検知後のリロード忘れ: 新バージョン検知後にリロードされないままだと古いバージョンを使い続けるケース。内部の促進処理で対応
  • iOS 未 PWA 化での通知未受信: PWA 化していないと iOS では通知が届かない

利用可否(権限別)

PWA は基盤機能のため、ユーザー権限軸での直接の操作は無い。全ユーザーが対象。

機能詳細(ふるまい)

PWA インストール

  • ブラウザのメニュー「ホーム画面に追加」からインストール可能
  • インストール用のメタ情報(マニフェスト)を提供
  • アイコンは複数サイズ(64 / 192 / 512px)+ マスク対応の 192px を提供
  • インストール後はスタンドアロン表示(ブラウザバー無し)で起動

Service Worker

  • 静的アセットの事前キャッシュ(precache)でアプリ起動を高速化
  • ナビゲーション(ページ遷移)の段階的キャッシュ
  • フォントの長期キャッシュ
  • 通知受信処理 + OS バッジ更新
  • 事前キャッシュの対象サイズ上限あり(大容量メディアは対象外)

PWA 起動時の最終訪問講座への自動遷移

  • ログイン済みかつトップ画面 / ログイン画面にいる場合、最後に訪問した講座ページへ自動遷移
  • セッション内で初回起動時のみ実行(後続のページ遷移は通常通り)
  • 機能トグルでの有効化制御

配信キャッシュ無効化(リリース時)

  • リリース実行時に CDN(CloudFront)のキャッシュを全パス無効化
  • ユーザーは次回読み込み時に最新版を取得できる
  • 配信メタ情報の更新検知用ファイルには no-cache メタ情報を付与し、常に最新を取得する仕組み

更新検知 + リロード促進

  • 内部的に定期的にバージョン情報を確認
  • 新バージョンが検知された場合、ユーザーに更新を促し、必要に応じて画面リロードを実行

ストレージ容量管理

  • ブラウザの localStorage 上限(5MiB)を超えると一部機能が動作不能になるリスクへの対応
  • 容量が一定の閾値(3MiB)を超えた場合、内部キャッシュの痕跡を自動削除して空き容量を確保

iOS PWA の制約事項

  • iOS Safari では PWA 化しないと通知機能を使えない
  • PWA 起動状態でも、iOS 特有の動作制約に応じた個別対応が走る(通知の挙動・画面更新方法等)
  • PWA 未化の iOS ユーザー向けには互換層経路(PushQuay)で通知を提供(横断/運用基盤 / 通知基盤 参照)

関連ドキュメント


このページの内容を AI に質問しますか?
関連 spec を自動抽出して ChatGPT / Claude などに渡せます。
AI Prompt で開く →