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.4k
LaraVue勉強会(初めてのプロジェクト参加とDIの話)
LaraVue勉強会(初めてのプロジェクト参加とDIの話)
MashimaShiomi
October 28, 2019
Tweet
Share
Featured
See All Featured
Producing Creativity
orderedlist
PRO
342
39k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Site-Speed That Sticks
csswizardry
2
200
Git: the NoSQL Database
bkeepers
PRO
427
64k
What's in a price? How to price your products and services
michaelherold
244
12k
The Invisible Side of Design
smashingmag
299
50k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
A better future with KSS
kneath
238
17k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
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メソッド呼び出し