はじめに
リンクスタート! nikkieです。
『良いコード/悪いコードで学ぶ設計入門』(通称ミノ駆動本1)の読書ログです。
13章「モデリング」を読んだところ、ミノ駆動さんの過去の登壇と結び付いて刺激的でした。
ここにログを残します。
目次
- はじめに
- 目次
- ミノ駆動本 13章「モデリング」
- 2021年4月 Developer eXperience Day 2021
- 13章「モデリング」とクソコード動画「Userクラス」解説とのつながり
- 理解したこと箇条書き
- エヴァンス本から、深いモデル
- 「Userクラス」で風刺されたこの構造、他のクソコード動画でも見たような…
- 終わりに
- P.S. その1 ミノ駆動本_読書pyの予習
- P.S. その2 「変換能力」
ミノ駆動本 13章「モデリング」
公開されている目次を引用します。
13 モデリング ―クラス設計の土台―
13.1 邪悪な構造に陥りがちなUserクラス
13.2 モデリングの考え方とあるべき構造
13.3 良くないモデルの問題点と解決方法
Column クソコード動画「Userクラス」
13.4 機能性を左右するモデリング
13章を読んで、ミノ駆動さんの過去の登壇から思い出されたものがありました。
2021年4月 Developer eXperience Day 2021
2021/04/10にオンライン開催されたDeveloper eXperience Day 2021。
ミノ駆動さんは「クソコード動画『Userクラス』で考える技術的負債解消の観点」という発表をされています。
多くのサービスで技術的負債になりやすい筆頭格として、Userクラスがあります。本セッションでは、Userクラスの負債により引き起こされる弊害を描いた、風刺動画を上映します。Userクラスでどんな課題が生じるのか、なぜ負債化しやすいのか、そして負債解消に必要な観点についてお話致します。
クソコード動画や、発表のアーカイブ、発表資料は上記サイトから見られます。
また、logmiさんに書き起こしがあります。
発表資料は以下の構成です(レジュメ(slide=3)参照)。
13章「モデリング」とクソコード動画「Userクラス」解説とのつながり
気づいた対応を、ミノ駆動本の目次にネストする形式で示します(Developer eXperience Day 2021の資料は斜体にしました)。
- 13.1 邪悪な構造に陥りがちなUserクラス( & Column クソコード動画「Userクラス」)
- 劇中の問題
- 13.2 モデリングの考え方とあるべき構造
- 13.3 良くないモデルの問題点と解決方法
- Userクラスが抱える問題
- モデリング 解決編
- 13.4 機能性を左右するモデリング
- モデリング発展議論
この対応関係に気づけたのは私にとって大きかったです。
何がよかったかと言うと、Developer eXperience Day 2021の発表を元々聞いていたので、ミノ駆動本の13章が読みやすくなりました。
同じ話をプレゼンテーションの構成でも書籍の構成でもインプットとなったので、読書中は「一回インプットしたことあるから分かる!分かるぞ」と心地よい体験でした。
理解したこと箇条書き
- ミノ駆動本のキーワードは「目的」っぽい!
- システムは目的達成手段
- モデルはシステム(目的達成手段)の一部
- 👉モデルも目的達成手段
- Developer eXperience Day 2021では、ミクロなシステム
- 目的を表現した名前
- 10章「名前設計」につながる!
- プログラミングって概念操作していたってことか!
- 情報システム=コンピュータを使ったシステム
- 現実世界の概念を仮想世界(コンピュータ上)へ変換している
- コンピュータによって概念操作を高速化
- 概念操作を認識できたことで、少し上の視座から日夜やっていることを捉えられそうな感覚!
エヴァンス本から、深いモデル
13.4で「深いモデル」が導入されます(Developer eXperience Day 2021では、発展議論)。
ソースは『エリック・エヴァンスのドメイン駆動設計』のおそらく8章「ブレイクスルー」。
過去のミノ駆動さんの発表で紹介された「シェアパイ」の例(深いモデルの例)が登場する章です。
深いモデルは、一度に1オブジェクトという小規模なリファクタリングが連続して行われることで、徐々に姿を現すことができるのだ。(エヴァンス本 Kindle版 p.196)
開発していて突如「今浮かんだこの設計、既存の設計とぜんぜん違うけどうまくいくじゃん」となる経験はしたことがあって、これが「ブレイクスルー」!
そして、これはリファクタリングを重ねて、理解が蓄積される(エヴァンス本の言い回しでは、開発者の視界が明確になる)ことで起こる!
リファクタリングを重ねた先に、深いモデルに至る出来事があるのか!
「Userクラス」で風刺されたこの構造、他のクソコード動画でも見たような…
クソコード動画Userクラスを見返したところ、巨大なクラスの左右に複数のクラスが並ぶ構造、どこかで見たぞ。
👉直近の一枚岩モデルでした!
お商品クラスの両側に、たくさんのおクラスがつながってますわ〜
ミノ駆動 on Twitter: "クソコード動画「一枚岩モデル」 #AWSDevDay https://t.co/NwfOmXWy6F" / Twitter
終わりに
ミノ駆動さんの過去の登壇との関連を見出しながら13章「モデリング」を読んだログでした。
ミノ駆動本の13章「モデリング」については書籍と同様の主張に書籍以外のメディアでも触れられます。
気になった方はお好きなメディアでぜひ触れてみてください!
P.S. その1 ミノ駆動本_読書pyの予習
1/6(金)開催、ミノ駆動本_読書py事前もくもくの一環として13章を読んだのでした〜
P.S. その2 「変換能力」
13.4で出てくる「変換能力」
世の中の優れたしくみは、優れた変換能力を有しています。(ミノ駆動本 Kindle 版 p.452).
思い出したのは『アイの歌声を聴かせて』のAIシオンさん。
サトミを幸せな状態に"変換"しようとするシオンさん、尊すぎるでしょ…
機械学習のブレイクスルーもあって、コンピュータで変換できるものは一気に増えていますね(2022年は画像生成など)。
アイうたで描かれた世界も手の届くところまで来ているような気がしますね。