Parky モバイルアプリ — 仕様書 Parky Mobile App — Specification

「どこに停めるか、もう迷わない。」 "Never wonder where to park again."

Parky(パーキー)モバイルアプリは、都市部における駐車場選択の課題を解決する、 駐車に特化した意思決定支援アプリです。リリース時は東京23区を対象エリアとし、 ユーザーが目的地周辺の駐車場を検索・比較・選択・駐車・振り返りまで 一貫して行える体験を提供します。

The Parky mobile app is a parking-focused decision support app that tackles the challenges of finding a parking lot in urban areas. At launch it targets Tokyo's 23 wards, giving users a single seamless experience that covers searching, comparing, choosing, parking, and reviewing lots around their destination.

本ドキュメントは .work/parky/仕様書/Parky仕様書.xlsx を一次情報源とし、 管理者ポータル仕様(parky/docs/portal-admin)および Supabase スキーマ(parky/infra/supabase/migrations)と整合させた、 外部仕様〜内部仕様までをカバーする統合仕様書です。

This document uses .work/parky/仕様書/Parky仕様書.xlsx as its primary source of truth and is aligned with the admin portal spec (parky/docs/portal-admin) and the Supabase schema (parky/infra/supabase/migrations). It is a unified specification covering everything from external to internal specs.

このドキュメントの読み方 How to use this documentation

02

システム全体像System overview

クライアント / バックエンド / データストア / 外部サービス / 通知基盤 / ログ基盤の構成。

Clients, backend, data stores, external services, notification and logging infrastructure.

03

機能一覧Feature catalog

駐車前/駐車中/駐車後/その他の4フローに紐づく全機能カタログ。

Every feature mapped to the four flows: pre-parking, during, post-parking, and other.

04

画面カタログScreen catalog

全25画面の目的・主要UI・操作・状態・呼び出しAPIを網羅。

All 25 screens — purpose, UI, actions, states, and called APIs.

05

利用フロー・状態遷移User flows & state transitions

駐車前〜駐車後のエンドツーエンドシナリオと主要エンティティの状態遷移図。

End-to-end scenarios from pre- to post-parking plus state diagrams for the main entities.

📱

モバイル UI モックMobile UI mockup

Web ベースのプロトタイプをスマホフレームに埋め込んだ動作可能モック。実機相当のインタラクションで UI を確認できる。

Interactive web-based prototype embedded in a phone frame — touch, scroll, and navigate like the real device.

🛠

開発者ガイドDeveloper guide

ローカル起動・BFF クライアント・Auth/Realtime・Push・テスト・CI 等、Flutter 開発者が最初に読むガイド。

Getting started guide for Flutter devs — local setup, BFF client, Auth/Realtime, push, testing, CI.

06

データモデルData model

管理者ポータルと共有するPostgreSQLスキーマのうち、モバイルで使うエンティティを中心に解説。

A walkthrough of the PostgreSQL schema shared with the admin portal, focused on the entities used by mobile.

07

API仕様API specification

