Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Do you know Dependency Injection?
Search
izumin5210
May 02, 2015
Technology
0
150
Do you know Dependency Injection?
Code for KOSEN勉強会 #3 発表資料
izumin5210
May 02, 2015
Tweet
Share
More Decks by izumin5210
See All by izumin5210
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.3k
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
2.4k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.6k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
970
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
840
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
14
9.4k
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
10
3.9k
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
4.8k
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
9
6.2k
Other Decks in Technology
See All in Technology
【U/day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
710
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
300
Jakarta Agentic AI Specification - Status and Future
reza_rahman
0
110
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
860
学習データって増やせばいいんですか?
ftakahashi
2
490
Identity Management for Agentic AI 解説
fujie
0
110
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
1
1.6k
ActiveJobUpdates
igaiga
1
140
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
230
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
250
AI時代の新規LLMプロダクト開発: Findy Insightsを3ヶ月で立ち上げた舞台裏と振り返り
dakuon
0
210
生成AIを利用するだけでなく、投資できる組織へ / Becoming an Organization That Invests in GenAI
kaminashi
0
110
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.4k
How STYLIGHT went responsive
nonsquared
100
6k
How to Ace a Technical Interview
jacobian
281
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
How to train your dragon (web standard)
notwaldorf
97
6.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
26
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
70
Unsuck your backbone
ammeep
671
58k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
A better future with KSS
kneath
240
18k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
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