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
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
0
520
TypeScriptでDIしてみた
Ryohei Hisamitsu
January 16, 2021
Tweet
Share
More Decks by Ryohei Hisamitsu
See All by Ryohei Hisamitsu
re:Invent参加フィードバック会
hisami
0
92
GoのアプリをEKS(Fargate)にデプロイしてみた話
hisami
0
250
Greengrassを使ったIoTのアーキテクチャ
hisami
0
160
ECS Execを使ってFargateにログインしてみた
hisami
1
380
Other Decks in Technology
See All in Technology
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.8k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
100
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
340
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
AWS Network Firewall Proxyを触ってみた
nagisa53
1
210
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.2k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
630
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Rails Girls Zürich Keynote
gr2m
96
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Raft: Consensus for Rubyists
vanstee
141
7.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
75
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Done Done
chrislema
186
16k
Unsuck your backbone
ammeep
671
58k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
770
Odyssey Design
rkendrick25
PRO
1
490
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
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のメリット→より簡単に自由にテスト書ける