Workers BFF (/v1/*)・PostgreSQL RPC・外部 API を含む、モバイルが呼び出す全 API の一覧。対話的ビューは Swagger UI / Redoc

Every API the mobile app calls — the Workers BFF (/v1/*), PostgreSQL RPCs, and external APIs. Interactive views: Swagger UI / Redoc.

08

通知設計Notification design

Push通知 / アプリ内通知 / 通知トリガー / スケジューリングの詳細。

Push notifications, in-app notifications, triggers, and scheduling in detail.

09

非機能要件Non-functional requirements

パフォーマンス・可用性・セキュリティ・プライバシー・運用保守。

Performance, availability, security, privacy, and operations.

1.1 事業概要 1.1 Business overview

Parky は以下のプロダクト群で構成される駐車場エコシステムであり、本仕様書が対象とするのは モバイルアプリ(エンドユーザー向け) です。

Parky is a parking ecosystem made up of the following products. This specification covers the mobile app (for end users).

単なる地図サービスではなく、「駐車における意思決定」を最適化する ことが Parky の目的です。

Parky is not just a map service — its purpose is to optimize the decision-making around parking.

1.2 プロダクトコンセプト 1.2 Product concept

「どこに停めるか、もう迷わない。」"Never wonder where to park again."
Drive smart, Park smart.

Parky は、駐車場の「場所」ではなく「最適な選択(Decision)」を提供するプロダクトです。 既存の地図アプリ(Google Maps 等)は場所の検索に優れる一方、条件ベースの意思決定には課題があります。 Parky は以下の2つの価値を軸に設計されています。

Parky is a product that delivers not the "location" of a parking lot but the "optimal decision." Existing map apps (Google Maps and the like) are great at finding places but struggle with criteria-based decision-making. Parky is built around the following two value pillars.

価値軸Value pillar 意味Meaning 実現手段How it's delivered
財務防御Financial defense 駐車料金の不確実性を排除するEliminate uncertainty around parking fees 入出庫時間から想定料金を事前計算する料金シミュレーション機能A fee simulation that pre-calculates the estimated charge from entry/exit times
意思決定支援Decision support ユーザーにとって最適な選択肢を提示するSurface the best option for each user 条件フィルタ、AI検索、ランキング表示(上位3件バッジ)、並び替えFilters, AI search, ranking display (top-3 badges), and sorting

1.3 解決する課題 1.3 Problems we solve

駐車料金の不透明さ Opaque parking fees

→ Parky は料金シミュレーションにより、事前に支払額を可視化します。

→ Parky visualizes the expected charge in advance via its fee simulation.

選択負荷の高さ High choice overload

→ Parky は条件フィルタ・ランキング表示により意思決定を支援します。

→ Parky supports decision-making with filters and ranked results.

駐車体験の分断 A fragmented parking experience

→ Parky は駐車セッション管理・メモ・履歴により、検索から駐車後まで一貫した体験を提供します。

→ Parky offers a seamless experience from search through post-parking via parking session management, notes, and history.

1.4 想定ユーザー 1.4 Target users

対象エリア Target area

利用シーン Usage scenes

大分類Category 中分類Sub-category 具体シーンConcrete scenes
ビジネス利用Business use 通常業務の範囲Regular work 営業訪問、取引先訪問、現場作業・工事、配送・集荷Sales visits, client visits, on-site work and construction, delivery and pickup
遠方移動・出張Long-distance trips & travel 出張先、地方・郊外エリア、長時間滞在Destinations on business trips, regional and suburban areas, extended stays
プロドライバーProfessional drivers 営業車 / 配送 / トラック / タクシー / 訪問サービス業Company cars, delivery, trucks, taxis, on-site service businesses
その他Other 法人契約の業務利用全般General corporate-contract business use
プライベート利用Private use 日常利用Daily use 通勤、買い物、外食・カフェ、病院・役所、子どもの送迎Commuting, shopping, dining and cafes, hospitals and city offices, school runs
レジャー・外出Leisure & outings ドライブ、観光地、イベント・ライブ、商業施設Drives, tourist spots, events and concerts, shopping complexes
非日常・スポット利用Occasional & one-off use 初めて訪れるエリア、旅行先、長時間滞在を伴う外出First-time areas, travel destinations, outings involving long stays

ペルソナ Personas

区分Segment 主なペルソナ像Typical personas
ビジネス利用Business use 都市部で複数の訪問先を回る営業職、短時間利用を繰り返す配送業務従事者、 大型車対応や長時間待機が必要な運送業従事者、繁華街周辺で待機・休憩を行うタクシー業務従事者、 訪問介護・保守点検など現場対応を行うサービス業従事者、出張先や地方で車移動を行うビジネスパーソン Sales reps visiting multiple clients around the city, delivery workers making many short stops, logistics workers who need space for large vehicles or long waits, taxi drivers taking breaks near entertainment districts, service workers handling on-site jobs like home care and maintenance, and business travelers driving at business-trip destinations or in the regions.
プライベート利用Private use 日常的に通勤・買い物・外食で車を利用する都市生活者、週末に都心へドライブする層、 カーシェアを利用する非保有層、子どもの送迎を行うファミリー層、 観光地やイベントに車で訪れるレジャー層、土地勘のないエリアでの利用が多い層、 料金や時間効率を重視する合理志向層 Urban residents who drive daily for commuting, shopping, and eating out; weekend drivers heading into the city center; car-share users without their own car; families doing school runs; leisure users driving to tourist spots and events; people who often drive in unfamiliar areas; and rational shoppers who care about price and time efficiency.

1.5 利用シナリオ 1.5 Usage scenarios

Parky のユーザージャーニーは「駐車前 → 駐車中 → 駐車後」の3フェーズに分けられます。

The Parky user journey is split into three phases: pre-parking, during parking, and post-parking.

flowchart LR
  subgraph Pre["① 駐車場到着前 (検索・意思決定)"]
    A1[目的地入力] --> A2[周辺駐車場検索]
    A2 --> A3[入出庫時間指定
料金自動計算] A3 --> A4[条件フィルタ] A4 --> A5[最適候補を提示
ランキング表示] end subgraph During["② 駐車時 (記録・管理)"] B1[GPS位置記録] --> B2[駐車時間と料金表示] B2 --> B3[条件逸脱時
アラート通知] end subgraph Post["③ 駐車後 (振り返り)"] C1[駐車位置確認] --> C2[メモ・写真参照] C2 --> C3[個人評価
Good/Bad] C3 --> C4[レビュー投稿
履歴管理] end A5 --> B1 B3 --> C1

① 駐車場到着前(検索・意思決定) 1. Before arrival (search & decision)

  1. 目的地を入力
  2. 周辺駐車場を検索
  3. 入出庫時間を指定し料金を自動計算
  4. 条件に合う駐車場を絞り込み
  5. 最適な候補を提示
  1. Enter the destination
  2. Search for nearby parking lots
  3. Specify entry/exit times and auto-calculate the fee
  4. Filter lots that match the criteria
  5. Present the best candidates

② 駐車時(記録・管理) 2. While parked (recording & management)

  1. 駐車開始時に GPS で位置を記録
  2. 駐車時間に応じた料金を表示
  3. 条件逸脱時にアラート通知
  1. Record the location via GPS when parking starts
  2. Show the fee as parking time accrues
  3. Alert the user when the chosen conditions are exceeded

③ 駐車後(振り返り) 3. After parking (review)

  1. 駐車位置を確認
  2. メモ・写真を参照
  3. 履歴・レビュー管理
  1. Check the parked location
  2. Refer back to notes and photos
  3. Manage history and reviews

ポジショニング Positioning

flowchart LR
  subgraph Users["利用者"]
    EndUser["エンドユーザー
(ドライバー)"] Owner["駐車場オーナー"] end subgraph Clients["クライアント"] Mobile["モバイルアプリ
★本書の対象"] OwnerPortal["オーナーポータル"] AdminPortal["管理者ポータル"] end subgraph Backend["バックエンド (Supabase)"] PG[(PostgreSQL
+ PostGIS)] Auth[Supabase Auth] RT[Realtime] Edge[Cloudflare Workers] end S3[(Cloudflare R2
画像・アセット)] Map[Mapbox GL] FCM[Firebase
Cloud Messaging] EndUser --> Mobile Owner --> OwnerPortal Mobile --> Auth Mobile --> PG Mobile --> Edge Mobile --> S3 Mobile --> Map Edge --> FCM FCM --> Mobile OwnerPortal --> PG AdminPortal --> PG
ポイント:Key point: モバイルアプリは管理者ポータル・オーナーポータルと同一の Supabase プロジェクトを共有します。 そのためデータモデル(PostgreSQL スキーマ)は完全に同一で、差分は 「各クライアントが書き込む範囲」と「RLS(Row Level Security)ポリシー」だけになります。 The mobile app shares the same Supabase project as the admin portal and owner portal. That means the data model (PostgreSQL schema) is identical across all three — the only differences are "which areas each client writes to" and the RLS (Row Level Security) policies.