非機能要件 Non-functional requirements

Parky モバイルアプリのパフォーマンス・可用性・スケーラビリティ・セキュリティ・プライバシー・運用保守に関する要件を整理します。 リリース時(東京23区・想定同時利用 5,000 ユーザー)を基準とし、段階的スケーリングを前提とします。

This document organizes requirements for the Parky mobile app covering performance, availability, scalability, security, privacy, and operations / maintenance. The baseline is at release (Tokyo 23 wards, expected concurrent users of 5,000), with progressive scaling assumed.

10.1 パフォーマンス 10.1 Performance

指標Metric 目標Target 計測方法Measurement method
アプリコールドスタートApp cold start P95 < 2.5 s Firebase Performance Monitoring
ホーム画面 TTIHome screen TTI P95 < 3.0 s 同上Same as above
周辺駐車場検索 (RPC)Nearby parking search (RPC) P95 < 300ms Supabase Logs
料金シミュレーション(ローカル)Fee simulation (local) P99 < 16ms(60fps維持) (60fps maintained) ベンチテストBenchmark
地図レンダリングMap rendering 60fps を維持60fps maintained Flutter DevTools
Push 受信から通知表示From push receipt to display 5 秒以内s or less FCM ログ + アプリログFCM logs + app logs
バッテリー消費(駐車中 Live Activity)Battery consumption (in-parking Live Activity) 1時間あたり < 2%< 2% per hour 端末計測On-device measurement
データ通信量(1セッション)Data traffic (per session) < 500KB(画像除く) (excluding images) ネットワークプロファイルNetwork profile

10.2 可用性 10.2 Availability

10.3 スケーラビリティ 10.3 Scalability

指標Metric リリースRelease 6ヶ月後6 months later スケール戦略Scaling strategy
MAU10K100K Supabase プラン引き上げ / Read ReplicaSupabase plan upgrade / Read Replica
同時接続Concurrent connections 5K30K Realtime プラン引き上げRealtime plan upgrade
駐車場件数Parking lot count 20K100K PostGIS GIST + cluster によるマップ集約PostGIS GIST + cluster-based map clustering
セッション/日Sessions/day 5K50K パーティショニング(月次)Partitioning (monthly)
通知送信/日Notifications/day 20K200K FCM バッチ API 利用Use FCM batch API
画像総量Total image storage 50GB500GB Cloudflare R2 階層、サムネイル自動生成Cloudflare R2 tiering, auto thumbnail generation

DBスケール戦略 DB scaling strategy

10.4 セキュリティ 10.4 Security

認証・認可 Authentication & authorization

通信 Communication

データ保護 Data protection

改ざん防止 Tamper prevention

OWASP Mobile Top 10 対応 OWASP Mobile Top 10 Coverage

項目Item 対応Coverage
M1: 不適切な認証Insecure authentication Supabase Auth + JWT、生体認証オプションSupabase Auth + JWT, biometric optional
M2: セキュアでないデータ保存Insecure data storage SecureStorage 以外への PII 保存禁止PII storage outside SecureStorage is forbidden
M3: 安全でない通信Insecure communication TLS 強制、公式 SDK 利用TLS enforced, use official SDK
M4: 認可不備Insufficient authorization RLS で全アクセス制御RLS for all access control
M5: 暗号の不備Weak cryptography OS 標準の Keychain / Keystore 利用Use OS-standard Keychain / Keystore
M6: 不適切な入力検証Poor input validation クライアントとサーバー両側で検証Validate on both client and server sides
M7: コード品質Code quality Dart analyzer + CI
M8: 改ざんTampering サーバー側で金額・状態確定Server confirms amounts and state
M9: リバースエンジニアリングReverse engineering Proguard / R8, Flutter obfuscate
M10: 拡張機能の悪用Extension abuse Deep Link パラメータを全てバリデーションAll Deep Link parameters validated

10.5 プライバシー 10.5 Privacy

10.6 運用 / 保守 10.6 Operations / maintenance

リリースサイクル Release cycle

リモート設定 / フィーチャーフラグ Remote config / feature flags

モニタリング Monitoring

ログ保存ポリシー Log retention policy

ログ種別Log type 保存期間Retention 保存先Store
ユーザー行動ログUser activity logs (user_activity_logs) 2年 → 集計化2 years → aggregated PostgreSQL
駐車セッションParking sessions 無期限(ユーザー資産)Indefinite (user asset) PostgreSQL
Push 配信ログPush delivery logs 6 ヶ月months user_notifications
クラッシュCrash Sentry 既定(90日)Sentry default (90 days) Sentry
APIログAPI logs Supabase 既定Supabase default Supabase Logs
監査ログ(管理者操作)Audit logs (admin actions) 5 years 管理者ポータル側In the admin portal

サポート体制 Support setup

本仕様書のステータス: 本書は Parky仕様書.xlsx の §1〜§2.2 に記載された確定情報をベースに、 §3〜§10 の未記載部分を管理者ポータル仕様・Supabase スキーマ・一般的モバイルアーキテクチャから整合的に補完したものです。 §3以降の仕様は今後の設計確定に応じて改訂されます。
Document status: This document is based on the confirmed content in §1–§2.2 of Parky仕様書.xlsx, with unwritten sections from §3–§10 complementarily derived from the admin portal specs, Supabase schema, and general mobile architecture. Subsequent specs from §3 onward will be revised as design is finalized.