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
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
We Have a Design System, Now What?
morganepeng
51
7.4k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Adopting Sorbet at Scale
ufuk
74
9.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Code Review Best Practice
trishagee
65
17k
Become a Pro
speakerdeck
PRO
26
5.1k
Bash Introduction
62gerente
610
210k
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メソッド呼び出し