今日の積み上げ
今日はアプリエンジニアとして「設計」に磨きをかけるべく、ウェビナーを2本視聴しました。
ソフトウェア品質向上のための設計力
「良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方」の著者であるミノ駆動さんが登壇されるということで、視聴しました。
- 単に動けばよいシステムじゃダメ。機能拡張性を考えた設計をすべき
- どこが拡張ポイントなのか分析が必要
- 拡張するためにはどうするのか?
- どこを抽象化するか?
- インタフェースをどこで切るか?
- こういうことを考えるためには、ソフトウェア工学に基づいた設計スキルが必要
正しいインタフェースと抽象化、というワードが普段あまり使わないので、印象に残りました。
- 開発者が抽象化したとき、それがビジネスサイドの人が意図するものと同じかどうかは会話してみないとわからない
- 抽象化にあたり、似て非なるものの見分けを解像度高く分析できるようになるには、ビジネスサイドの人と会話するしかない
ミノ駆動さんがやたらと「ビジネスサイドの人と会話」することを重視しているのがよくわかりました。
郷に入れば郷に従え、上達の近道はその道のプロに聞け、みたいなことですかね。
ドメイン駆動設計のススメ 〜開発しやすいコードを書こう
AWS DevAXの金森さんがファシリテーターで、福井さん、しょぼちむさん、そしてゲストに増田さんを迎えての濃厚な1時間でした。
なかなかこのメンツで話が聞けることはなくて、とても刺激を受けました。
- エバンス本(エリック・エヴァンスのドメイン駆動設計)は第3部がおすすめ
- おすすめと言いつつ、内容が初学者には理解しづらい部分があるらしい
- そこで、増田本(現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法)
- なるべく専門用語を使わず、現場で使えるように嚙み砕いて解説しているので、わかりやすい
- リファクタリングするポイントを見つけるには?
- しょぼちむノートのグラデーション(下の画像の見つけやすい⇔見つけにくいのこと)がわかりやすい
- 上から2つ目、3つ目が「チームで」できるようになると一段上のステージにあがった感じ(増田)
- スーパーエンジニアだと、上から3つ目とかができてしまう
- ここに手を入れれば要求を満たせる、と見抜ける
- だいたい普通は上から1つ目ぐらいまでしかいかない
個人的には、後者のウェビナーの方がめちゃくちゃ面白くて、増田本が無性に読みたくなりました。(前々から気になっていた一冊です)
密かに、今の現場でチームみんなで読書会を開きたいと思っているので、啓蒙活動頑張ってみます。
それでは、また。