06. 非機能要件とストア対応 06. NFR and store submission

対応 OS・性能目標・セキュリティ・A11y・ストア審査チェックリスト。 Supported OS, performance targets, security, A11y, and the store-review checklist.

実装品質・審査通過に必要な最低限の基準をまとめます。 このページの基準を満たすことが v1 リリースの受入条件です。

The minimum bar for implementation quality and store submission. Meeting the items on this page is the acceptance criteria for v1 release.

対応 OS / 端末 Supported OS / devices

プラットフォームPlatform 最小バージョンMinimum version 推奨バージョンRecommended 備考Notes
iOS iOS 15.0 iOS 17+ Mapbox SDK / Flutter 3.x の最低要件に合わせて 15.0 を採用 Set to 15.0 per Mapbox SDK / Flutter 3.x requirements
Android Android 8.0(API 26) Android 13+(API 33+) minSdkVersion=26targetSdkVersion は Google Play 要件に追随(2026 年は 35) minSdkVersion=26; targetSdkVersion follows Play's yearly bump (35 in 2026)
タブレット Tablets v1 スコープ外:縦向きスマホのみサポート。iPad・折りたたみ端末は v2 以降 Out of v1 scope: portrait phones only. iPad / foldables come later
Flutter SDK Flutter SDK 3.22+ 3.27+ Dart 3.4+ 前提 Requires Dart 3.4+

パフォーマンス目標(受入基準) Performance targets (acceptance criteria)

指標Metric 目標値(P95)Target (P95) 計測方法How to measure
コールド起動(スプラッシュ → Home 表示) Cold start (splash → Home ready) ≤ 2.5 s Firebase Performance の _app_start Firebase Performance _app_start
周辺駐車場検索(/v1/parking-lots/nearby、半径 500m) Nearby search (/v1/parking-lots/nearby, 500m) ≤ 800 ms アプリ側の HTTP 計測、dev-api.parky.co.jp 経由 Client-side HTTP timing via dev-api.parky.co.jp
AI 検索(/v1/search/ai AI search (/v1/search/ai) ≤ 3.0 s LLM 呼び出しを含むので許容を長めに設定 Longer budget because of LLM latency
地図マーカー描画(40 件 / 画面内) Map-marker render (40 markers on-screen) ≤ 60 ms / frame Flutter DevTools のフレームグラフ Flutter DevTools frame chart
クラッシュフリー率 Crash-free rate ≥ 99.5% Firebase Crashlytics(本番 7 日移動平均) Firebase Crashlytics (prod 7-day rolling)
バッテリー消費(1h 駐車中・画面オフ) Battery drain (1h parked, screen off) < 3% iOS/Android の開発者ダッシュボード iOS/Android dev dashboards

セキュリティ要件 Security requirements

プライバシー Privacy

アクセシビリティ(WCAG 2.1 AA) Accessibility (WCAG 2.1 AA)

項目Item 最低要件Minimum
コントラスト比Contrast ratio 通常テキスト 4.5:1、大文字(18pt 以上) 3:1 4.5:1 for body, 3:1 for large text (≥18pt)
Dynamic TypeDynamic Type OS のフォントサイズ 100%–200% でレイアウト破綻しないこと Layout must hold at 100%–200% OS font scaling
VoiceOver / TalkBackVoiceOver / TalkBack すべてのボタン・アイコンに Semantics(ラベル)を付与。画像には excludeSemantics: false で代替テキスト Every button / icon has a Semantics label; images include alt text (excludeSemantics: false)
タップターゲットTap targets iOS 44×44 pt / Android 48×48 dp
フォーカス順序Focus order 論理的な読み上げ順(上→下、左→右)。Semantics(sortKey) で必要に応じて調整 Logical read order (top-to-bottom, left-to-right). Use Semantics(sortKey) to fix exceptions
色だけで情報を伝えないDo not rely on color alone エラー表示はアイコン+テキスト、Good/Bad 評価はアイコン形状も差別化 Errors use icon+text; Good/Bad uses distinct icon shapes
モーション縮退Reduced motion OS の「モーションを減らす」設定を尊重(MediaQuery.disableAnimations Respect "reduce motion" (MediaQuery.disableAnimations)

ストア審査チェックリスト Store submission checklist

App Store(iOS) App Store (iOS)

Google Play(Android) Google Play (Android)

アカウント名義・権限付与 Account ownership and access grant

Apple Developer Program/Google Play Console のアカウントはParky 運営側で保有します。 受注開発会社にはApp Manager / Admin ロールを付与し、ビルドのアップロードとテスト配布 (TestFlight / Internal testing)ができる権限を渡します。ストア公開(リリース操作)は Parky 運営側で行います。 The Apple Developer Program and Google Play Console accounts are owned by Parky. The development partner is granted App Manager / Admin roles — enough to upload builds and distribute via TestFlight / Internal testing. Production release actions are performed by Parky.

CI / CD とテスト配布 CI / CD and test distribution

テスト戦略 Testing strategy

ログ・監視 Logging & monitoring

お疲れさまでした — 次のアクションThat's the pack — next steps: 6 ページを読み終えたら、パック入口 の状態表を改めて確認し、 見積もりの土台が整ったことを確認してください。質問は Parky 運営まで。 Once you've read all six pages, revisit the status table on the pack entry page to confirm the estimate foundation is solid. Direct questions to the Parky team.