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
LaraVue勉強会(初めてのプロジェクト参加とDIの話)
Search
MashimaShiomi
October 28, 2019
0
3.5k
LaraVue勉強会(初めてのプロジェクト参加とDIの話)
LaraVue勉強会(初めてのプロジェクト参加とDIの話)
MashimaShiomi
October 28, 2019
Tweet
Share
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
280
WCS-LA-2024
lcolladotor
0
410
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
81
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
A designer walks into a library…
pauljervisheath
210
24k
Why Our Code Smells
bkeepers
PRO
340
58k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
76
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Music & Morning Musume
bryan
46
7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
Transcript
初めてのプロジェクト参加とDIの話 株式会社 FABRIC TOKYO システム開発部 真嶋
Fabric Tokyo inc All rights reserved . 自己紹介 名前: 真嶋 汐美(マシマ シオミ)
経歴: 長崎造船所の工事担当 ↓ 2019/5~ FABRIC TOKYO サーバーサイドエンジニア 最近始めたこと: ヨガ(4回) 山登り(3回) laravel(5ヶ月) 勉強会参加(初)←new! LT登壇(初)←new!
Fabric Tokyo inc All rights reserved . FABRIC TOKYOの新サービス「FABRIC TOKYO
100」!
遡ること2ヶ月前
「FABRIC TOKYO100のマイページ周辺の 処理を作っておいて。」
「あ、そうそう。 他の処理と合わせてDIで実装してね」
「(DI?)」
Fabric Tokyo inc All rights reserved . まずはDIについて勉強してみた。
DIってなんだ? ※Dependency Injection(訳:依存性の注入)
車で例えてみた
Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン マツダのエンジン 他の作業ができないので困っ
た。 もっと良いエンジン見つけたけ れど、工数ばかり増えて困った
Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン 依存
Fabric Tokyo inc All rights reserved . DIを使用してみる エンジン 載せるところ
搭載 仕様 エンジンのことを気にせず作 業を進められるよ いらすとや製 エンジン マツダ製 エンジン
DIとは クラスやメソッド内で利用する機能を 外部から渡す設計パターンのこと
Fabric Tokyo inc All rights reserved . DI で実装してみる 継承
UserService クラス コンストラクタ 引数:SenderInterfaceのインスタンス SenderInterface インターフェイス メソッド send MailSender クラス メソッド send メール送信処理 引数としてインスタンスを渡す 注入
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス
MailSender クラス SenderInterface インターフェイス
Fabric Tokyo inc All rights reserved . UserServiceクラスを使用するには Controllers/UserServiceController.php Providers/AppServiceProvider.php
Fabric Tokyo inc All rights reserved . DI で実装するメリット①: Senderクラスの進捗に関わらず、
UserServiceクラスの実装を進めることができる! (車の場合:エンジンの進捗に関わらず、自動車の他の部分の実装ができる)
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス
MailSender クラス SenderInterface インターフェイス Mailを送信する処理を他の人に 頼んだり、あとから実装できる
Fabric Tokyo inc All rights reserved . DI で実装するメリット② 急な変更にも対応しやすい!
(車の場合:いらすとや製エンジンからマツダ製エンジンに変更できる。)
Fabric Tokyo inc All rights reserved . SlackSender クラス MailSenderInterfaceのモックを渡
してやれば良いので実際にメール は送信されない。 Providers/AppServiceProvider.php
Fabric Tokyo inc All rights reserved . DI で実装するメリット③ テストが簡単!
(車の場合:エンジンの検査と車の検査を切り離して実施することができて簡単。)
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス
MailSender クラス SenderInterface インターフェイス 進捗を気にせず、UserServiceク ラスのテストを作成できる! MailSenderInterfaceのモックを渡 してやれば良いので実際にメール は送信されない。
Fabric Tokyo inc All rights reserved . まとめ DIで実装するのは少し大変だったけど、 機能を変更するときは便利だし、
テストも楽になるし、 作業も分担しやすいし、 いいことばかりだった。 DIを勉強してよかった!
ご静聴ありがとうございました
Fabric Tokyo inc All rights reserved . おまけ
Fabric Tokyo inc All rights reserved . DIを使用しない実装方法 UserServiceクラスのメソッドnotice →MailSenderクラスをインスタンス化
→sendメソッド呼び出し