目的地を入れたら「停め方」まで決まる駐車場ナビの静的PWAです。まずは社長と弟さんの2人ドッグフード用の読み取り専用プロトタイプです。GitHub Pages上は公開URLですが、noindex/robots.txt とUI内表記で関係者限定・サンプル料金であることを明示しています。
- 公開URL: https://markun-japan.github.io/rin/
- 対象エリア: 茨木市中心部 / 大阪・梅田
- 地図: MapLibre GL JS + 国土地理院タイル
- 住所検索: 国土地理院 AddressSearch
- バックエンド: なし(GitHub Pages配信)
- 目的地/住所入力で周辺駐車場候補を地図とリスト表示
- 駐車場から目的地までの徒歩時間を近似計算(直線距離 × 1.3 ÷ 80m/分)
- サンプル料金表示
- 滞在時間から料金を計算し、「最寄り比 +◯分 / −◯円」で比較。既定は徒歩が近い順、切替で安い順
- 車高入力で制限超過の駐車場を除外。不明は通常表示
- 既知ランドマーク(梅田/大阪駅/茨木市役所/阪急茨木市駅)は代表点を優先
- 到着時刻(任意)で夜間最大料金を反映
- 徒歩上限(5/10/15分)で遠すぎる候補を絞り込み
- 満車時Plan B(第1〜第3候補)を常時表示し、第1候補が満車でも次候補へ即切替
- 2人ドッグフード用のワンタップ自己観測(空/混/満/到着/退出)を端末ローカルに保存
- データ供給層を
自前静的マスタ/live vacancy provider/自己観測に分離。NAVITIME等のAPI由来満空は将来も表示用メモリだけで扱い、永続保存しない前提
data/parkings.json: 自前静的マスタ。料金はサンプル/目視入力想定で、API由来データではありません。live vacancy provider:app.jsのcreateLiveVacancyProvider()が境界です。現在は未接続です。NAVITIME等のAPIキー到着後も、レスポンスはメモリ上の一時snapshotとしてだけ扱い、localStorage/Cache Storage/JSONファイルへ保存しない設計です。- 自己観測:
localStorageのrin.selfObservations.v1に、この端末で押した「空/混/満/到着/退出」だけを保存します。API由来満空とは混ぜず、UI上も「自己観測」と明示します。 - Service Worker:
/api/、/live-vacancy、source=live、vacancy=liveを含むリクエストはキャッシュしません。
- 満車時Plan Bパネル(第1〜第3候補、次候補切替)
- ワンタップ自己観測と短い鮮度表示(30分以内を有効扱い)
- 自己観測が「満」「混」の候補を並び替えで下げる満車耐性
- live vacancy provider境界とキャッシュ禁止のService Workerガード
見送ったもの: NAVITIME/P-Collection実API接続、外部契約、サーバ/APIプロキシ、一般ユーザー投稿、ストア申請、GitHub Pages反映。
data/parkings.json の料金は比較ロジック検証用のサンプル料金です。現地表示・公式情報を必ず優先してください。
python -m http.server 4173http://127.0.0.1:4173/ を開いてください。