Submit Search
Upload
Iocコンテナについて
•
3 likes
•
8,109 views
A
Akio Terayama
Follow
laravelのiocコンテナについて
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
MVC の Model を考える
MVC の Model を考える
tomo_masakura
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
Recommended
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
MVC の Model を考える
MVC の Model を考える
tomo_masakura
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
Nobuhiro Yoshitake
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
REST API のコツ
REST API のコツ
pospome
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
More Related Content
What's hot
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
Nobuhiro Yoshitake
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
REST API のコツ
REST API のコツ
pospome
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
What's hot
(20)
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
できる!並列・並行プログラミング
できる!並列・並行プログラミング
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
REST API のコツ
REST API のコツ
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
オブジェクト指向できていますか?
オブジェクト指向できていますか?
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Recently uploaded
(14)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Iocコンテナについて
1.
IoCコンテナについて
2.
プロフィール 氏名:寺山 昭夫 twitter: trtraki
3.
アジェンダ 1. そもそもIoCって何? 2. IoCコンテナって何? 3.
実際何が嬉しいのか? 4. IoCコンテナの実例 5. Facadesを適応してみよう!
4.
1. そもそもIoCって何? Inversion of
Controlの略称で、制御の反転 と言う意味。
5.
どういうこと? 抽象化原則の一種で、手続き型プログラミン グと比較したとき、システムの制御の流れが 逆転しているソフトウェアアーキテクチャ設 計を表している。 参考:wikipediaより抜粋 http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%AE%E5%8F%8D%E8%BB%A2
6.
だから、どういうこと?
7.
ClassAControllerと言うクラスは、 処理を行う際は、ClassBをnewしている。 処理の流れ的にはClassAController→ClassB と言う流れになっている。 これをClassB→ClassAControllerと言うよう な流れに変える事を、IoC(制御の反転)と呼 ぶ。
8.
イメージ図 ClassAController ClassB
9.
イメージ図 ClassAController ClassB ClassB
10.
2. IoCコンテナって何? IoCをあるオブジェクト(コンテナ)にまとめた もの。 実際にController側で使用する場合は、コン テナから取得する。 ※Laravel5ではサービスコンテナに名前が変 わっています。
11.
IoCコンテナ イメージ図 ClassAController ClassB ClassC IoCコンテナ ClassB
12.
3. 実際何が嬉しいのか ある一定の単位コード毎にソースを分離する 事が出来る。(ソースが綺麗になる!) 単体テストと相性抜群!
13.
4. IoCコンテナの実例 •サービスプロバイダーでインスタンス作成 •Controllerで依存性を注入
14.
これから説明する内容は↓の実例はこちら https://github.com/trtraki/ioc
15.
サービスプロバイダーでインスタンス作成 • app/Providers/TestServiceProvider.php public function
register() { $this->app->bind('Testinterface', function($app) { return new Test($app['Test']); }); } • config/app.php 'AppProvidersTestServiceProvider' ※Laravel5のドキュメント例になります。他の記述の仕方もあります。
16.
Controllerで依存性を注入 • app/Http/Controllers/WelcomeController.php protected $test; ! public
function __construct(Test $test) { $this -> test = $test; } public function index() { $this -> test ->addition($x, $y); }
17.
これだけすっきりしました https://github.com/trtraki/ioc/blob/master/ app/Http/Controllers/WelcomeController.php
18.
テストも書きやすくなりました。 https://github.com/trtraki/ioc/blob/master/ tests/service/CalculationTest.php
19.
IoCコンテナを使う事で、小さい単位でコー ドがまとまるようになりました。
20.
しかし
21.
まだControllerにユニットテストが導入され ていない状態です。
22.
現状でも、Controllerのユニットテストを導入 出来ますが、楽に実装する仕組みがあります。
23.
Facadesです!
24.
5. Facadesを適応してみよう!
25.
そもそもFacadesとは? •IoCコンテナに登録されているクラスの メソッドを、staticメソッドとして呼び 出せるようにする機構。
26.
適応して嬉しい事は? •簡単にmockと置き換える事が出来 る。
27.
Facadesの実例 • Facades継承したクラスを作成す る。 ※IoCコンテナを導入している事が前提です。 ! • 別名の設定をする。
28.
Facadesの実例 • Facades継承したクラスを作成す る。 ※IoCコンテナを導入している事が前提です。 ! • 別名の設定をする。
29.
Facades継承したクラスを作成する。 • app/Facades/TestFacade.php <?php namespace
AppFacades; use IlluminateSupportFacadesFacade; ! class TestFacade extends Facade { protected static function getFacadeAccessor() { return Testinterface'; } }
30.
別名の設定をする。 • config/app.php ! 'TestFacade' =>
'AppFacadesTestFacade', !
31.
そうすると ! $this -> test
-> addition($x, $y); ! ! TestFacade:: addition($x, $y); ! • app/Http/Controllers/WelcomeController.php ↓
32.
Facadesをmockに置き換える • mockeryをインストール ! • mockeryを使用するようにテスト を書く
33.
mockeryをインストール • composer.json ! "mockery/mockery": "
0.8" ! • 【php ./composer.phar update】でイン ストール
34.
mockeryを使用するようにテストを書く • tests/service/CalculationTest.php /** * *
@expectedException ErrorException * */ public function testControllerMock() { TestFacade::shouldReceive('addition') ->once() ->with(2,3) ->andThrow(); WelcomeController::index(); } !
35.
これで外部ロジック部分を、簡単に置 き換える事が可能になりました! ! 必要な部分を好きにテスト出来るよう になりました!
36.
まとめ • IoCコンテナはユニットテストとの 相性が抜群! • 更に、Facadesも適応するとユニッ トテストを書くのが簡単に!
37.
参考図書 http://www.amazon.co.jp/Laravel%E3%82%A8%E3%82%AD %E3%82%B9%E3%83%91%E3%83%BC%E3%83%88%E9%A4%8A %E6%88%90%E8%AA%AD%E6%9C%AC- %E3%83%A2%E3%83%80%E3%83%B3%E3%81%AA%E9%96%8B %E7%99%BA%E3%82%92%E5%AE%9F%E7%8F%BE %E3%81%99%E3%82%8BPHP%E3%83%95%E3%83%AC %E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF %EF%BC%81-Software-Design-plus/dp/4774173134
38.
では、皆さん良いIoCコンテナライフを!
39.
ご清聴ありがとうございました!
Download now