機能整理のコツについて

こんにちは!kossyです!



さて、今回は一つの機能を実装するときに使えるFWめいたものを
ブログに残してみたいと思います。しれっと更新するつもりです。



以下全てサンプルです。




目的(その機能が必要な背景や機能改修方針を記載する)

  • 販促のためにポイント付与機能を実装したい
  • 既存の機能に大幅な影響を及ぼすことが想定されるので、既存オペレーションとDB設計を念入りに調査し、将来の拡張や仕様変更を見越した設計をする

データ(必要なデータや項目例を記載する、機能改修の場合は既存のtable構造や関連も記載する)

データの役割

ポイントデータ
  • ユーザーが自信のアプリからポイントを確認できる
  • ユーザーはポイントを商品購入の際に使用できる
  • ユーザーはポイントを商品購入の際に獲得できる
商品購入
  • ユーザーは商品をカートに入れられる
  • ユーザーはカートに入れた商品をまとめて購入できる
  • ユーザーはカートに入れずに直接商品を購入できる
管理者機能
  • ユーザーに詫び石(ポイント)を配ることができる(create?, update?)

DB

User has_many points
User has_many products
User has_many 購買履歴
User has_many ポイント付与履歴
User has_many ポイント利用履歴
Products has_many 購買履歴

  • 他にも必要があれば適宜追加
  • ER図もあったほうがいい

CRUD契機(どんな業務・動作があった場合にCRUDが行われるのかを記載する)

ポイント機能

Create
  • ユーザーが商品を購入した時
Read
  • ユーザーが現在のポイントを確認するとき
  • ユーザーが過去に使ったポイントを確認する時
Update
  • ユーザーの現在保有ポイントを更新するとき(buy, use)
  • 管理者機能で考慮?
Destroy

依存関係(これから実装する機能であれば、この機能を作成することによる影響を記載する、既存機能であれば、この機能がどの業務・tableに依存しているか等を記載する)

ポイント機能

  • ユーザーが商品を購入する際の機能を修正することになると思う
  • キャンペーン機能にも考慮が必要

課題

  • ポイント失効・キャンペーン・ポイントが使えない商品・ポイントが貯まらない商品等の考慮が必要になる可能性あり

必要な要件や設計観点(CRUDで記載するのが無難。まずは必要要件を書くのもあり)

ポイント機能

  • ユーザーが自信のアプリからポイントを確認できる
  • ユーザーはポイントを商品購入の際に使用できる
  • ユーザーはポイントを商品購入の際に獲得できる
  • ポイントは1年間で失効する
  • キャンペーン期間中はポイント○倍にする
  • ポイントが使えない商品がある
  • ポイントが貯まらない商品がある