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
Symfony勉強会#6 一歩先ゆくエンジニアから見たSymfony
Search
hidenorigoto
June 30, 2012
Programming
2.2k
1
Share
Symfony勉強会#6 一歩先ゆくエンジニアから見たSymfony
2012/6/30 Symfony勉強会 #6 一歩先ゆくエンジニアから見たSymfonyのセッションで使用したスライド。先人たちの知見、ドメインモデル等について。
hidenorigoto
June 30, 2012
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
1.2k
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.4k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
600
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.6k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
340
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.4k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.8k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.5k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.4k
Other Decks in Programming
See All in Programming
From Formal Specification to Property Based Test
ohbarye
0
710
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
5
1.5k
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
310
【26新卒研修資料】TDD実装演習
dip_tech
PRO
0
170
空間オーディオの活用
objectiveaudio
0
130
Kingdom of the Machine
yui_knk
2
1.4k
How We Practice Exploratory Testing in Iterative Development( #scrumniigata ) / 反復開発の中で、探索的テストをどう実施しているか
teyamagu
PRO
3
700
いつか誰かが、と思っていた フロントエンド刷新5年間の実践知
kiichisugihara
1
260
Building on Bluesky's AT Protocol with Ruby
mackuba
0
100
PHPer、Cloudflare に引っ越す
suguruooki
1
140
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
330
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
190
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
690
Building an army of robots
kneath
306
46k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Exploring anti-patterns in Rails
aemeredith
3
350
Raft: Consensus for Rubyists
vanstee
141
7.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
240
GraphQLとの向き合い方2022年版
quramy
50
15k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Transcript
一歩先ゆくエンジニ アから見たSymfony PHPメンターズ/日本Symfonyユーザー会 後藤 秀宣 @hidenorigoto 1 Symfony勉強会 #6 126݄30༵
後藤秀宣(ごとうひでのり) PHPメンターズ 2 126݄30༵
後藤秀宣(ごとうひでのり) PHPメンターズ • Symfonyユーザー会 2 126݄30༵
後藤秀宣(ごとうひでのり) PHPメンターズ • Symfonyユーザー会 • Symfony Midnight 2 126݄30༵
後藤秀宣(ごとうひでのり) PHPメンターズ • Symfonyユーザー会 • Symfony Midnight • 翻訳温泉ツアー 2
126݄30༵
後藤秀宣(ごとうひでのり) PHPメンターズ • Symfonyユーザー会 • Symfony Midnight • 翻訳温泉ツアー •
WEB+DB PRESS 2 126݄30༵
3 WEB+DB PRESS vol. 69 126݄30༵
何の話をするの? 4 126݄30༵
何の話をするの? • フレームワークの使い方の話ではありま せん 4 126݄30༵
何の話をするの? • フレームワークの使い方の話ではありま せん • この先もプログラマー/エンジニアとし て生き残っていくための話です 4 126݄30༵
何の話をするの? • フレームワークの使い方の話ではありま せん • この先もプログラマー/エンジニアとし て生き残っていくための話です • PHP +
Symfonyは、他の言語・フレーム ワークと堂々と渡り合えます 4 126݄30༵
5 126݄30༵
5 զʑͷؒʹɺνʔϜϓϨʔͳͲͱ ͍͏߹ͷΑ͍ݴ͍༁ଘࡏͤΜɻ ༗Δͱ͢ΕελϯυϓϨʔ͔Βੜ ͡ΔɺνʔϜϫʔΫ͚ͩͩɻ 126݄30༵
5 զʑͷؒʹɺνʔϜϓϨʔͳͲͱ ͍͏߹ͷΑ͍ݴ͍༁ଘࡏͤΜɻ ༗Δͱ͢ΕελϯυϓϨʔ͔Βੜ ͡ΔɺνʔϜϫʔΫ͚ͩͩɻ ߥרେีެ҆̕՝՝ 126݄30༵
問 なぜSymfonyが 良いと言えるのか? 6 126݄30༵
7 126݄30༵
7 •速い?軽い? 126݄30༵
7 •速い?軽い? •簡単? 126݄30༵
7 •速い?軽い? •簡単? •自由? 126݄30༵
7 •速い?軽い? •簡単? •自由? 126݄30༵
8 126݄30༵
8 ソフトウェア開発の歴 史の中で培われてきた 汎用的な知見を適用可 能か? 126݄30༵
8 ソフトウェア開発の歴 史の中で培われてきた 汎用的な知見を適用可 能か? 自分の取り組んでいる問題領域へ 126݄30༵
9 汎用的な知見 126݄30༵
9 • クラス設計パターン 汎用的な知見 126݄30༵
9 • クラス設計パターン • 設計・開発手法、プロセス 汎用的な知見 126݄30༵
9 • クラス設計パターン • 設計・開発手法、プロセス • テスト手法 汎用的な知見 126݄30༵
9 • クラス設計パターン • 設計・開発手法、プロセス • テスト手法 汎用的な知見 巨人の肩の上に立つ 126݄30༵
10 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 • レイヤードアーキテクチャ 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 • レイヤードアーキテクチャ • ドメインレイヤー 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 • レイヤードアーキテクチャ • ドメインレイヤー 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 • レイヤードアーキテクチャ • ドメインレイヤー 汎用的な知見の適用に必要な技術要素 126݄30༵
10 • オブジェクト指向 • レイヤードアーキテクチャ • ドメインレイヤー 汎用的な知見の適用に必要な技術要素 ??? 126݄30༵
ドメイン 11 126݄30༵
ドメイン • ドメイン=問題領域 11 126݄30༵
ドメイン • ドメイン=問題領域 • コアドメイン、サポートドメイン 11 126݄30༵
ドメイン • ドメイン=問題領域 • コアドメイン、サポートドメイン • ドメインをとらえる→関心事の分離 11 126݄30༵
ドメイン • ドメイン=問題領域 • コアドメイン、サポートドメイン • ドメインをとらえる→関心事の分離 • ドメイン駆動設計(DDD) 11
126݄30༵
ドメイン • ドメイン=問題領域 • コアドメイン、サポートドメイン • ドメインをとらえる→関心事の分離 • ドメイン駆動設計(DDD) 11
ドメインモデルを実装するドメインレイ ヤーと、アプリケーションのレイヤーと を明確に分離して扱う 126݄30༵
12 126݄30༵
12 126݄30༵
12 ֎ 126݄30༵
13 126݄30༵
13 126݄30༵
13 126݄30༵
13 ドメインモデル? 126݄30༵
14 問題点 126݄30༵
14 問題点 • すべてが渾然一体、一枚岩 126݄30༵
14 問題点 • すべてが渾然一体、一枚岩 • すべてがフレームワークに依存 126݄30༵
14 問題点 • すべてが渾然一体、一枚岩 • すべてがフレームワークに依存 • モデル等もアプリケーションフレーム ワークのクラスを継承? 126݄30༵
14 問題点 • すべてが渾然一体、一枚岩 • すべてがフレームワークに依存 • モデル等もアプリケーションフレーム ワークのクラスを継承? •
フレームワーク ロックイン 126݄30༵
14 問題点 • すべてが渾然一体、一枚岩 • すべてがフレームワークに依存 • モデル等もアプリケーションフレーム ワークのクラスを継承? •
フレームワーク ロックイン • 自由と言えるのか? 126݄30༵
良いフレームワーク 15 126݄30༵
良いフレームワーク • ドメインレイヤーを重視する 15 126݄30༵
良いフレームワーク • ドメインレイヤーを重視する • 自身がアプリケーションレイヤーのフ レームワークである、ということに自 覚的である 15 126݄30༵
良いフレームワーク • ドメインレイヤーを重視する • 自身がアプリケーションレイヤーのフ レームワークである、ということに自 覚的である 15 Webアプリケーションフレームワーク 126݄30༵
16 Symfonyを使った開発とは 126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する 126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する • ここが問題の中心 126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する • ここが問題の中心 • Symfonyと関係がない部分 126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する • ここが問題の中心 • Symfonyと関係がない部分 • アプリケーションコードを実装する
126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する • ここが問題の中心 • Symfonyと関係がない部分 • アプリケーションコードを実装する
• Webアプリケーションドメイン 126݄30༵
16 Symfonyを使った開発とは • ドメインモデルを実装する • ここが問題の中心 • Symfonyと関係がない部分 • アプリケーションコードを実装する
• Webアプリケーションドメイン • 他のアプリケーションドメイン(CLI) 126݄30༵
17 126݄30༵
18 126݄30༵
18 126݄30༵
18 126݄30༵
18 126݄30༵
18 開発者の 手で実装 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 DCIアーキテクチャ ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 各種パターン DCIアーキテクチャ ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 各種パターン DCIアーキテクチャ ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 各種パターン DCIアーキテクチャ ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 各種パターン DCIアーキテクチャ ドメイン駆動設計 126݄30༵
18 開発者の 手で実装 オブジェクト指向設計 各種パターン DCIアーキテクチャ ドメイン駆動設計 126݄30༵
19 これが 本当の 自由だーー! 126݄30༵
20 本当の自由とは 126݄30༵
20 本当の自由とは • 過去から積み上げられてきたソフ トウェア開発に関する知見を、コ アとなる問題の解決に直接的に適 用できる自由 126݄30༵
20 本当の自由とは • 過去から積み上げられてきたソフ トウェア開発に関する知見を、コ アとなる問題の解決に直接的に適 用できる自由 プロフェッショナルが、プロ フェッショナルの仕事をするため の自由!!
126݄30༵
この意味で •Symfonyは自由な フレームワーク 21 126݄30༵
22 で、Symfonyの部分は どうなのよ?? 126݄30༵
23 Symfony 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ •
DependencyInjectionコンポーネント 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ •
DependencyInjectionコンポーネント • DSLシステム 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ •
DependencyInjectionコンポーネント • DSLシステム • Configコンポーネント 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ •
DependencyInjectionコンポーネント • DSLシステム • Configコンポーネント 126݄30༵
23 Symfony • 多数のSymfonyコンポーネント、バンドル 等で構成されたフレームワーク • 疎結合 • DIコンテナ •
DependencyInjectionコンポーネント • DSLシステム • Configコンポーネント この組み合わせを基盤として いるため非常に柔軟で強力 126݄30༵
まとめ 24 126݄30༵
まとめ • 良いソフトウェアを開発するためには、 先人の知見を学び利用・適用することが 必要 24 126݄30༵
まとめ • 良いソフトウェアを開発するためには、 先人の知見を学び利用・適用することが 必要 • ドメインレイヤーを大切にするフレーム ワークが必要 24 126݄30༵
まとめ • 良いソフトウェアを開発するためには、 先人の知見を学び利用・適用することが 必要 • ドメインレイヤーを大切にするフレーム ワークが必要 • Symfonyはドメインレイヤーを意識して開
発され、上記要件を十分に満たす 24 126݄30༵
まとめ(2) 25 126݄30༵
まとめ(2) • このような視点にもとづいていれば、ア プリケーションフレームワークの流行 り?などに振り回されることはありませ ん 25 126݄30༵
まとめ(2) • このような視点にもとづいていれば、ア プリケーションフレームワークの流行 り?などに振り回されることはありませ ん • 芯のとおった技術と知識を身につけるこ とで、長く生き残れます 25
126݄30༵
26 ガイドとなる 技術・書籍 126݄30༵
ドメイン駆動設計 27 • エリック・エヴァン スのドメイン駆動設 計 • 基本的な考え方・取 り組み方から、実践 に適用可能なパター
ンまで幅広く解説 126݄30༵
ドメイン工学、DSL • ジェネレーティブプ ログラミング(クシ シュトフ・チャル ネッキ/ウールリ シュ・W・アイセン アッカ) 28 126݄30༵
オブジェクト指向技術 • 後ほどのセッションにて紹介します 29 126݄30༵
30 ありがとう ございました! 126݄30༵