Submit Search
Software Development with Symfony
Apr 8, 2012
2 likes
1,170 views
Atsuhiro Kubo
1 of 36
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
More Related Content
Similar to Software Development with Symfony
(20)
PPT
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
PDF
PHPフレームワーク入門
Sho A
PDF
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
PDF
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi OHIRA
PDF
DDD 20121106 SEA Forum November
増田 亨
PDF
ドメイン駆動設計という仕事の流儀
増田 亨
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
PDF
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
PDF
BPStudy20121221
Shinichiro Takezaki
PDF
CodeIgniter入門
Sho A
KEY
XPages 開発 Tips 百連発
Mitsuru Katoh
PDF
Jubatusでマルウェア分類
Shuzo Kashihara
PDF
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
PDF
Isomorphic web development with scala and scala.js
TanUkkii
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
PDF
ARMテンプレートでサーバーレスに挑む!
Kazumi OHIRA
PDF
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
PDF
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
PHPフレームワーク入門
Sho A
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi OHIRA
DDD 20121106 SEA Forum November
増田 亨
ドメイン駆動設計という仕事の流儀
増田 亨
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
BPStudy20121221
Shinichiro Takezaki
CodeIgniter入門
Sho A
XPages 開発 Tips 百連発
Mitsuru Katoh
Jubatusでマルウェア分類
Shuzo Kashihara
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
Isomorphic web development with scala and scala.js
TanUkkii
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
ARMテンプレートでサーバーレスに挑む!
Kazumi OHIRA
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
More from Atsuhiro Kubo
(17)
PDF
MPD Osaka Extra 5
Atsuhiro Kubo
PDF
Enaction, Not Design on MPD Osaka Extra 1
Atsuhiro Kubo
PDF
Enaction, Not Design on Symfony Meetup Kansai 2
Atsuhiro Kubo
PDF
The Birth of FormalBears - A new META for BEAR.Sunday applications
Atsuhiro Kubo
PDF
Lean Architecture / DCI Evening Report
Atsuhiro Kubo
PDF
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
PDF
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
PDF
ジェネレーティブプログラミングの世界
Atsuhiro Kubo
PDF
意図を表現するプログラミング
Atsuhiro Kubo
PDF
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
PDF
Getting Started with Testing using PHPUnit
Atsuhiro Kubo
PDF
Introduction to Continuous Testing
Atsuhiro Kubo
PDF
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
PDF
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
PDF
Eclipse PDT + MakeGood による PHP コードのテスト
Atsuhiro Kubo
PDF
How To Create Custom DSLs By PHP
Atsuhiro Kubo
PDF
Piece Framework 2.0 Background
Atsuhiro Kubo
MPD Osaka Extra 5
Atsuhiro Kubo
Enaction, Not Design on MPD Osaka Extra 1
Atsuhiro Kubo
Enaction, Not Design on Symfony Meetup Kansai 2
Atsuhiro Kubo
The Birth of FormalBears - A new META for BEAR.Sunday applications
Atsuhiro Kubo
Lean Architecture / DCI Evening Report
Atsuhiro Kubo
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
ジェネレーティブプログラミングの世界
Atsuhiro Kubo
意図を表現するプログラミング
Atsuhiro Kubo
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
Getting Started with Testing using PHPUnit
Atsuhiro Kubo
Introduction to Continuous Testing
Atsuhiro Kubo
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
Eclipse PDT + MakeGood による PHP コードのテスト
Atsuhiro Kubo
How To Create Custom DSLs By PHP
Atsuhiro Kubo
Piece Framework 2.0 Background
Atsuhiro Kubo
Ad
Recently uploaded
(9)
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
PPTX
色について.pptx .
iPride Co., Ltd.
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
色について.pptx .
iPride Co., Ltd.
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
Ad
Software Development with Symfony
1.
2012/4/7 第 3
回 関西 PHP 勉強会 Symfony による ソフトウェア開発入門 PHP メンターズ 久保敦啓 (KUBO Atsuhiro)
2.
久保敦啓 (KUBO Atsuhiro) ●
株式会社アイテマン 代表取締役 ● Piece Project プロジェクトリード ● PHP メンターズ ● Twitter @iteman
3.
Piece Framework ●
PHP フレームワーク、ツール ● オープンソースソフトウェア ● Piece Project 開発者募集中 スポンサー募集中
4.
Piece Framework ●
Twitter @piece_framework ● ソースコード https://github.com/piece ● Web サイト http://piece-framework.com/
5.
PHP メンターズ ●
Twitter @phpmentors ● ソースコード https://github.com/phpmentors-jp ● Web サイト・ブログ http://phpmentors.jp/ ● 有償トレーニングサービス始めました。
6.
良いソフトウェアとは?
7.
“ ソフトウェアの核心は、ドメイ ンに関係した問題をユーザのた めに解決する能力である。” — エリック・エヴァンスのドメイン駆動設計
8.
巨人の肩の上に立つ
9.
例えば… ●
開発プロセス・方法論 ● アーキテクチャパターン・スタイル ● デザインパターン ● フレームワーク ● ライブラリ ● …
10.
アーキテクチャパターン・スタイル ●
モデル・ビュー・コントローラ ● レイヤ ● REST ● CQRS ● DCI ● …
11.
“ 使い方を機能として実装する” — パターン、
Wiki 、 XP
12.
ドメインとは?
13.
ドメインモデル
14.
レイヤーアーキテクチャとドメインモデル Presentation
Controllers Views Infrastructure Logging Domain Domain Objects Services Security Validation etc... Data Source ORM
15.
ドメイン駆動設計
16.
ドメイン駆動設計とは? ●
ドメインモデルは、ドメイン知識を深めながら反復 的( iterative )に深化させていく。 ● ドメインモデルは、開発者とドメイン知識をもつ人 (ユーザ、専門家等)との間の共通言語となるよう にする。 ● ドメインモデルは、実装コードときちんと対応付け られるようにする。 —Domain-Driven Design のエッセンス
17.
代表的なパターン ●
ユビキタス言語 ● モデル駆動設計 ● 実践的モデラー
19.
Symfony の歴史
21.
Symfony の特徴
22.
Symfony の特徴 ●
DI コンテナ ● コンフィギュレーション ● バンドル
23.
DI コンテナ
24.
DI コンテナ ●
Dependency Injection 依存関係逆転の原則 (DIP: The Dependency Inversion Principle) ● コンポーネント間の疎結合化 ● テスタビリティの向上 ● コンポーネント構成知識の集約 コンポーネント構成定義言語
26.
DependencyInjection コンポーネント ●
複数の定義フォーマット YAML, XML, PHP ● 複数のインジェクション方法 コンストラクタ、セッター、フィールド ● ファクトリクラス・サービス ● タグによる拡張ポイント・拡張 ● コンパイル時の変形・最適化
27.
DI コンテナ定義の例 ... services:
piece_questetra.questetra_client: scope: prototype class: "%piece_questetra.questetra_client.class%" calls: - [ setRequestContext, [ "@piece_questetra.request_context" ] ] piece_questetra.request_context: class: "%piece_questetra.request_context.class%" arguments: - "%piece_questetra.context_root%" - "%piece_questetra.user_id%" - "%piece_questetra.password%"
28.
コンフィギュレーション
29.
コンフィギュレーション ●
問題空間の言語 実装コンポーネントの構造に影響を受けない ● ドメイン特化言語 DSL: Domain-Specific Language コンフィギュレーション DSL
30.
Configuration コンポーネント ●
グラマー言語 (PHP) による文法定義 ● 複数の保存フォーマット YAML, XML, PHP ● DependencyInjection コンポーネントとの統合 DI エクステンション毎のスロット ● 複数回の読み込み 例)構成ファイルとコマンドライン引数のマージ
31.
文法定義の例 $treeBuilder->root('piece_questetra')
->children() ... ->arrayNode('authentication') ->isRequired() ->children() ->scalarNode('user_id') ->isRequired() ->cannotBeEmpty() ->end() ->scalarNode('password') ->isRequired() ->cannotBeEmpty() ->end() ->end() ->end() ->end();
32.
構成定義の例 piece_questetra: context_root:
"%piece_questetra.context_root%" authentication: user_id: "%piece_questetra.user_id%" password: "%piece_questetra.password%"
33.
コンフィギュレーションから DI コンテナへの変換
34.
バンドル
35.
バンドル ●
Symfony におけるモジュール(パッケージ) ● 粗粒度の機能(フィーチャー)の提供単位 Web フレームワーク (FrameworkBundle) Web アプリケーション ● DI コンテナ定義、コンフィギュレーション、 クラス、 Web リソース等を束ねたもの
36.
参考 ●
エリック・エヴァンス「エリック・エヴァンスのドメイン駆動設計」、翔 泳社、 2011 年。 ● 江渡 浩一郎「パターン、 Wiki 、 XP ~ 時を超えた創造の原則」、技術評論 社、 2009 年。 ● クシシュトフ・チャルネッキ、ウールリシュ・ W ・アイセンアッカ「ジェ ネレーティブプログラミング」、翔泳社、 2008 年。
Download