Slide 1

Slide 1 text

AI時代のソフトウェア設計の学び方 2026年5月30日 有限会社システム設計 増田 亨 #jjug_ccc 2026 Spring

Slide 2

Slide 2 text

自己紹介 専門領域 • 業務系アプリケーションの開発 最近の仕事 • 技術的負債を返済するお手伝い • エンジニアの設計スキル向上のお手伝い 2 増田 亨(masuda220) 著書(2017) 訳書(2024) *1 *2 *1 増田 亨(2017) 『現場で役立つシステム設計の原則』技術評論社 *2 Vlad Khononov(著) 増田 亨、綿引 琢磨(訳) 2024 『ドメイン駆動設計をはじめよう』オライリージャパン

Slide 3

Slide 3 text

お話しする内容 ①AI時代のソフトウェア開発:いろいろな方向性 ②デジタル化の進展とソフトウェア開発の変容 ③これからのソフトウェア開発にどう取り組むか ④AI時代の設計技能:何を学ぶと効果的か • 初級から中級へ • 上級を目指す 3

Slide 4

Slide 4 text

①AI時代のソフトウェア開発 いろいろな方向性 4

Slide 5

Slide 5 text

方向性の選択肢 5 自動化(無人化) vs. 人の活動支援 大きな事前設計 vs. 小さな設計の反復 設計スタイル AI技術の活用

Slide 6

Slide 6 text

設計スタイルの選択 6 大きな事前設計 小さな設計の反復 BDUF: Big Design Up Front 建築や量産型製造業で一般的 ウォーターフォール的なソフトウェア開発 IterativeでIncrementalな設計 最初に小さな設計を行い(Enough Design Up Front) その結果を観察し、小さな設計改善を行う これを繰り返す

Slide 7

Slide 7 text

AI技術で何を目指すか 7 自動化(無人化) 人の活動支援 AI技術を使って、できるだけ人を介在させない ことで、コストダウン、スピードアップ、 一定品質を達成する 人の判断と行動が主体で、AI技術を使って 人の能力を増強することで、コストダウン、 スピードアップ、一定品質を達成する

Slide 8

Slide 8 text

8 小さな設計の反復 大きな事前設計 自動化 (無人化) 人の活動 支援

Slide 9

Slide 9 text

9 小さな設計の反復 大きな事前設計 自動化 (無人化) 人の活動 支援

Slide 10

Slide 10 text

10 Not 大きな事前設計 Not 自動化(無人化) Why?

Slide 11

Slide 11 text

②デジタル化の進展 事業活動とソフトウェア開発の一体化 11

Slide 12

Slide 12 text

事業活動のデジタル化とソフトウェア開発 12 事業開発 組織開発 ソフトウエア開発 三つの活動が深く結びつき相互作用する

Slide 13

Slide 13 text

事業活動のデジタル化とソフトウェア開発 13 事業開発 組織開発 ソフトウエア開発 三つの活動が深く結びつき相互作用する 事業の誕生期:0→1フェーズ 事業の形成期:1→10 フェーズ 事業の発展期:10 → 100 フェーズ デジタル化の進展により、どのフェー ズでも、三つの活動の連動性と相互依 存性が強まっている

Slide 14

Slide 14 text

14 事業環境 経済・社会の状況 変動性 VUCA: Volatility, Uncertain, Complex, Ambiguity 多くの要素が絡み合い 複数の解釈が可能 予測が難しく 変化を繰り返し 不確実性 複雑性 多義性 事業活動を取り巻く環境

Slide 15

Slide 15 text

15 事業環境 経済・社会の状況 変動性 多くの要素が絡み合い 複数の解釈が可能 予測が難しく 変化を繰り返し 不確実性 複雑性 多義性 事業活動を取り巻く環境 事業開発 組織開発 ソフトウエア開発 VUCA: Volatility, Uncertain, Complex, Ambiguity

Slide 16

Slide 16 text

16 事業環境 経済・社会の状況 変動性 多くの要素が絡み合い 複数の解釈が可能 予測が難しく 変化を繰り返し 不確実性 複雑性 多義性 事業活動を取り巻く環境 事業開発 組織開発 ソフトウエア開発 あらかじめ用意された答えはない世界

Slide 17

Slide 17 text

変動し不確実で複雑で多義的という、用意さ れた答えがない状況でどう判断し行動するか 17 事業開発 組織開発 ソフトウエア開発 人と人との相互作用に よる協働創発 学習と成長を続ける 個人と組織 OADIループ 観察-評価-設計-実装

Slide 18

Slide 18 text

事業環境、ソフトウェア開発、取り組み方 18 事業環境 変動性 不確実性 複雑性 多義性 事業開発 組織開発 ソフトウエア開発 人と人との相互作用 学習と成長 観察-評価-設計-実装 ループ あらかじめ用意された答えのない世界 取り組み方

