「どこに停めるか、もう迷わない。」 "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
システム全体像System overview
クライアント / バックエンド / データストア / 外部サービス / 通知基盤 / ログ基盤の構成。
Clients, backend, data stores, external services, notification and logging infrastructure.
機能一覧Feature catalog
駐車前/駐車中/駐車後/その他の4フローに紐づく全機能カタログ。
Every feature mapped to the four flows: pre-parking, during, post-parking, and other.
画面カタログScreen catalog
全25画面の目的・主要UI・操作・状態・呼び出しAPIを網羅。
All 25 screens — purpose, UI, actions, states, and called APIs.
利用フロー・状態遷移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.
データモデルData model
管理者ポータルと共有するPostgreSQLスキーマのうち、モバイルで使うエンティティを中心に解説。
A walkthrough of the PostgreSQL schema shared with the admin portal, focused on the entities used by mobile.
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.
通知設計Notification design
Push通知 / アプリ内通知 / 通知トリガー / スケジューリングの詳細。
Push notifications, in-app notifications, triggers, and scheduling in detail.
非機能要件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).
- モバイルアプリ(ユーザー向け) — 本ドキュメントの対象
- 駐車場オーナーポータル — 情報登録・管理
- オーナー向けLP+申請フォーム
- 管理者ポータル — 運用管理(仕様書)
- Mobile app (for users) — the subject of this document
- Lot owner portal — information registration and management
- Owner-facing landing page and application form
- Admin portal — operations management (spec)
単なる地図サービスではなく、「駐車における意思決定」を最適化する ことが Parky の目的です。
Parky is not just a map service — its purpose is to optimize the decision-making around parking.
1.2 プロダクトコンセプト 1.2 Product concept
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
- 最大料金の適用条件が分かりづらい
- 時間単価の違いにより最安が判断できない
- 想定外の高額請求リスクがある
- Max-fee conditions are hard to understand
- Differing hourly rates make it hard to tell which lot is cheapest
- There's a risk of unexpectedly large charges
→ Parky は料金シミュレーションにより、事前に支払額を可視化します。
→ Parky visualizes the expected charge in advance via its fee simulation.
選択負荷の高さ High choice overload
- 候補が多すぎて選べない
- 運転中に比較検討が困難
- 最適解が分からない
- Too many candidates to pick from
- Hard to compare lots while driving
- No clear way to spot the optimal choice
→ Parky は条件フィルタ・ランキング表示により意思決定を支援します。
→ Parky supports decision-making with filters and ranked results.
駐車体験の分断 A fragmented parking experience
- 駐車位置を忘れる
- 利用中の料金が把握できない
- 利用履歴が残らない
- Drivers forget where they parked
- No visibility into the running fee
- No usage history is kept
→ 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
- リリース時:東京23区
- 将来的には主要都市、全国へ拡大
- At launch: Tokyo's 23 wards
- Expanding to major cities and nationwide over time
利用シーン 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)
- 目的地を入力
- 周辺駐車場を検索
- 入出庫時間を指定し料金を自動計算
- 条件に合う駐車場を絞り込み
- 最適な候補を提示
- Enter the destination
- Search for nearby parking lots
- Specify entry/exit times and auto-calculate the fee
- Filter lots that match the criteria
- Present the best candidates
② 駐車時(記録・管理) 2. While parked (recording & management)
- 駐車開始時に GPS で位置を記録
- 駐車時間に応じた料金を表示
- 条件逸脱時にアラート通知
- Record the location via GPS when parking starts
- Show the fee as parking time accrues
- Alert the user when the chosen conditions are exceeded
③ 駐車後(振り返り) 3. After parking (review)
- 駐車位置を確認
- メモ・写真を参照
- 履歴・レビュー管理
- Check the parked location
- Refer back to notes and photos
- 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