Skip to content

Instantly share code, notes, and snippets.

@soudai
Last active January 10, 2026 04:17
Show Gist options
  • Select an option

  • Save soudai/dd93d925380e8db27542a3f2904d1f78 to your computer and use it in GitHub Desktop.

Select an option

Save soudai/dd93d925380e8db27542a3f2904d1f78 to your computer and use it in GitHub Desktop.
設計ワークショップ

今回は以下の要件で設計を勧めます。

1. ビジネス背景・目的

  • 近隣住民向けの 月極駐車場。空き地を区画して 6 区画(固定番号付き) を提供する。
  • 管理者(オーナー)は、「空き状況の把握」「契約者情報の管理」「月次請求一覧の作成」ができれば十分。
  • 時間貸し(コインパーキング)機能やゲート機器連携は対象外 とする。

2. システムの想定ユーザー

役割 主な操作 備考
管理者(1名想定) 契約登録/更新/解約、空き区画の確認、請求書発行 Web 管理画面のみ
契約者本人 なし(対面・紙で手続き) システム利用しない

3. 基本業務フロー(最小要件)

  1. 新規契約受付
    • 管理者が顧客の氏名・連絡先・車両ナンバーを聞き取り、空いている区画番号を1つ割り当てる。
    • 契約開始日は「翌月 1 日」固定とする。
  2. 月次請求
    • 毎月 20 日時点の契約中顧客を抽出し、翌月分の賃料請求書を PDF で出力。
  3. 解約
    • 解約届を受領したら、当月末で契約終了に設定。翌月以降は空き区画として扱う。
  4. 空き状況確認
    • 管理画面で「6区画のうち空いている番号」を一覧表示し、次の契約に割り当てる。

4. データと業務ルール(必須)

区分 ルール/仕様
区画(Parking Space) - 固定 6 件(番号: 1〜6)
- 各区画は同時に 1 契約しか持てない
契約(Contract) - 契約開始日=毎月 1 日、終了日は解約届がない限り NULL(自動更新)
- 賃料は区画ごとに 同一金額(★区画ごとに価格差を付ける場合は追加項目要)
顧客(Customer) - 氏名、電話番号、住所は必須
- 複数台契約は 許可しない(★許可するならテーブル設計を考慮)
車両(Vehicle) - 1 契約につき 1 台、ナンバー4桁+分類番号を登録
- 車検証画像等は扱わない
請求(Billing) - 請求金額は 固定月額 × 契約中月数
- 決済状況(未入金/入金済)は記録だけ行い、決済ゲート連携しない
@soudai
Copy link
Author

soudai commented Jun 27, 2025

仕様変更

  1. 空き地を新たに購入したので(parking_space)を追加したい。新たな空き地は5区画あります
  2. 支払いの履歴を残し、年払いに半年払いなどにも対応したい
  3. 3ヶ月連続で未払の駐車場の契約者を抽出したい

@soudai
Copy link
Author

soudai commented Jun 27, 2025

仕様変更 ステップ2

  1. 時間貸しの導入
  2. 自動車以外への貸出

時間貸しの導入

parking_spaceは月極だけだったが、時間貸しも行う。
月極契約ないparking_spaceを時間貸しに利用することで空きスペースの最適化を行う。

  1. 10分間100円とし、8:00-19:59の間の最大連続利用料は5000円とする
  2. 20:00 - 7:59 の間の最大利用料は2000円とする
  3. 8:00または20:00をまたいだ場合は最大連続時間はリセットされ、切り替え前の支払額と切り替え後のそれぞれの支払額の合算を請求する
  4. 契約終了した空きparking_spaceは即日時間貸しとして利用できる

自動車以外への貸出

暗黙的に4輪自動車を対象にしていたが、自動2輪への貸出も追加する。
この場合、1つのparking_spaceに対して車は1台だが自動2輪は3台駐車することができる

自動2輪は月極、時間貸し共に対象である。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment