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
130
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
530
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
12
7.2k
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
8
2.3k
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
4.4k
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
9
5.5k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.8k
connect-go で面倒くささと戦う / 2024-08-27 #newmo_layerx_go
izumin5210
2
1.3k
コンパウンドプロダクト開発の質とスピードを支える Protobuf と Connect #アーキテクチャ_findy / Boosting Compound Product Development Efficiency with Protobuf and Connect
izumin5210
12
4.2k
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
1.4k
Other Decks in Technology
See All in Technology
新卒3年目の後悔〜機械学習モデルジョブの運用を頑張った話〜
kameitomohiro
0
210
上長や社内ステークホルダーに対する解像度を上げて、より良い補完関係を築く方法 / How-to-increase-resolution-and-build-better-complementary-relationships-with-your-bosses-and-internal-stakeholders
madoxten
13
7.5k
"SaaS is Dead" は本当か!? 生成AI時代の医療 Vertical SaaS のリアル
kakehashi
PRO
3
190
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
9
2.4k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
3.4k
工具人的一生: 開發很多 AI 工具讓我 慵懶過一生
line_developers_tw
PRO
0
140
Copilot Agentを普段使いしてわかった、バックエンド開発で使えるTips
ykagano
1
700
産業機械をElixirで制御する
kikuyuta
0
170
In Praise of "Normal" Engineers (LDX3)
charity
2
810
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.4k
(新URLに移行しました)FASTと向き合うことで見えた、大規模アジャイルの難しさと楽しさ
wooootack
0
690
2025/6/21 日本学術会議公開シンポジウム発表資料
keisuke198619
0
190
Featured
See All Featured
A better future with KSS
kneath
239
17k
Faster Mobile Websites
deanohume
307
31k
BBQ
matthewcrist
89
9.7k
Making Projects Easy
brettharned
116
6.2k
Designing Experiences People Love
moore
142
24k
Designing for Performance
lara
609
69k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
What's in a price? How to price your products and services
michaelherold
245
12k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Visualization
eitanlees
146
16k
Writing Fast Ruby
sferik
628
61k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
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