Movatterモバイル変換


[0]ホーム

URL:


Upgrade to Pro — share decks privately, control downloads, hide ads and more …
Speaker DeckSpeaker Deck
Speaker Deck

ソフトウェア設計とAI技術の活用

Avatar for 増田 亨 増田 亨
July 17, 2025

 ソフトウェア設計とAI技術の活用

エンジニアの事業貢献を支援するカンファレンス Developers Summit 2025 Summerでの発表資料

概要:
① ソフトウェア産業と技術革新
② ソフトウェア設計の基本スキル
③ 設計スキルとAI技術の活用

Avatar for 増田 亨

増田 亨

July 17, 2025
Tweet

More Decks by 増田 亨

See All by 増田 亨

Other Decks in Programming

See All in Programming

Featured

See All Featured

Transcript

  1. ソフトウェア設計とAI技術の活用 2025年7月18日 有限会社システム設計 増田 亨 エンジニアの事業貢献を支援するカンファレンス Developers Summit 2025 Summer

  2. 自己紹介 専門領域 • 業務系アプリケーションの開発 最近の仕事 • 大きな泥団子退治のアドバイザ • エンジニアの成長支援 2

    増田 亨(masuda220) 著書(2017) 訳書(2024) *1 *2 *1 増田 亨(2017) 『現場で役立つシステム設計の原則』技術評論社 *2 Vlad Khononov(著) 増田 亨、綿引 琢磨(訳) 2024 『ドメイン駆動設計をはじめよう』オライリージャパン
  3. お話しすること ①ソフトウェア産業と技術革新 ②ソフトウェア設計の基本スキル ③設計スキルとAI技術の活用 3

  4. 4 ①ソフトウェア産業と技術革新

  5. ソフトウェア産業はゆっくり変化する • 経験的に、新しい技術がソフトウェア産業全体に 急速に普及することはない • 「革新的技術」の多くは短命で表舞台から消えていく 5 ソフトウェア産業全体を変える 本当に革新的な技術は じわじわと時間をかけて広がっていく

  6. 広い範囲の変化には時間がかかる 6 暗黙知の蓄積 形式知の 発生と流通 広い範囲で 実践の試み 「革新的な」技術を どこにどう使えば どんな効果があるか

    先駆者の試行錯誤 効果や課題など 暗黙知の言語化 書籍などで体系化 形式知として流通 さまざまな個別状況の 実践例に触れる機会が増加 その結果 有力な選択肢に変化
  7. 社会と技術の相互作用に時間がかかる • 新しい技術が世の中に広がるのは、社会的要素と技術的要素が 相互に影響しあいながら、全体として複雑なシステムが形成さ れていく(sociotechnical system) • 社会的要素(人の感情、組織の文化、経済的な損得勘定など) が技術の受け入れや利用方法に大きく影響する •

    別の言い方をすると、「最新」の技術とは、まだ社会的要素と の相互作用が不十分な段階の技術 7
  8. AI技術 • 技術的要素として発展途上(進化中) • 社会的要素との相互作用がはじまったばかり • AI技術と社会的要素がどのように相互作用し、社会システムや ソフトウェア産業がどのように変わっていくかを興味を持って 眺めている(幕を開けたばかりのAI劇場の観客) •

    人の行動パターンや社会の仕組みがAI技術によって急激に大き く変わることはないのかな、と思っている 8
  9. 9 ②ソフトウェア設計の基本スキル

  10. ソフトウェア設計の課題 • ソフトウェアは複雑である • ソフトウェアは変化を繰り返す • ソフトウェアの設計に使える時間は限られている 10

  11. 課題:ソフトウェアシステムは複雑である • 人の認知能力をはるかに超える複雑さ • 一度に全体を考えられない • 認知できる単位に分解しつつ、全体をうまく組み立てる 11

  12. 課題:ソフトウェアシステムは変化を繰り返す さまざまな状況の変化に対応するための修正と拡張 • 顧客の変化、競合の変化、サプライヤーの変化 • 事業のやり方の変化 • 利用可能技術の変化、技術利用コストの変化 人の学習と成長(状況の変化に適応することで状況が変わる) 12

  13. 課題:設計に使える時間は限られている あらゆる場所の設計を洗練させることは費用対効果が悪い 優先順位をつけて取り組む • 変更を楽で安全にする価値が高いところを重点的に • そういう価値が高くないところはできるだけ簡略に 優先順位をどう見極めるか? 13

  14. ソフトウェア設計 三つの基本スキル 14 モジュール化 事業戦略 の理解 学習と成長 複雑さを 分解 優先順位

    見極め 状況変化に 適応
  15. 15 モジュール化

  16. モジュール化 • モジュール化(関心の分離、抽象化、構造化) • 50年以上前から言われ続けるソフトウェア設計の基本 • アーキテクチャスタイル、設計原則、設計パターン、実装パ ターンは、いずれもモジュール化のバリエーション • 形式知として理解できても、実践知として活用できない

    • モジュール化の失敗 ⇒ 大きな泥団子 16
  17. モジュール化のエッセンス 17 混在 断片化 分離 集約 重複 一元化 いろいろ同時に考える 異なる関心事は

    別モジュールに あちこちを同時に考える 関連が強い関心事は モジュールに集める あちこちで同じことを考える 同じ関心事は ただ一つのモジュールで
  18. 18 事業戦略の理解

  19. 事業戦略を理解してソフトウェアを設計する デジタル化の進展により、事業活動のあらゆる領域でソフトウェ アが使われる。その結果、 ➢ソフトウェアエンジニアが事業戦略を理解して判断し行動する ことが直接的に事業価値を生み出す ➢ソフトウェアエンジニアが事業戦略を理解せずに判断し行動す ることが直接的に事業の損失になる 19

  20. 事業戦略とソフトウェア実装を結びつける 事業戦略(差別化戦略)に基づいて 設計の優先順位を判断し、技術選定する そのためのガイドブック *1 Vlad Khononov(著) 増田 亨、綿引 琢磨(訳)

    2024 『ドメイン駆動設計をはじめよう』オライリージャパン *1
  21. 設計の優先順位の判断 21 競合他社との差別化 中核の 業務領域 業務ロジック の複雑さ 優先的に 取り組む 補完

    一般 簡略に済ませる 模倣、流用、購入
  22. 事業戦略とソフトウェアをつなげて考える 22 差別化戦略 高業績を持続 させるための 基本方針 絵にかいた餅?

  23. 事業戦略とソフトウェアをつなげて考える 23 差別化戦略 ビジネス ルール 高業績を持続 させるための 基本方針 差別化を 実現するための

    さまざまな決め事 具体化 戦略を実行するために 適切な活動を刺激し 不適切な活動を制約する
  24. 事業戦略とソフトウェアをつなげて考える 24 差別化戦略 ビジネス ルール 業務 ロジック 高業績を持続 させるための 基本方針

    差別化を 実現するための さまざまな決め事 ビジネスルールに 基づく計算判断 (コード表現) 具体化 実装 ソフトウェアの中核
  25. 事業戦略の基本を学べる入門書 25 【エッセンシャル版】 独自性で競争するという考え方 差別化戦略の条件 ・戦略の核 独自価値の創造 ・戦略のかすがい 排他的選択 ・戦略の増幅装置

    適合性 ・戦略の実現要因 継続性 事業活動は、ソフトウェアシステムよりも複雑で変動要素が多いシステム 複雑なシステムの分析とモデル化の手法として読んでも参考になる *1 ジョアン・マグレッタ(著) 桜井 祐子(訳) 2012 『〔エッセンシャル版〕マイケル・ポーターの競争戦略』早川書房 *1
  26. 26 学習と成長

  27. 学びのエキスパートになる 27 ソフトウェア開発は発見と学びの連 続である 「効率的」で「経済的」に開発する ためには、学び続けることが必要 *1 デイビッド・ファーリー(著) 長尾 高弘(訳)

    2022 『継続的デリバリーのソフトウェア工学』日経BP *1 *1
  28. ソフトウェアエンジニアの学習と成長 最初は、誰もが初学者 • 最初は、わけがわからないことだらけ • どんなに学んでも、やっぱりわからない だから学び続ける • 基本をたいせつに •

    視野の広さ、視点の多さをたいせつに 異なる知見を持ち寄って、協働して共創する 28
  29. 何を学ぶと成長できるか(何が足りないか) 基礎 • プログラミング(手続き抽象、データ抽象、関数抽象、不変) • OSの仕組み、ネットワークの仕組み、データベースの仕組み 設計原則 • モジュール化、関心の分離、抽象化、構造化 全体像のつかみ方

    • システム全体、開発プロセス全体、事業活動全体 探求スキル • 観察、実験、文献調査、現地調査 協働スキル • 意図の伝達、他者の視点と感情の理解、課題の認識合わせ、解決策の提案 29
  30. どう学ぶか • 実践による学び • 協働による新たな知識の共創 • 書籍などから良質の形式知を取り込む • 文脈を翻訳しながら自分の暗黙知として内面化する 30

  31. どう学ぶか 31 手、目、耳を働かせながら 暗黙知(体験知、身体知)の 量を増やし、質をあげる 実践による 学び

  32. どう学ぶか 32 手、目、耳を働かせながら 暗黙知(体験知、身体知)の 量を増やし、質をあげる 実践による 学び 協働して 学ぶ 異なる経験知を

    持ち寄って 新たな知識を 共創する
  33. どう学ぶか 33 手、目、耳を働かせながら 暗黙知(体験知、身体知)の 量を増やし、質をあげる 良質の形式知 から学ぶ 実践による 学び 協働して

    学ぶ 書籍などで 体系的に整理され 言語化と可視化された 実践知 異なる経験知を 持ち寄って 新たな知識を 共創する
  34. 異なる文脈の知識を翻訳して取り込む 文脈の違いを理解する • 自分が学び成長してきた文脈(自分固有の経験知) • 書籍など形式知の文脈(抽象化・一般化された他者の経験知) • 他者が学び成長してきた文脈(他者固有の経験知) 文脈を翻訳しながら自分の暗黙知として内面化する •

    文脈の違いを意識して自分の経験知と対比し関連づける (協働スキルの基本) 34
  35. 35 ③設計スキルとAI技術の活用

  36. どちらのエンジニアがAI技術を活用できるか 36 ソフトウェア設計の 知識と経験が豊富 ソフトウェア設計の 知識と経験が貧弱

  37. AI技術について • ソフトウェア設計の考え方とやり方を学び、経験を通 じて設計技能を磨くことは、今まで以上に価値が高い • これまで大きな泥団子を作ってきた組織は、AI技術を 使って大きな泥団子を作る (設計スキルの不足) 37

  38. AI技術の使い方 設計判断は自分たちでやる(AIに設計判断させない) AIに良い設計を学習させるために自分たちが設計を学び成長する AI技術の効果的な使い方 • 設計の選択肢を増やす手段 • 設計の実験量を増やす手段 • 設計の評価視点を増やす手段

    • 設計を自分で考える時間を増やす手段 • 協働して設計する機会を増やす手段(対話機会を増やす手段) 38
  39. ソフトウェア設計 三つの基本スキル 39 モジュール化 事業戦略 の理解 学習と成長 複雑さを 分解 優先順位

    見極め 状況変化に 適応

[8]ページ先頭

©2009-2025 Movatter.jp