Slide 19

Slide 19 text

19 小さな設計の反復 大きな事前設計 自動化 (無人化) 人の活動 支援 人と人との相互作用 学習と成長 観察-評価-設計-実装

Slide 20

Slide 20 text

③小さな設計の反復×人の判断行動をAIで支援 このソフトウェア開発にどう取り組むか 20

Slide 21

Slide 21 text

ソフトウェア開発の根底原則 21 事業目的適合性 変更容易性

Slide 22

Slide 22 text

事業目的適合性 • 昔も、今も、これからもソフトウェア開発の根本原則 • 従来は、ソフトウェアエンジニア以外がプロダクトの 企画や要求定義の活動として取り組んできた • 事業活動のデジタル化の進展により、事業開発・組織 開発・ソフトウェア開発が一体となり相互作用するこ とで、ソフトウェアエンジニアが当事者として取り組 むべき課題となった • AI技術活用の絶対的な評価基準 22

Slide 23

Slide 23 text

変更容易性 • 良い設計は悪い設計より変更が楽で安全 • 予測が難しく、複雑で、変化を続ける事業環境で、ソ フトウェア開発に取り組むための根本原則 • ソフトウェア設計のあらゆる原則とパターンは、この 変更容易性原則の特殊化 ➢ AI技術の進展で、従来の設計原則とは異なるアプローチで変更容易性を 実現できるという仮説は未検証 23

Slide 24

Slide 24 text

AI技術を活用したソフトウェア開発 • 人と人との相互作用、組織の学習と成長、観察-評 価-設計-実装ループに効果的に取り組むために、 AI技術を活用して、人間の判断と行動を支援する ソフトウェア開発の ➢ 事業目的適合性を高めるためにAI技術を活用する ➢ 変更容易性を高めるためにAI技術を活用する 24

Slide 25

Slide 25 text

AI時代にどんな知識と技能が役に立つか? ソフトウェアの • 事業目的適合性を判断し向上するための知識と技能 • 変更容易性を判断し向上するための知識と技能 一般論として • 事業理解や業務知識は役に立つ • ソフトウェアの設計原則やパターンの知識は役に立つ 25

Slide 26

Slide 26 text

しかし • 事業理解や業務知識が役に立つと言われてもピンとこ ない • 設計原則やパターンをある程度は知っているが、実践 で役に立つ実感が少ない • 何を、どう学べば、どんな効果があるか、具体的にわ からない • 日々の仕事の中で、学習の時間は確保できない 26

Slide 27

Slide 27 text

そこで耳よりな話 • 効率的かつ効果的に学ぶ方法がある • 事業目的適合性を判断し改善し、同時に、変更容易性 を判断し改善するための設計技能を習得するための 実践的な考え方とやり方 27

Slide 28

Slide 28 text

初級から中級へ 28

Slide 29

Slide 29 text

事業目的適合性と変更容易性を体験的に学ぶ ① 事業目的をざっくり理解する(スタートライン) ② コードの中で事業目的適合性に強く関係する場所の見 つけ方を覚える ③ 事業目的適合性に強く関係する場所(コードのごく一 部)に集中して、変更容易性を改善するやり方を体験 的に学ぶ ④ 区分がらみのコードの変更容易性を改善すると事業活 動とコードのつながりが捉えやすくなる効果を評価 29

Slide 30

Slide 30 text

事業目的をざっくり理解する三つの公式 • 利益=売上 – 費用 • 安定した利益=競争優位 • 競争優位=差別化戦略の実行結果 ➢ 初級者はこの三つの公式をひとまず言葉として覚える ➢ 中級者になるために、コード全体の中で、どこがこの 三つの公式と強くつながるかを体験的に学ぶ 30

Slide 31

Slide 31 text

事業目的適合性に強く関係するコードの見つけ方 • 区分を判定するロジックと、区分ごとの適用ルールの 切り替えを記述している場所に注目する 具体的には ➢ if/switch (名前のない暗黙の区分) ➢ enum 列挙定数(名前を付けて明示された区分) ➢ 区分マスタテーブルを参照している場所 31

Slide 32

Slide 32 text

なぜ区分に焦点を合わせるか? • 区分を判定し区分ごとに適用ルールを切り替えるのは 「利益=売上-費用」を持続的に達成するため • 区分の分類ロジックや区分ごとの適用ルールがどのよ うに、「売上」「費用」「競争優位」「差別化の実 行」に影響するかに注目することで、事業活動とコー ドのつながりが見えてくるようになる • このつながりを理解できると視野が事業活動に広がり、 事業目的適合性を判断し改善し技能が向上する 32

Slide 33

Slide 33 text

