天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

AI時代の「良いコード/悪いコードで学ぶ設計入門」「ドメイン駆動設計をはじめよう」- FL#100に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

AI時代の今だからこそ改めて考えたい、ソフトウェア設計の本質とは何か。 それぞれの書籍の著者、訳者であるミノ駆動さんと増田亨さんに、書籍の内容を紐解きながら、AI時代においても変わらず重要となる普遍的な原則や、むしろ重要性が増すであろうエンジニアリングの勘所についてお話しいただきます。

会の様子

AI時代の『ドメイン駆動設計をはじめよう』

最初に増田さんの講演がありました。

ソフトウェア設計の考え方とかやり方に関しては、AI技術を使いこなせるかどうかの差が激しく出てしまう分、これまで以上に重要度が増してくるだろうという話がありました。

増田さんはAIを深堀りするかの判断材料に使ったり自分の解釈と一般論を比較して気づきを得るために使ったり、便利になったコード補完ツールとして使っているという話が出ていました。

また、ソフトウェア設計の3つのスキルとしては、複雑さの分解/優先順位の見極め/状況変化に適応、が重要だと考えているそうです。
増田さんが訳した「ドメイン駆動設計をはじめよう」の本とも関連しますが、直接的に事業価値を生み出すような領域に対して判断して行動することが重要だと思っているそうで、エンジニアである以上は初学者であることを恐れずに学び続けることが大切だということでした。
具体的には、基礎や設計原則、全体像の掴み方、探求スキルや協働スキルが重要だということです。

AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』

続いてミノ駆動さんから発表がありました。

初版の良いコード/悪いコードで学ぶ設計入門からの改定点の紹介があり、以下の点の紹介がありました。

  • 凝集度や結合度からカプセル化、関心の分離に説明を書き直した
  • インターフェースと関心の分離の説明を追加し、インターフェースをもっと使って欲しいという想いから内容を加筆
  • 認知バイアス(アンカリング効果)の説明を追加
  • 説明によって設計スキルを向上させる方針

次に、生成AIをどう使っているか?の話がありました。
雑な指示(このコードをリファクタリングして、と言ってもそんなにリファクタリングできない)をしてもそんなに分析や実行がされないということで、これは学習データの質が低いことで言葉の汚染が起きているからなんじゃないかと感じているそうです。

そこで、負債分析のためにバグサーチャーをCursor+Claude-4で動作させているそうで、内容はさすがに秘密であるものの生成AIは意図を分析できるというのが非常に良いようで、技術的負債をがんがん分析できるようになっているそうです。

また、AIによる高品質なテストコードを実装させるために契約による設計に基づくことが重要ということでした。

パネルディスカッション

講演のあとはパネルディスカッションがありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

講演の感想
  • 大きな泥団子を作っちゃうというのは今後起き得るし、基本スキルや事業理解が必須になってくるんだろうなというのを感じた
  • 大量のコードを読んでバグを見つけるとかはAIの使い方の実践知としていいなあと思った
AIは設計のコストを下げているか?
  • 判断を丸投げするということなのであまり下がらないと思う
簡略で済ませるべきところにAIが出たことで設計が変わってくるのか?
  • それなら事業戦略にもっと時間を使えば良いと思う
バグサーチャーは変更容易性に特化しているのか?
  • そのとおりだが、やろうと思えばセキュリティとかも見える
20代をどう過ごしたのか?
  • パソコンを使うことでプログラミングを覚えて、それが転記になった。プログラミング言語Cは特に転記になった
  • あんまり本は読んでいなかった。ただ、会社で仕事のできなさに打ちのめされたこともあってビジネス書的なものを多数読み漁った。わからない人たちにわかるように話せるスキルは20代で身につけた
30代をどう過ごしたのか?
  • ちょっとした修正をしたらすぐにバグになったりした経験をしたことで、ソフトウェア設計を学ぶようになった。そこから本を読み漁った
  • UNIXネットワークプログラミングとOracleシステム設計を読んで役に立った
本をどう使っているか?
  • 実際にコード書いて使ってみることでやっと学びになる
  • 目的意識がまずあってそこで本が出てくる
  • 目次を見ることで地図を見る感覚がある
40代以降をどう過ごしたのか?
  • 認知科学とか哲学を学ぶようになってきた。設計とかモデリングとかを深く理解しようとすると人間の認知に潜ることが増えてきた結果そうなった。また、最近はやっている並行活動などにも役立つ
  • 伝わってそこで初めて価値になるんだ、というのを痛感した。Kent Beckの実装パターンは大好き
AIがコードを生成するのが当たり前の時代でエンジニアが設計を学ぶ意義
  • 何が問題なのか?を見つける意義
  • 設計を学んでも学んでいない人ではAIを使って出せる価値がまるで変わってくるので、意義がある
AIがコードを書くようになって技術的負債は増大したのだがどうすればいいか?
  • 理想構造を出すプロンプトが問題解決の糸口になると思う
  • 設計の勉強をすること。テストは品質を上げることはできないと思う

全体を通した感想

これまであった能力差というのがAIが出てきたことによってどんどん広がっていくんだろうなあというのを痛感するイベントでした。

生成AIの使い方というところで実際に現場で使っている話がお二人から聞けたのはとり価値があるなあと思いました。