変わるもの、変わらないもの

201 Views

June 04, 26

スライド概要

profile-image

Professional Ruby and Rails programmer in Tokyo.

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

変わるもの 変わらないもの @Omotesando.rb #122

2.

もとつねの日常 @daily_mototsune Ruby on Railsを中心に扱っているフリーランスエンジニア ドメインモデリングからAWSでの運用、スクラム運営やチームビルディ ングなどなど楽しくやらせてもらってます 普段はOmotesando.rbやGinza.rbによくいます 🍷♨✈🏎

3.

今日はモデル設計とか そんな感じの話です

4.

変わるもの 変わらないもの

5.

変わるもの - 今日の気分 口座の残高 メールアドレス 注文ステータス 自分の名前

6.

変わらないもの - 利用規約に同意した事実 メールを送信した事実 @Omotesando.rb #122にきた事実 私が結婚した事実

7.

ここが今日の話の中心です。 (結婚の話じゃないよ)

8.

StateとEvent 状態と出来事

9.

状態

10.

変わるメールアドレス

11.

注文のステータス

12.

出来事

13.

決済が完了した事実

14.

状態と出来事の整理

15.

さて 我々はRails(ActiveRecord) を使うわけだけど

16.

ActiveRecordは createもupdateもできる

17.

どれが状態でどれが出来事? - User Order Payment LoginLog Agreement NotificationDelivery

18.

全員が理解していないと 「ログだけど typo 直したいから update しようね」 「決済履歴だけど status 変えれば辻褄合うよね」 「同意履歴だけど最新の規約IDに直しておこうね」

19.

自由の代償

20.

出来事モデルには制約をかけた方がいい - 「これは変わるデータです」 - 「これは変わらない記録です」 という意図を、モデルの名前やコメントだけではなく、コードの振る舞いと して表現したい。

21.

fuhen_record gem

22.

https://rubygems.org/gems/fuhen_record

23.

https://github.com/saeki-mototsune/fuhen_record/

24.

宣言で設計意図の伝承 「このテーブルはCRUDのUとDを前提にしていません」 「このレコードは、あとから都合よく直すものではありません」 「過去の事実は、追記によって扱います」

25.

変えれないことを価値に

26.

Takeaway データには、変わるものと変わらないものがあります。 変わるものは State として扱う。 変わらないものは Event、または Record として扱う。 そして、変わらないことが大切な ActiveRecord モデルには、fuhen_record を使う。