区分まわりのコードの乱雑さを観察する • 複雑なif/switchの記述(区分の暗黙化) • 同じような分類ロジック、ルール適用の切り替え構造 が、あちこちに散在し、重複した記述も多い • 区分に異なる分類軸が混在(隠された掛け合わせ構造) • 特殊な条件を分岐構造の奥深くに記述 • 使われていない区分の温存 33 現実世界の変動性・不確実性・複雑性・多義性の写像 and 技術負債

Slide 34

Slide 34 text

設計改善ネタの宝庫(変更容易性の改善) • 名前を付けて明示化(変数名/メソッド名/列挙型定数) • 特殊な条件をガード節として外だし • 名前の整合性や記述順序に違和感があれば、複数の区 分軸が混在している可能性が高い • enumで列挙型定数を定義し、分類ロジック、適用ルー ルをenum内部にカプセル化した時に、ロジックや定数 がきれいに整理できない場合も、分類軸の混在を疑う 34

Slide 35

Slide 35 text

区分に焦点を合わせ効率的かつ効果的に学ぶ 35 準備運動 練習 実践 1章と2章を 完全に理解する 1章 最初のリファクタリングの例 switch文のリファクタリングを 徹底的に練習する 実コードで、区分がらみの 乱雑なコードの設計改善と 事業目的との関係づけを 掘り下げてみる 実コードで 区分がらみの 乱雑なコードを 三つ特定する

Slide 36

Slide 36 text

中級から上級へ 36

Slide 37

Slide 37 text

中級と上級の間の大きなギャップ 中級 ・ルールベース(文脈に関わらず同じルールで判断する) ・視野が狭い、視点が少ない、つながりで考えない ・そこそこ居心地が良いので、この段階にとどまる 上級 ・文脈依存で判断しようとする ・視野を広げ、視点を増やし、つながりで考えようとする ・現状に安住するとスキルが劣化することを知っている 37

Slide 38

Slide 38 text

上級を目指す 学びの目的を強く意識し、成長を確認しながら進む • 事業目的適合性を判断し改善する技能を高める • 変更容易性を判断し改善する技能を高める そのための ➢ 視野を広げる練習と実践 ➢ 視点を増やす練習と実践 ➢ つながりで考える練習と実践 38

Slide 39

Slide 39 text

視野を広げ、視点を増やし、 つながりで考えるための練習と実践 39 1章 事業活動を分析する 2章 事業活動の複雑さに立向かう 10章 設計の経験則 11章 設計を進化させる 13章 現実世界のドメイン駆動設計 付録 ドメイン駆動設計実践の事例 差別化戦略を実行するためのソフトウェア設計を学ぶ この本の考え方とやり方を習得す ると、区分がらみの乱雑なコード の設計改善に取り組む優先順位を 事業目的適合性で判断できるよう になる

Slide 40

Slide 40 text

視野を広げ、視点を増やし、 つながりで考えるための練習と実践 40 1章 事業活動を分析する 2章 事業活動の複雑さに立向かう 10章 設計の経験則 11章 設計を進化させる 13章 現実世界のドメイン駆動設計 付録 ドメイン駆動設計実践の事例 現実の 事業開発 組織開発 ソフトウエア開発 関連づける 差別化戦略を実行するためのソフトウェア設計を学ぶ

Slide 41

Slide 41 text

視野を広げ、視点を増やし、 つながりで考えるための練習と実践 41 1章 事業活動を分析する 2章 事業活動の複雑さに立向かう 10章 設計の経験則 11章 設計を進化させる 13章 現実世界のドメイン駆動設計 付録 ドメイン駆動設計実践の事例 現実の 事業開発 組織開発 ソフトウエア開発 関連づける 時間をかけてなんども繰り返しながら学習し成長する 差別化戦略を実行するためのソフトウェア設計を学ぶ

Slide 42

Slide 42 text

さらに、視野を広げ、視点を増やし、 つながりで考える練習と実践 42 【エッセンシャル版】 関連づける 差別化戦略を実行するため の考え方とやり方を学ぶ 事業目的と事業活動を 財務の視点から捉える 現実の課題 事業開発 組織開発 ソフトウエア開発 時間をかけて少しずつ

Slide 43

Slide 43 text

まとめ 43

Slide 44

Slide 44 text

AI時代にどんな知識と技能が役に立つか? ソフトウェアの • 事業目的適合性を判断し向上するための知識と技能 • 変更容易性を判断し向上するための知識と技能 効率的かつ効果的に学ぶために ➢ 区分まわりの乱雑なコードを掘り下げる ➢ 事業活動と差別化戦略に視野を広げつながりで考える 44

Slide 45

Slide 45 text

45 コミュニティへの貢献(イベント参加)ありがとうご ざいます! アンケートへの回答は、運営スタッフへの感謝表明で あり、コミュニティへのさらなる貢献です! セッションアンケート 全体アンケート