「春の復習ランチタイム#6「分岐を低減するinterface設計と発想の転換」- ミノ駆動氏」に参加してきました。

Forkwellさんの表記イベントに参加してきたので感想を記載します。

内容

具体的な架空の 防犯システムの事例をもとにどう設計すると良いのか、を具体的な例で説明いただけました。

・Interfaceを上手に使うとコードがシンプルになる(
ただ、うまく活用するにはモノの見方の変換が必要
・仕様変更で分岐が莫大に増えて、ウってするケース
・下記2点を考えると良い

【要点1:目的単位で抽象化】
・システムには必ず目的がある
・売買するには
・構成要素のクラスも目的達成手段
・問題領域に対し、それを解決する様々な解決領域が世の中にある
・目的と目的達成手段は鏡合わせの関係になる
・インターフェースは同一目的で分けて、目的と達成手段を鏡合わせに整理する

【要点2:作ると使うを分ける】
・良くないロジックは、何を使うかを判断する分岐と実行するロジックが混在している
<作る>
 どの部品()Interface実装クラス】を使用するかの判断は、「作る側」に任せ、部品選択と組み立ては作る側にカプセル化する
<使う>
 使う側ではどの部品が使われているかは一切気にせず判断もしない
 渡されたインスタンスをただ使うに徹する

まとめ

 システムは目的達成手段であり、その構成要素たるクラスやinterfaceも目的達成手段であることを意識すること
 たとえば、同じ移動という目的であっても、移行速度を求めるか小回りを求めるかで状況によって目的を置かないといけない。すなわち、Interface設計可能な箇所は、機能性向上の可能性を示唆している。同一目的でも、より 顧客にリーチする機能に置き換える可能性を秘めている。
 Interfaceは銀の弾丸ではない。基本的に手段のバリエーションという視点での設計を推奨

感想

 インターフェース設計といった、設計/実装の話でしたが、概念的な話から分かりやすく説明いただき、PGMのインターフェース設計以外にも使えると感じる話でした。
下記は発表いただいたスライドになります。ありがとうございました。

ちなみにスライドの中で紹介されていた本で、あとで読みたいと思った本です。


この記事が気に入ったらサポートをしてみませんか?