Koya Masuda
koxya
【テーマ】
アプリケーション設計において、「この処理はどこに置くべきか?」という問いは常につきまといます。
特にオブジェクト指向言語では、クラスやオブジェクトが自由に設計できる反面、責務と状態の境界が曖昧になりやすく、気づけば副作用があちこちに散らばります。
一度拡散した副作用は、バグやテストの不安定さを呼び、まるで割れ窓理論のように保守性の低下を加速させます。
本テーマでは、オブジェクト指向設計の原則(単一責務・不変条件・副作用の分離)に立ち返り、
「コールバック・イベント・非同期処理といった選択肢の中で、どのように責務と状態の境界を見極めるか」を体系的に整理します。
具体的な設計判断の基準と、現場で使える“判断ツリー”を共有することで、日々の開発における「処理をどこに置くか問題」に自信を持って向き合えるようになることを目指します。
【想定する参加者層】
※発表者はRailsエンジニアであり、サンプルコードはRubyで示しますが、設計原則は言語・フレームワークを問わず応用可能です。
【トーク概要】
「コールバックに書くべき?」「イベントに切るべき?」「非同期に逃がすべき?」
日々の開発で誰もが悩む“副作用をどこに置くか問題”に悩むかと思います。この判断をセンスや慣習に頼らず、オブジェクト指向設計の原則に基づいて整理するのが本トークの目的です。
副作用を
という3層に分類し、それぞれをコールバック/ドメインイベント/非同期ジョブに対応づけた「設計判断ツリー」を提示します。
また、現場で陥りがちなアンチパターンとして
といった問題を、責務と状態の境界設計の観点から分解します。実際のコード例(Rubyで示します)を通じて、「副作用をどこに置くべきか」を説明できるようになることを目指します。