Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CleanArchitecture第5章&第6章
Search
ssknnm
September 23, 2020
Programming
0
96
CleanArchitecture第5章&第6章
CleanArchitecture輪読会の資料です
ssknnm
September 23, 2020
Tweet
Share
More Decks by ssknnm
See All by ssknnm
CleanArchitecture_31章_32章.pdf
ssknnm
0
82
CleanArchitecture23章&24章
ssknnm
0
260
CleanArchitecture17章&18章
ssknnm
0
210
Other Decks in Programming
See All in Programming
はじめてのMaterial3 Expressive
ym223
2
370
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
120
go test -json そして testing.T.Attr / Kyoto.go #63
utgwkk
3
300
AWS発のAIエディタKiroを使ってみた
iriikeita
1
190
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
150
RDoc meets YARD
okuramasafumi
4
170
rage against annotate_predecessor
junk0612
0
170
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.4k
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
220
The Past, Present, and Future of Enterprise Java with ASF in the Middle
ivargrimstad
0
110
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
速いWebフレームワークを作る
yusukebe
5
1.7k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Site-Speed That Sticks
csswizardry
10
810
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Side Projects
sachag
455
43k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Transcript
CleanArchitecture5章&6章
第5章オブジェクト指向プログラミング オブジェクト指向とは? カプセル化とは? 継承?ポリモーフィズム?
そもそもオブジェクト指向とは オブジェクト指向(object oriented)・・・モノ中心、モノ思考 Q.できた目的 A.ソフトウェアの保守・再利用をしやすくするため Q.どうやって実現するのか A.部品の独立性を高める(モノ思考っぽい)ことで修正が起きたときの影響範囲を最小 限にし、他のシステムでの再利用を可能にする
カプセル化 • 実装ファイルの要素にアクセスすることができない • 外側にはデータは見えないように • プライベートなデータメンバー 「しかしオブジェクト指向がカプセル化に依存していることを受け入れるのは難しい」と本 書では説明している。 モノ思考なのでデータの改竄や盗み見が起きないようにするためにカプセル化があるの
かなと思った。
継承 • スコープ内の変数と関数のグループを再度宣言したもの • クラスの共通部分を別クラスにまとめる仕組み →コード重複を排除できる 共通クラス:スーパークラス それを利用するクラス:サブクラス
ポリモーフィズム • ポリモーフィズム=いろいろな形に変わる • デバイス非依存を実現 • メッセージの送り方を共通化する インターフェイス経由で関数を呼び出している →サブルーチンの呼び出し側を共通化する (依存関係逆転p.68のところでも言及していましたが。。。)
5章まとめ OOとは? ポリモーフィズムを使用することで、システムにある全てのソースコードの依存関係を絶 対的に制御する能力 私個人的なOOの印象 • 共通化できる処理は外に出して無駄を省く • 再利用可能を実現することを目的とした考え方
第6章 関数型プログラミング • 関数型プログラミングは代入に規律を課すものである • 関数型言語の変数は変化しない 不変コンポーネント • 可変変数を使わずに純粋に関数的にタスクを行う • 変数の状態の変更を許可している1つ以上のコンポーネントと通信
関数=メソッドみたいな感じ?
感想 小さなコンポーネントで処理やクラスを切り出した方がいい 関数とメソッドの違いがよくわからないんですが誰か説明してください AlanTuringって聞いたことあると思っていたらエニグマの人だった
AlanTuring?エニグマ? • 第二次世界大戦の時にナチスドイツが暗号を送っていた→エニグマ • その暗号を解読した人がAlanTuringさん ナチスがどこに攻撃をするのか指示をするメッセージが毎日(朝とか?)暗号として送ら れていた。その暗号を解読した話ですが暗号化のロジックだったりエンジニアが聞いた ら今まさに使ってる!とびっくりするような内容です。PublicKeyの概念など昔からあるん だなと思った。