LaraVue勉強会(初めてのプロジェクト参加とDIの話)
by
MashimaShiomi
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
初めてのプロジェクト参加とDIの話 株式会社 FABRIC TOKYO システム開発部 真嶋
Slide 2
Slide 2 text
Fabric Tokyo inc All rights reserved . 自己紹介 名前: 真嶋 汐美(マシマ シオミ) 経歴: 長崎造船所の工事担当 ↓ 2019/5~ FABRIC TOKYO サーバーサイドエンジニア 最近始めたこと: ヨガ(4回) 山登り(3回) laravel(5ヶ月) 勉強会参加(初)←new! LT登壇(初)←new!
Slide 3
Slide 3 text
Fabric Tokyo inc All rights reserved . FABRIC TOKYOの新サービス「FABRIC TOKYO 100」!
Slide 4
Slide 4 text
遡ること2ヶ月前
Slide 5
Slide 5 text
「FABRIC TOKYO100のマイページ周辺の 処理を作っておいて。」
Slide 6
Slide 6 text
「あ、そうそう。 他の処理と合わせてDIで実装してね」
Slide 7
Slide 7 text
「(DI?)」
Slide 8
Slide 8 text
Fabric Tokyo inc All rights reserved . まずはDIについて勉強してみた。
Slide 9
Slide 9 text
DIってなんだ? ※Dependency Injection(訳:依存性の注入)
Slide 10
Slide 10 text
車で例えてみた
Slide 11
Slide 11 text
Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン マツダのエンジン 他の作業ができないので困っ た。 もっと良いエンジン見つけたけ れど、工数ばかり増えて困った
Slide 12
Slide 12 text
Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン 依存
Slide 13
Slide 13 text
Fabric Tokyo inc All rights reserved . DIを使用してみる エンジン 載せるところ 搭載 仕様 エンジンのことを気にせず作 業を進められるよ いらすとや製 エンジン マツダ製 エンジン
Slide 14
Slide 14 text
DIとは クラスやメソッド内で利用する機能を 外部から渡す設計パターンのこと
Slide 15
Slide 15 text
Fabric Tokyo inc All rights reserved . DI で実装してみる 継承 UserService クラス コンストラクタ 引数:SenderInterfaceのインスタンス SenderInterface インターフェイス メソッド send MailSender クラス メソッド send メール送信処理 引数としてインスタンスを渡す 注入
Slide 16
Slide 16 text
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス MailSender クラス SenderInterface インターフェイス
Slide 17
Slide 17 text
Fabric Tokyo inc All rights reserved . UserServiceクラスを使用するには Controllers/UserServiceController.php Providers/AppServiceProvider.php
Slide 18
Slide 18 text
Fabric Tokyo inc All rights reserved . DI で実装するメリット①: Senderクラスの進捗に関わらず、 UserServiceクラスの実装を進めることができる! (車の場合:エンジンの進捗に関わらず、自動車の他の部分の実装ができる)
Slide 19
Slide 19 text
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス MailSender クラス SenderInterface インターフェイス Mailを送信する処理を他の人に 頼んだり、あとから実装できる
Slide 20
Slide 20 text
Fabric Tokyo inc All rights reserved . DI で実装するメリット② 急な変更にも対応しやすい! (車の場合:いらすとや製エンジンからマツダ製エンジンに変更できる。)
Slide 21
Slide 21 text
Fabric Tokyo inc All rights reserved . SlackSender クラス MailSenderInterfaceのモックを渡 してやれば良いので実際にメール は送信されない。 Providers/AppServiceProvider.php
Slide 22
Slide 22 text
Fabric Tokyo inc All rights reserved . DI で実装するメリット③ テストが簡単! (車の場合:エンジンの検査と車の検査を切り離して実施することができて簡単。)
Slide 23
Slide 23 text
Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス MailSender クラス SenderInterface インターフェイス 進捗を気にせず、UserServiceク ラスのテストを作成できる! MailSenderInterfaceのモックを渡 してやれば良いので実際にメール は送信されない。
Slide 24
Slide 24 text
Fabric Tokyo inc All rights reserved . まとめ DIで実装するのは少し大変だったけど、 機能を変更するときは便利だし、 テストも楽になるし、 作業も分担しやすいし、 いいことばかりだった。 DIを勉強してよかった!
Slide 25
Slide 25 text
ご静聴ありがとうございました
Slide 26
Slide 26 text
Fabric Tokyo inc All rights reserved . おまけ
Slide 27
Slide 27 text
Fabric Tokyo inc All rights reserved . DIを使用しない実装方法 UserServiceクラスのメソッドnotice →MailSenderクラスをインスタンス化 →sendメソッド呼び出し