Slide 1

Slide 1 text

statusカラムから生じる技術的負債とその解決策 statusカラムから生じる技術的負債とその解決策 by r-sugi 1

Slide 2

Slide 2 text

自己紹介 フリーランスエンジニア 5年目 statusカラムから生じる技術的負債とその解決策 by r-sugi 2

Slide 3

Slide 3 text

今回のアジェンダ statusカラムがあるとなぜ困るか 解決案を 1つ提示するので、みんなであれこれ議論したい statusカラムから生じる技術的負債とその解決策 by r-sugi 3

Slide 4

Slide 4 text

statusカラムがあるとな ぜ困るか (1/3) statusカラム → 特定の statusに依存するカラム が増える (nullカラム ) → カラム多すぎテーブルが生まれ る statusカラム → 更新したら履歴が 消える statusカラムから生じる技術的負債とその解決策 by r-sugi 4

Slide 5

Slide 5 text

statusカラムがあるとなぜ困るか (2/3) データベースの歪み → アプリケーションの歪み statusカラム → スパゲティ statusカラム x activerecordパターン → 特盛スパゲティ →アプリケーション側に、ステータスを考慮した (Null)カラム操作、処理が増え続ける →テーブルは簡単に修正できない statusカラムから生じる技術的負債とその解決策 by r-sugi 5

Slide 6

Slide 6 text

statusカラムがあるとな ぜ困るか (3/3) statusカラム x activerecord パターン → 特盛スパゲティ の気配 statusカラムから生じる技術的負債とその解決策 by r-sugi 6

Slide 7

Slide 7 text

投稿済の記事 statusカラムから生じる技術的負債とその解決策 by r-sugi 7

Slide 8

Slide 8 text

改善過程 (1/8): 改善対象 users テーブル statusカラムから生じる技術的負債とその解決策 by r-sugi 8

Slide 9

Slide 9 text

改善過程 (2/8): 意味のある単位に分割・関連づけた statusカラムから生じる技術的負債とその解決策 by r-sugi 9

Slide 10

Slide 10 text

改善過程 (3/8): statusを切り 出した statusカラムから生じる技術的負債とその解決策 by r-sugi 10

Slide 11

Slide 11 text

改善過程 (4/8): statusで集約させた statusカラムから生じる技術的負債とその解決策 by r-sugi 11

Slide 12

Slide 12 text

改善過程 (5/8) status変更に関する値を保存する status変更理由、変更操作者などの情報 はカラム追加 (or 子テーブル追加 ) 例 : 退会フォームの入力値、管理者 による強制退会の退会理由 例 : アカウント作成過程で使うワン タイムな値 statusカラムから生じる技術的負債とその解決策 by r-sugi 12

Slide 13

Slide 13 text

改善過程 (6/8) enumのカラムだけじゃなく、状態 テーブルが存在する方が理解しやす いかも。 図解したときにライフサイクルが 目に入る statusカラムから生じる技術的負債とその解決策 by r-sugi 13

Slide 14

Slide 14 text

改善過程 (7/8) ログインユーザーを判定したい 最新の statusだけのレコードを持つ viewを用意した statusカラムから生じる技術的負債とその解決策 by r-sugi 14

Slide 15

Slide 15 text

改善過程 (8/8) status以外の項目を保存したい マイページから入力するアカウン ト項目を保存したい statusカラムから生じる技術的負債とその解決策 by r-sugi 15

Slide 16

Slide 16 text

記事のまとめ ロングタームイベントパターン ステータスだけ分離させる Read/Writeで分ける ステータス変更に関する履歴を保 存する statusカラムから生じる技術的負債とその解決策 by r-sugi 16

Slide 17

Slide 17 text

記事の一部抜粋 例 : 記事投稿サイトで試しています 発生しそうなユースケースに対応 できるか検証中 いいね、アドバイスいただけると 嬉しいです! statusカラムから生じる技術的負債とその解決策 by r-sugi 17

Slide 18

Slide 18 text

まとめ statusカラムと正しく向き合う! statusカラムから生じる技術的負債とその解決策 by r-sugi 18