Slide 1

Slide 1 text

オブジェクト指向設計 とか抽象データ型とかドメイン駆動設計とか

Slide 2

Slide 2 text

よい設計 今日の資料は作ってい て気合が入りました 私はこのために生きているのかもしれない

Slide 3

Slide 3 text

よい設計はなぜ大切か

Slide 4

Slide 4 text

目的 目的 まず目的を明確にします

Slide 5

Slide 5 text

よい設計はなぜ大切か プログラムはどんどん 複雑になっています よほど整理し ないとわけが 分からない 最近のOSで1億行くらい?

Slide 6

Slide 6 text

よい設計はなぜ大切か うまい 整理 よい 設計

Slide 7

Slide 7 text

動くプログラム 動くかどうかはどうでもいい

Slide 8

Slide 8 text

動くプログラム この仕様なら要件を満た せるとかどうでもいい

Slide 9

Slide 9 text

動くプログラム この仕様なら要件を満た せるとかどうでもいい

Slide 10

Slide 10 text

動くプログラム 完成したプログラムは最低でも動いてはいる 動いてからが勝負 そもそも動くだけなら1950年代の技術で十分

Slide 11

Slide 11 text

動作 この仕様なら要件を満たせるとかどうでもいい そこから先が勝負 そうしないと、仕様を追加していくうちにどうせ動か くなりますからね

Slide 12

Slide 12 text

よい設計 よい設計 保守 拡張性

Slide 13

Slide 13 text

どれだけ整理すればよいのか?

Slide 14

Slide 14 text

どれだけ整理すればよいのか? 方向はわかった 距離は?

Slide 15

Slide 15 text

どれだけ整理すればよいのか? 文章や図を 使って最もわ かりやすく

Slide 16

Slide 16 text

シンプル ものごとはできるかぎりシンプルに すべきだ。しかし、シンプルすぎて もいけない。 • アルバート・アインシュタイン

Slide 17

Slide 17 text

プログラム分野では • 必要な要件を正しく表現し、できる限り少 ない要素の組み合わせて説明する • できるだけ少ない実装ではないことに注意 できるかぎり シンプルに • 要件の説明を省略するために正しさを端 折ってはいけない • 実装できてもだめ シンプルすぎ てもいけない。

Slide 18

Slide 18 text

実装 表現はなるべく自然言語に近いレベルでわかりやすく この技術は日進月歩なので、最新のライブラリを参考に シンプルな説明に出てきた図、単語をそのままプログラムにする オブジェクト指向

Slide 19

Slide 19 text

整理のための方法

Slide 20

Slide 20 text

構造化 ツリーにしてわかりやすく

Slide 21

Slide 21 text

結合度・凝集度 • よそのモジュールのことを知らない といけない度合い • 小さいほうが良い 結合度 • 同じモジュールでは統一された内容 を各度合 • 大きい方がよい 凝集度

Slide 22

Slide 22 text

オブジェクト指向 すべてはオブジェクト 構造化を簡単に実装 データと処理を関連付ける カプセル化 継承

Slide 23

Slide 23 text

ドメイン駆動設計 • 単にオブジェクト指向 じゃないですかね? • ビジネスロジックのため のデザインパターンが必 要 ドメイン駆動設計(英: domain- driven design, DDD)とはソフト ウェアの設計手法であり、「複雑 なドメインの設計は、モデルベー スで行うべき」であり、また「大 半のソフトウェアプロジェクトで は、システムを実装するための特 定の技術ではなく、ドメインその ものとドメインのロジックに焦点 を置くべき」であるとする。 (Wikipedia)

Slide 24

Slide 24 text

DSL 複雑なライブラリは内部DSLとして実装すべき。 特定タスク向けの簡易言語 外部DSL 内部DSL