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
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
410
Other Decks in Technology
See All in Technology
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
23
430k
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.3k
20分でわかるセキュアAPI
nwiizo
2
270
MIRU 2026 チュートリアル
keisuke198619
0
910
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
260
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
4.8k
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
580
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
5k
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
120
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.3k
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
490
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Documentation Writing (for coders)
carmenintech
77
5.4k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
280
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Between Models and Reality
mayunak
4
390
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
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のメリット→より簡単に自由にテスト書ける