個人開発FEのコンポーネント設計時に意識すべき原則を考えた
概要
モチベ維持が難しい個人開発において、設計に気を配ると実装の手が止まってしまうのが課題だった。
そこで、設計時に時間をかけすぎない、「迷わない」ために指針とすべき個人的原則を考えた。途中途中で飛躍するところがありますが多めに見てください😼
意識すべき原則
crudが一つ以上絡む機能を10分以内に「自信を持って」、「完全抹消」できる構造になっているか。
なっていると感じたなら、スピードを優先する
原則の詳細
例えばブログアプリで、投稿・編集・削除・閲覧ができ、投稿には一時保存・ユーザー限定公開があるとする。
これらの機能はそれぞれcrudが一つ以上存在する。
そこで上司から、そのcrudのエンドポイント(例えば編集機能)を抹消することになったから、明日までに機能を消してPRちょうだいね
と言われたらその10分後に「PR出したっす!!」と言えるかどうか、その対応のできる構造になっているか、という具合
原則の理由
crudが一つ以上絡む機能
→一つの関心ごとになり得るモジュール粒度において、
10分以内
→各モジュールが疎結合で、消えても困りにくく、さらに何を消していいのか明確で、短時間であっても、
「自信を持って」
→さらにさらにテストが充実していて、他の機能崩壊の心配をすることなく、
「完全抹消」
→機能を消すことができる
まとめると、
一つの関心ごとになり得るモジュール粒度において、各モジュールが疎結合で、消えても困りにくく、さらに何を消していいのか明確で、短時間であっても、さらにさらにテストが充実していて、他の機能崩壊の心配をすることなく、機能を消す(*)ことができる
つまり、この原則を守ることは、以下を実現できる構造になっているというわけです
・新しい機能の実装が迅速にできる
・新メンバーも迅速に実装に入れる
・エラー発生時、迅速に原因を特定できる
・仕様変更後、迅速に実装に落とし込める
そして
迅速=ソフトウェア以外に時間を投下できる、他サービスに勝てる、という理由です
*消すことが本当の目的ではなく、消せる構造がいかしているということ。