SlideShare a Scribd company logo
1 of 14
Download to read offline
Clean
Architecture
第Ⅱ部
構成要素から始めよ
前回まとめ
- なぜクリーンなアーキテクチャーが必要なのか
- 要求に対して簡単に変更できるようにする
- 必要なリソースを最小限にする
- 設計とアーキテクチャ
- 設計とアーキテクチャに違いはない
- 2つの価値のお話
- 振る舞い
- アーキテクチャ/構造
第Ⅱ部:構成要素から始めよ
プログラミングパラダイム
- パラダイムの概要
- 構造化プログラミング
- オブジェクト指向プログラミング
- 関数型プログラミング
第1章:パラダイムの概要
1. 構造化プログラミング
- 1968年に制限のないジャンプ(goto)が有害であると示した
- gotoをif/then/elseなどに置き換えた
- 要約すると、直接的な制御の移行に規律を課すもの
2. オブジェクト指向プログラミング
(OO言語)
- 1966年に2人のプログラマーによって発見された
- 要約すると、間接的な制御の移行に規律を課すもの
3. 関数型プログラミング
- 3つのパラダイムの中で最も早く発見されている
- 要約すると、代入に規律を課すもの
第2章:構造化プログラミング
- 1986年にEdsger W Dijkstraによってgoto文が有害であるとの論文を発表
第3章:オブジェクト指向プログラミング
Object Oriented
- 1966年に2人のプログラマーによって発見された
- OOの3大要素
1. カプセル化(隠ぺい)
2. 継承(インヘリタンス)
3. 多態性(ポリモーフィズム)
第3章:オブジェクト指向プログラミング
Object Oriented
1. カプセル化(隠ぺい)
- privateアクセス修飾子を付与
- フィールドの値を利用する場合、アクセサメソッド(get/set)を使用
第3章:オブジェクト指向プログラミング
Object Oriented
2. 継承
- あるクラスの機能(フィールド、メソッド)を引き継いだクラス
- 引き継ぎ元:基底クラス/スーパークラス
- 引き継ぎ先:派生クラス/サブクラス
- extends
第3章:オブジェクト指向プログラミング
Object Oriented
3. 多態性/ポリモーフィズム
- 同じメソッドを記述しても、異なる動作を実現できる
オーバロード(多重定義): 同一クラス内で引数の違いによってメソッドを呼び分け
ること
オーバライド(再定義): 親クラスのメソッドを子クラスで上書きすること
第3章:オブジェクト指向プログラミング
Object Oriented
ポリモーフィズムのパワー
第4章:関数型プログラミング
第4章:関数型プログラミング
可変性の分離
- 「可変コンポーネント」と「不変コンポーネント」に分離する
- 不変コンポーネント
- 可変変数を使わずに純粋に関数的にタスクを行う
- 可変コンポーネントと1つ以上と通信する
- 可変コンポーネント
- 変数の状態の変更を許可している
- 並行処理や競合状態から保護するためトランザクショナルメモリを使用する
第4章:関数型プログラミング
可変性の分離
第Ⅱ部:まとめ
- パラダイムの概要
- 大きく3つのパラダイムがあり、それらは与えるのではなく制限をかけている
- 構造化プログラミング
- 直接的な制御の移行に規律を課すものである( goto分)
- オブジェクト指向プログラミング
- 間接的な制御の移行に規律を課すものである
- 関数型プログラミング
- 代入に規律を課すものである(変数の不変性)

More Related Content

More from tak

第ⅴ部:clean architecture アーキテクチャ Part8
第ⅴ部:clean architecture アーキテクチャ Part8第ⅴ部:clean architecture アーキテクチャ Part8
第ⅴ部:clean architecture アーキテクチャ Part8
tak
 
第ⅴ部:clean architecture アーキテクチャ Part7
第ⅴ部:clean architecture アーキテクチャ Part7第ⅴ部:clean architecture アーキテクチャ Part7
第ⅴ部:clean architecture アーキテクチャ Part7
tak
 
第ⅴ部:clean architecture アーキテクチャ Part6
第ⅴ部:clean architecture アーキテクチャ Part6第ⅴ部:clean architecture アーキテクチャ Part6
第ⅴ部:clean architecture アーキテクチャ Part6
tak
 
第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5
tak
 
第ⅴ部:clean architecture アーキテクチャ Part4
第ⅴ部:clean architecture アーキテクチャ Part4第ⅴ部:clean architecture アーキテクチャ Part4
第ⅴ部:clean architecture アーキテクチャ Part4
tak
 
第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3
tak
 
第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2
tak
 
第ⅴ部:clean architecture アーキテクチャ Part1
第ⅴ部:clean architecture アーキテクチャ Part1第ⅴ部:clean architecture アーキテクチャ Part1
第ⅴ部:clean architecture アーキテクチャ Part1
tak
 
第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション
tak
 

More from tak (12)

DiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみたDiI/DIコンテナを一から学んでみた
DiI/DIコンテナを一から学んでみた
 
TypeScriptのdecoratorについて
TypeScriptのdecoratorについてTypeScriptのdecoratorについて
TypeScriptのdecoratorについて
 
Rust + web assemblyやってみた
Rust + web assemblyやってみたRust + web assemblyやってみた
Rust + web assemblyやってみた
 
第ⅴ部:clean architecture アーキテクチャ Part8
第ⅴ部:clean architecture アーキテクチャ Part8第ⅴ部:clean architecture アーキテクチャ Part8
第ⅴ部:clean architecture アーキテクチャ Part8
 
第ⅴ部:clean architecture アーキテクチャ Part7
第ⅴ部:clean architecture アーキテクチャ Part7第ⅴ部:clean architecture アーキテクチャ Part7
第ⅴ部:clean architecture アーキテクチャ Part7
 
第ⅴ部:clean architecture アーキテクチャ Part6
第ⅴ部:clean architecture アーキテクチャ Part6第ⅴ部:clean architecture アーキテクチャ Part6
第ⅴ部:clean architecture アーキテクチャ Part6
 
第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5第ⅴ部:clean architecture アーキテクチャ Part5
第ⅴ部:clean architecture アーキテクチャ Part5
 
第ⅴ部:clean architecture アーキテクチャ Part4
第ⅴ部:clean architecture アーキテクチャ Part4第ⅴ部:clean architecture アーキテクチャ Part4
第ⅴ部:clean architecture アーキテクチャ Part4
 
第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3第ⅴ部:clean architecture アーキテクチャ Part3
第ⅴ部:clean architecture アーキテクチャ Part3
 
第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2第ⅴ部:clean architecture アーキテクチャ Part2
第ⅴ部:clean architecture アーキテクチャ Part2
 
第ⅴ部:clean architecture アーキテクチャ Part1
第ⅴ部:clean architecture アーキテクチャ Part1第ⅴ部:clean architecture アーキテクチャ Part1
第ⅴ部:clean architecture アーキテクチャ Part1
 
第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション第ⅰ部:Clean Architecture イントロダクション
第ⅰ部:Clean Architecture イントロダクション
 

第ⅱ部:Clean architecture 構成要素から始めよ