Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Symfony勉強会#6 一歩先ゆくエンジニアから見たSymfony
Search
hidenorigoto
June 30, 2012
Programming
2.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.6k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
650
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.9k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
360
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.6k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.9k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.8k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.5k
Other Decks in Programming
See All in Programming
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
790
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
360
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Next.js: The final boss of Web Performance
guaca
0
380
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
120
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
120
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
A Tale of Four Properties
chriscoyier
163
24k
How STYLIGHT went responsive
nonsquared
100
6.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
490
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
590
エンジニアに許された特別な時間の終わり
watany
109
250k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
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༵