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
Do you know Dependency Injection?
Search
Masayuki Izumi
May 02, 2015
Technology
0
140
Do you know Dependency Injection?
Code for KOSEN勉強会 #3 発表資料
Masayuki Izumi
May 02, 2015
Tweet
Share
More Decks by Masayuki Izumi
See All by Masayuki Izumi
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
690
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
12
8.6k
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
8
3.3k
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
4.6k
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
9
5.8k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
5
1.9k
connect-go で面倒くささと戦う / 2024-08-27 #newmo_layerx_go
izumin5210
2
1.5k
コンパウンドプロダクト開発の質とスピードを支える Protobuf と Connect #アーキテクチャ_findy / Boosting Compound Product Development Efficiency with Protobuf and Connect
izumin5210
13
4.5k
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
5
1.4k
Other Decks in Technology
See All in Technology
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
1.2k
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
170
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
440
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
230
AWSで始める実践Dagster入門
kitagawaz
1
750
人工衛星のファームウェアをRustで書く理由
koba789
15
8.3k
Android Audio: Beyond Winning On It
atsushieno
0
3.5k
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
2
1.2k
slog.Handlerのよくある実装ミス
sakiengineer
4
480
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Being A Developer After 40
akosma
90
590k
It's Worth the Effort
3n
187
28k
RailsConf 2023
tenderlove
30
1.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
A designer walks into a library…
pauljervisheath
207
24k
Building Applications with DynamoDB
mza
96
6.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Transcript
None
Ƅ Rekimoto Lab. at University of Tokyo (Samura Lab. at
Akashi-NCT) Enginner at Wantedly, Inc. Mentor at Life is Tech, Inc.
None
None
Ruby Ruby on Rails JavaScript Android Design Others Skill Ratio
Depdendency Injection
依 存 性 注 入 ディペンデンシー・インジェクション
依存性の注入とは、コンポーネント間の依存関係を プログラムのソースコードから排除し、 外部の設定ファイルなどで注入できるようにする ソフトウェアパターンである。 依存性の注入 - Wikipedia
共通 component ふつうのばあい
共通 component ふつうのばあい 直接参照している (global 変数,new など)
共通 component ふつうのばあい component の機能が少ない… 拡張しよう!
共通 component ふつうのばあい _人人人人人人人人_ > 突然の密結合 <  ̄Y^Y^Y^Y^Y^Y^Y ̄
共通 component DI する場合 インタフェースを参照する
共通 component DI する場合 どの実態を利用するか DI コンテナに記述
共通 component DI のメリット ここは単体テストで OK
共通 component の モック DI のメリット mock に差し替えると テストが容易に!
None
None
Android DI をつかおう JavaScript
Android DI をつかおう Dagger2
Android における DI Sign in 遷移 tweet 取得
Android における DI Sign in 遷移 tweet 取得 インスタンス変数に保持してると… ライフサイクルに巻き込まれて死ぬ
Android における DI Sign in 遷移 tweet 取得 DI コンテナ
Android における DI Sign in 遷移 tweet 取得 DI コンテナ
DI コンテナが User を保持するので ライフサイクルに巻き込まれない!
DI をつかおう JavaScript Browserify
JavaScript における DI グローバルオブジェクト(window/global)
JavaScript における DI グローバルオブジェクト(window/global) _人人人人人人人人人_ > グローバル汚染 <  ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
JavaScript における DI グローバルオブジェクト(window/global)
JavaScript における DI グローバルオブジェクト(window/global) DI コンテナに押し込めて グローバル汚染を防止
まとめ DIでグローバル汚染の防止 DIでテスタビリティ向上 DIでモジュールの疎結合化 Android では… Dagger / Dagger2 JavaScript
では… Browserify / ECMAScript 6
None
None
None