Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TypeScriptでDIしてみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryohei Hisamitsu
January 16, 2021
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScriptでDIしてみた
Ryohei Hisamitsu
January 16, 2021
More Decks by Ryohei Hisamitsu
See All by Ryohei Hisamitsu
re:Invent参加フィードバック会
hisami
0
110
GoのアプリをEKS(Fargate)にデプロイしてみた話
hisami
0
270
Greengrassを使ったIoTのアーキテクチャ
hisami
0
190
ECS Execを使ってFargateにログインしてみた
hisami
1
420
Other Decks in Technology
See All in Technology
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
570
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
170
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
220
V8コントリビュート超入門
riyaamemiya
0
160
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
220
ASTを使って影響範囲を特定する
nealle
0
130
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
390
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
240
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
120
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
290
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
580
Claude Code本って、 読む必要あるの?
oikon48
1
310
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
340
Between Models and Reality
mayunak
4
450
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Raft: Consensus for Rubyists
vanstee
141
7.7k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Un-Boring Meetings
codingconduct
0
410
My Coaching Mixtape
mlcsv
0
310
Transcript
で してみた NCDC株式会社 久光遼平
DI(Dependency Injection)とは? • 依存性(Dependency)の注入(Injection) • もう少しわかりやすく あるクラスが依存している要素をクラスの外側から注入すること ClassA { private
classB constructor( ClassBInterface classB ) { this.classB = classB; } } ClassA { private classB constructor() { this.classB = new ClassB(); } }
何が嬉しいの? • 単体テストがしやすくなる! class Service { private repository; constructor() {
this.repository = new Repository(); } find() { // ... this.repository.find(); return; } } よくあるテストしにくい例 テストしたいのはService層のロジック Repository(DB)のテストも含まれてしまう ・テスト失敗した時の切り分けが面倒 ・実行時間がかかる DI→テスト側からモックを注入できる!
実際のアプリではどうやって注入するの? • DIコンテナという便利な仕組みがある ◦ インスタンスの生成、注入を一括で行ってくれる
TypeScriptのDIライブラリ
②注入する側 ①注入される側 ③DIコンテナ 実装例 ④express
まとめ • DIすればテストしやすい作りにできる • DIの仕組みを作るにはInversifyJSを使えば楽 • あとはテストの時にモックを注入するだけ! • 追記:Jestのモック機能を使えば、DIしなくてもテストは書けそう ◦
DIのメリット→より簡単に自由にテスト書ける