// 概要
入庫時にワンタップで計測を開始すると、ロック画面と Dynamic Island に「経過時間・現在の料金・次の加算まであと何分」が出続けます。アプリを開かなくても、今いくらかかっているかが分かる。それがこのアプリの中心にある価値です。
日本のコインパーキングは「最初30分無料、以降20分220円、当日最大1,100円、夜間最大400円」のように料金体系が複雑で、海外製のパーキングタイマーは最大料金(打切料金)の概念そのものを持っていません。実際の料金看板をそのまま表現できるデータモデルを設計し、実在の看板をもとにしたテストで計算の正しさを担保しています。
料金体系の手入力は最大の離脱要因です。そこで料金看板を撮影するだけで取り込めるようにしました。通常は端末内で完結するオンデバイスAIが解析し、要素が密集した読み取りの難しい看板は、プレミアム(月額)でクラウドAIによる高精度読み取りに切り替えられます。
// 特徴
- ▸ロック画面と Dynamic Island に、経過時間・現在料金・次の加算までを常時表示
- ▸入庫直後の無料時間、時間帯別・曜日別の単価、当日最大/入庫後○時間最大/夜間最大に対応
- ▸最大料金の「繰り返し適用」の有無まで再現。総額が倍変わる、看板で最も読み違えやすい箇所
- ▸料金看板を撮影して料金体系を自動取り込み(無料=オンデバイスAI/プレミアム=クラウドAIで高精度)
- ▸取り込み結果は必ず確認・修正画面を通す。試算プレビューで看板と突き合わせてから保存
- ▸ロック画面から「出庫」をワンタップ。金額を確定して履歴に保存
- ▸駐車履歴(日時・駐車場名・確定金額・駐車時間)を新しい順に確認
- ▸広告なし・トラッキングなし。解析SDKも搭載していません
// 技術的な読みどころ
ActivityKit:アプリが動いていない間は Live Activity を更新できません。そこで経過時間と「次の加算まで」のカウントダウンは Text(timerInterval:) で OS 側に描画させ、金額の更新が止まっている間も表示は動き続ける設計にしています。ロック画面の「出庫」ボタンは LiveActivityIntent としてアプリ本体プロセスで実行し、App Group 経由で共有した SwiftData に金額を確定保存します。
料金計算エンジンは UI から完全に独立した Swift Package として切り出し、実在の看板をもとにしたテストで担保しています。日跨ぎ・夜間最大・繰り返し適用・入庫直後の無料時間といった境界を重点的に検証し、精度そのものを資産にしています。
看板の解析はオンデバイスとクラウドの二段構え。同一のプロトコルで差し替え可能にし、クラウド経路は API キーを端末に置かずに Cloudflare Workers のプロキシを経由します。プロキシは StoreKit の署名付きトランザクション(JWS)を Apple のルート証明書までさかのぼって検証し、購読者だけに開放しています。
Swift 6(strict concurrency)/SwiftUI/SwiftData、iOS 18 以上。企画・料金モデルの設計・実装・バックエンド・課金基盤まで、すべて自社で手がけています。
// スクリーンショット



// 規約・ポリシー
// 免責事項
※ 本アプリが表示する金額は目安であり、実際の精算額を保証するものではありません。
