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

ソフトウェア設計の実践的な考え方

 ソフトウェア設計の実践的な考え方

①ソフトウェア設計の難しさ
②良い設計とはなにか?
③良い設計の効果
④ソフトウェア設計の実践技法
・既存コードの設計を改善するというアプローチ
・小さな設計改善
・大きな設計改善
・戦略的な設計改善

#javado 札幌 Java Doでしょう 31 「設計doでしょう」の発表資料

Avatar for 増田 亨

増田 亨 PRO

October 05, 2025
Tweet

More Decks by 増田 亨

Other Decks in Programming

Transcript

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

    増田 亨(masuda220) 著書(2017) 訳書(2024) *1 *2 *1 増田 亨(2017) 『現場で役立つシステム設計の原則』技術評論社 *2 Vlad Khononov(著) 増田 亨、綿引 琢磨(訳) 2024 『ドメイン駆動設計をはじめよう』オライリージャパン
  2. お話する内容 ① ソフトウェア設計の難しさ ② 良い設計とはなにか? ③ 良い設計の効果 ④ ソフトウェア設計の実践技法 •

    既存コードの設計を改善するというアプローチ • 小さな設計改善 • 大きな設計改善 • 戦略的な設計改善 3
  3. 設計改善(コードの整理整頓)三つのレベル ➢ 小さな設計改善 ➢ 大きな設計改善 ➢ 戦略的な設計改善 • 三つのレベルを並行して進める(段階論ではない) •

    下に行くほど、効果がはっきりするのに時間がかかる • 下に行くほど、良い設計か悪い設計か判断が難しい 19
  4. 小さな設計改善 初級レベル 乱雑なコードを整頓する6つの技法 ① コメントアウトされたコードの削除 ② デッドコードの削除 ③ チャンキング(空白行によるコード分割) ④

    説明用変数の導入 ⑤ ヘルパーメソッドの抽出 ⑥ ガード節の導入 全員が、いつでも、自発的に (相談・レビューなしで) 目指す状態 20
  5. 小さな設計改善の参考図書 22 第1部 整頓 第Ⅱ部 管理術 第3章 コードの不吉な臭い 4章~10章 第1章

    ちいさくまとめてわかりやすく 第2章 場合分けのロジックを整理する
  6. 大きな設計改善(持続的なコード整理) • 入出力と計算判断の分離 • 画面処理/データベース処理/通信処理から、計算判断を分離する • アプリケーション記述とプリミティブ記述の分離 • アプリケーション特化のデータ型を独自に設計する •

    独自のデータ型を使ってアプリケーションを記述する • 独自のデータ型内部にプリミティブなデータ型の操作を閉じ込める • 業務知識を使ってコードの名前空間を整理する • 業務の概念、構造、関心事の視点からコード整理の構造を決める 23
  7. 業務領域の分類と開発方針 中核 一般 補完 競争優位性 ◎ × × 複雑さ ◎

    〇 × 変化 〇 × × 開発方針 独自開発 製品購入 模倣 CRUD/ETL 簡易開発 28