LaraVue勉強会(初めてのプロジェクト参加とDIの話)

116bba8431f27898779fda025cfe1a4d?s=47 MashimaShiomi
October 28, 2019
2.6k

 LaraVue勉強会(初めてのプロジェクト参加とDIの話)

LaraVue勉強会(初めてのプロジェクト参加とDIの話)

116bba8431f27898779fda025cfe1a4d?s=128

MashimaShiomi

October 28, 2019
Tweet

Transcript

  1. 初めてのプロジェクト参加とDIの話 株式会社 FABRIC TOKYO システム開発部 真嶋

  2. Fabric Tokyo inc All rights reserved . 自己紹介 名前: 真嶋 汐美(マシマ シオミ)

    経歴: 長崎造船所の工事担当    ↓ 2019/5~ FABRIC TOKYO サーバーサイドエンジニア 最近始めたこと: ヨガ(4回) 山登り(3回) laravel(5ヶ月) 勉強会参加(初)←new! LT登壇(初)←new!
  3. Fabric Tokyo inc All rights reserved . FABRIC TOKYOの新サービス「FABRIC TOKYO

    100」!
  4. 遡ること2ヶ月前

  5. 「FABRIC TOKYO100のマイページ周辺の 処理を作っておいて。」

  6. 「あ、そうそう。 他の処理と合わせてDIで実装してね」

  7. 「(DI?)」

  8. Fabric Tokyo inc All rights reserved . まずはDIについて勉強してみた。

  9. DIってなんだ? ※Dependency Injection(訳:依存性の注入)

  10. 車で例えてみた

  11. Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン マツダのエンジン 他の作業ができないので困っ

    た。 もっと良いエンジン見つけたけ れど、工数ばかり増えて困った
  12. Fabric Tokyo inc All rights reserved . DIを使用しない設計パターン 依存

  13. Fabric Tokyo inc All rights reserved . DIを使用してみる エンジン 載せるところ

    搭載 仕様 エンジンのことを気にせず作 業を進められるよ いらすとや製 エンジン マツダ製 エンジン
  14. DIとは クラスやメソッド内で利用する機能を 外部から渡す設計パターンのこと

  15. Fabric Tokyo inc All rights reserved . DI で実装してみる 継承

    UserService クラス コンストラクタ 引数:SenderInterfaceのインスタンス SenderInterface インターフェイス  メソッド send MailSender クラス  メソッド send メール送信処理 引数としてインスタンスを渡す 注入
  16. Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス

    MailSender クラス SenderInterface インターフェイス
  17. Fabric Tokyo inc All rights reserved . UserServiceクラスを使用するには Controllers/UserServiceController.php Providers/AppServiceProvider.php

  18. Fabric Tokyo inc All rights reserved . DI で実装するメリット①: Senderクラスの進捗に関わらず、

    UserServiceクラスの実装を進めることができる! (車の場合:エンジンの進捗に関わらず、自動車の他の部分の実装ができる)
  19. Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス

    MailSender クラス SenderInterface インターフェイス Mailを送信する処理を他の人に 頼んだり、あとから実装できる
  20. Fabric Tokyo inc All rights reserved . DI で実装するメリット② 急な変更にも対応しやすい!

    (車の場合:いらすとや製エンジンからマツダ製エンジンに変更できる。)
  21. Fabric Tokyo inc All rights reserved . SlackSender クラス MailSenderInterfaceのモックを渡

    してやれば良いので実際にメール は送信されない。 Providers/AppServiceProvider.php
  22. Fabric Tokyo inc All rights reserved . DI で実装するメリット③ テストが簡単!

    (車の場合:エンジンの検査と車の検査を切り離して実施することができて簡単。)
  23. Fabric Tokyo inc All rights reserved . UserService クラス コンストラクタ 引数:MailSenderInterfaceのインスタンス

    MailSender クラス SenderInterface インターフェイス 進捗を気にせず、UserServiceク ラスのテストを作成できる! MailSenderInterfaceのモックを渡 してやれば良いので実際にメール は送信されない。
  24. Fabric Tokyo inc All rights reserved . まとめ DIで実装するのは少し大変だったけど、 機能を変更するときは便利だし、

    テストも楽になるし、 作業も分担しやすいし、 いいことばかりだった。 DIを勉強してよかった!
  25. ご静聴ありがとうございました

  26. Fabric Tokyo inc All rights reserved . おまけ

  27. Fabric Tokyo inc All rights reserved . DIを使用しない実装方法 UserServiceクラスのメソッドnotice →MailSenderクラスをインスタンス化

    →sendメソッド呼び出し