statusカラムから生じる技術的負債とその解決策
by
r-sugi
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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