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
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
82
GoのアプリをEKS(Fargate)にデプロイしてみた話
hisami
0
240
Greengrassを使ったIoTのアーキテクチャ
hisami
0
150
ECS Execを使ってFargateにログインしてみた
hisami
1
360
Other Decks in Technology
See All in Technology
Adminaで実現するISMS/SOC2運用の効率化 〜 アカウント管理編 〜
shonansurvivors
4
450
20201008_ファインディ_品質意識を育てる役目は人かAIか___2_.pdf
findy_eventslides
2
640
コンテキストエンジニアリング入門〜AI Coding Agent作りで学ぶ文脈設計〜
kworkdev
PRO
1
1.2k
AWSでAgentic AIを開発するための前提知識の整理
nasuvitz
2
160
綺麗なデータマートをつくろう_データ整備を前向きに考える会 / Let's create clean data mart
brainpadpr
3
520
ユーザーの声とAI検証で進める、プロダクトディスカバリー
sansantech
PRO
1
140
20251007: What happens when multi-agent systems become larger? (CyberAgent, Inc)
ornew
1
280
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
480
能登半島地震において デジタルができたこと・できなかったこと
ditccsugii
0
200
新規事業におけるGORM+SQLx併用アーキテクチャ
hacomono
PRO
0
280
OCI Network Firewall 概要
oracle4engineer
PRO
2
7.9k
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
6
1.1k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
980
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Scaling GitHub
holman
463
140k
KATA
mclloyd
32
15k
Docker and Python
trallard
46
3.6k
How to train your dragon (web standard)
notwaldorf
97
6.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
870
Site-Speed That Sticks
csswizardry
12
900
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
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のメリット→より簡単に自由にテスト書ける