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
「DI」と仲良くなる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Masaru Yamagishi
January 13, 2024
Technology
6
3.6k
「DI」と仲良くなる
PHP カンファレンス北海道 2024 登壇資料 #phpcondo
Masaru Yamagishi
January 13, 2024
Tweet
Share
More Decks by Masaru Yamagishi
See All by Masaru Yamagishi
Babylon.js 勉強会 vol.4 JAPAN 活動紹介
myamagishi
0
130
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
1k
3D ブラウザゲーム開発を始めたい人のために準備している話
myamagishi
1
210
大解剖!amphpを使って非同期 PHP を実現しよう!
myamagishi
1
4k
PHP で負荷試験のシナリオを書きたい!ので amphp を使って自作した件
myamagishi
2
1.2k
秒間 10,000 リクエストを "簡単に"いなすゲームサーバーを Laravel で作る設計
myamagishi
19
16k
xR グラスが普及した新時代を妄想する - XRKaigi 2022
myamagishi
0
300
Reflection を使いこなして、 オブジェクトを型安全に マッピングしよう!
myamagishi
2
940
世界最速? で PHP8 Native Framework 作った
myamagishi
1
860
Other Decks in Technology
See All in Technology
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
370
Phase11_戦略的AI経営
overflowinc
0
1.4k
ADK + Gemini Enterprise で 外部 API 連携エージェント作るなら OAuth の仕組みを理解しておこう
kaz1437
0
180
JEDAI認定プログラム JEDAI Order 2026 受賞者一覧 / JEDAI Order 2026 Winners
databricksjapan
0
290
Phase06_ClaudeCode実践
overflowinc
0
1.8k
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
140
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
240
_Architecture_Modernization_から学ぶ現状理解から設計への道のり.pdf
satohjohn
2
740
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
230
Goのerror型がシンプルであることの恩恵について理解する
yamatai1212
1
300
データマネジメント戦略Night - 4社のリアルを語る会
ktatsuya
1
220
Escape from Excel方眼紙 ~マークダウンで繋ぐ、人とAIの架け橋~ /nikkei-tech-talk44
nikkei_engineer_recruiting
0
200
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
220
Information Architects: The Missing Link in Design Systems
soysaucechin
0
840
[SF Ruby Conf 2025] Rails X
palkan
2
850
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Believing is Seeing
oripsolob
1
94
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
89
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Side Projects
sachag
455
43k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
460
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
180
RailsConf 2023
tenderlove
30
1.4k
Transcript
「DI」と仲良くなる PHPカンファレンス北海道2024 - やまゆ
セッション概要 こんにちは。やまゆです。 みなさん、 new してますか?私は、最近はあまりしていないです。なぜなら、インスタンス化はほとんど DI コン テナ に任せてしまうからです。お客様のプロダクトにも DI
コンテナが含まれているのではないでしょうか?活用 出来ていますでしょうか? Dependency Inversion 、つまり 「依存性の逆転」 をすることで、より疎結合で柔軟性の高い設計を行うことが出 来ます。 それを実現する Dependency Injection 、つまり 「依存関係の注入」 をするのが DI コンテナ です。 今回は以下の内容を話してみたいと思っています。 - Dependency Inversion と Dependency Injection - DI コンテナ - DI コンテナを自作してみよう
赤魔道士系エンジニア ㈱インフィニットループ at 札幌/仙台 やまゆ この画像は自撮りでも いつも使っているアイコンでも構いません
None
DI
DI しってるひとー!
DI 使ってるひとー!
DI 🤔
Dependency Inversion Dependency Injection
Dependency Inversion Dependency Injection 依存性の逆転 依存性の注入
Dependency Inversion Dependency Injection 依存性の逆転 依存性の注入 別物!!!
Dependency Inversion Dependency Injection 依存性の逆転 依存性の注入 ☝の方が大 事
DI と聞くと...
None
☝
どっからきてんねん
None
☝
オワコンです
こんなもんは DI の本質 とちゃうねん
Dependency Inversion 依存性の逆転
これは設計の おはなし
DI は設計の話で出てくる仕組みの一つ - Controller に全部書いてあるコードでは不要! - 規模が大きい、複数人で開発している、アーキテクチャ云々の時に出る - 規模が大きい=依存関係が複雑になってくる -
依存関係を綺麗に保つことがメンテナンス性の向上につながる!
Dependency Inversion ☝ 依存性の逆転
依存性?
依存性? 壱百満天原サロメ 👈金属性
依存性? 壱百満天原サロメ 👈金属性 「壱百満天原サロメと いうカードは、金属性と いう属性に依存してい る」
依存性? 壱百満天原サロメ 👈金属性 「金属性は、壱百満天 原サロメというカードに 依存している」 「壱百満天原サロメと いうカードは、金属性と いう属性に依存してい る」
依存性? 壱百満天原サロメ 👈金属性 「壱百満天原サロメと いうカードは、金属性と いう属性に依存してい る」 「金属性は、壱百満天 原サロメというカードに 依存している」
壱百満天原サロメ
👈パッケージ
None
☝
Dependency Inversion ☝ 依存性の逆転
逆転すべき!
何故?
何故依存性の逆転が必要なのか? - パッケージの「凝集度」と「結合度」の関係 - 各パッケージが持つ 「知識」を分離して、凝集度を高める - パッケージ間の「結合度」を下げて、メンテナンスを容易にする - OOP
の詳しいお話は割愛 - より簡便に記すと☟ - 「Aさんが知っていることを減らし、Bさんとは決まったルートでだけ会話する」
Card パッケージが DB と かどうとか関係ないやん
Card パッケージは永続化さえさ れれば良くて、 MySQL とか Redis とか そういうのはどうでも良い!
Dependency Inversion ☝ 依存性の逆転
None
☝
矢印が反転している!
☝
Dependency Inversion 依存性の逆転
Dependency Inversion まとめ - 規模の大きいプロダクトはパッケージングを行う(≒設計) - パッケージ間の依存関係が生まれる - 知らなくても良いパッケージに依存するとメンテが大変 -
良いとされる設計≒パッケージの依存関係が適切な設計 - 依存関係が適切であれば、パッケージごとに分離して開発可能(理想論)
☝
誰が繋げるの?
Dependency Injection 依存性の注入
Dependency Injection 依存性の注入 ☝
注入? - インスタンスを作って流し込む - 作り方を知っている神クラス(DI Container)が構築する
None
Dependency Injection は Dependency Inversion を実現するキー
DI(Inversion と Injection) すこし わかってもらえれば うれしいです!
https://www.infiniteloop.co.jp We are hiring!