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
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.4k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
570
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
780
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
13
8.9k
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
9
3.5k
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
4.7k
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
9
5.9k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
5
1.9k
connect-go で面倒くささと戦う / 2024-08-27 #newmo_layerx_go
izumin5210
2
1.7k
Other Decks in Technology
See All in Technology
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
940
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
0
190
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
910
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
540
Wasmの気になる最新情報
askua
0
150
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
2.1k
GoでもGUIアプリを作りたい!
kworkdev
PRO
0
150
AWS Control Tower に学ぶ! IAM Identity Center 権限設計の第一歩 / IAM Identity Center with Control Tower
y___u
1
210
RDS の負荷が高い場合に AWS で取りうる具体策 N 連発/a-series-of-specific-countermeasures-available-on-aws-when-rds-is-under-high-load
emiki
7
4.2k
AI時代こそ求められる設計力- AWSクラウドデザインパターン3選で信頼性と拡張性を高める-
kenichirokimura
3
350
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
320
業務効率化をさらに加速させる、ノーコードツールとStep Functionsのハイブリッド化
smt7174
2
150
Featured
See All Featured
A Tale of Four Properties
chriscoyier
161
23k
The Invisible Side of Design
smashingmag
302
51k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Automating Front-end Workflow
addyosmani
1371
200k
Embracing the Ebb and Flow
colly
88
4.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Building Applications with DynamoDB
mza
96
6.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
Scaling GitHub
holman
463
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
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