🎯
【イベント参加レポート】Developers Summit 目的と抽象化の関係性から分かるシステムの設計精度を高める考え方
2月9日,10日にかけて開催されたDevelopers Summitに参加しました。
このレポートは2月10日(金)に開催された目的と抽象化の関係性から分かるシステムの設計精度を高める考え方の参加レポートです。
参加目的
「良いコードを書きたい」「設計してからコードを書きたい」と常々思っているが、
そもそも「良いコード」「設計」の概念を自分でもよく理解していなかったため。
登壇者
ミノ駆動 様@MinoDriven
内容
自分が勉強になった箇所の箇条書きです。
- 高凝集疎結合な設計を達成するためには適切なモデリングが必要
- 適切なモデリングをするためにはモデルの目的を明確にする必要がある
- 目的を明確にするには抽象化を意識する必要がある
- 抽象化は「問題領域」と「解決領域」で意味が異なる
- 今回は「問題領域」の抽象化
- 「問題領域」の抽象化は目的を達成する上で邪魔になる課題を抜き出すことを指す
- 「目的-抽象化」の切り口で見ると設計の様々な考えが整理される
- ユビキタス言語は目的と必ず紐づく言葉
- クラスと操作は目的ベースで命名を行う
- ドメインエキスパートと事業目的と目的達成上の課題について話し合うことが良いドメインモデリングをする要となる
- DRY原則とはコードの重複を許さないのではなく意図や目的の重複を許さない原則
- 単一責任原則とは単一目的原則
感想
大変勉強になりました。
これまでは言語の仕様を把握して、なるべく簡潔かつわかりやすいコードを書くことばかりに意識が向いていました。今回の講演を通して、目的を意識することで設計の方針が明確になることを理解することができました。
また、事業目的と目的達成上の課題に関する話が非常に興味深かったです。
他の参加者の方からも質問がありましたが、システムの対象となるユーザーは目の前の問題の解決を第一に考える傾向にあります。
従って、漫然と話を聞くだけではなく、本当に解決したい課題はどこにあるのかについて、話しあう必要があることを強く感じました。
やや話はそれますが、この話を聞いて「システムを業務に合わせる」日本の商習慣を想起しました。
本当に解決するべき課題の解決に取り組むことはコードの設計だけでなく、より大きな問題解決につながると思いました。
Discussion