Contenu connexe
Similaire à Symfony2でより良いソフトウェアを作るために
Similaire à Symfony2でより良いソフトウェアを作るために (20)
Plus de Atsuhiro Kubo (17)
Symfony2でより良いソフトウェアを作るために
- 1. 第 4 回 Symfony2 勉強会
Symfony2 で
より良いソフトウェア
を作るために
株式会社アイテマン
久保敦啓
@iteman
- 3. iteman
株式会社アイテマン 代表取締役
Piece Project プロジェクトリード
Twitter @iteman
- 4. Piece Framework
PHP のアプリケーションフレームワーク
オープンソースソフトウェア
New BSD License
Eclipse Public License
- 5. 歴史
2005 Stagehand_TestRunner
2006 Piece_Unity, Piece_Flow
2009 MakeGood
2011 ???
- 10. Symfony2 の特徴
バンドル
コンフィギュレーション
サービスコンテナ (DI コンテナ )
機能テスト
独立したドメインオブジェクト
etc...
- 11. バンドル
モジュールシステムの構成単位
フィーチャの提供単位
クラス、コントローラ、 Web リソース等を
束ねたもの
外部のモジュールとの統合レイヤ
セマンティックコンフィギュレーションの提供
他のバンドルの拡張の提供
自身のバンドルの拡張ポイントの提供
- 13. バンドルの拡張
FrameworkBundle
kernel.listener
...
web_profiler.debug_toolbar assetic.request_listener
WebProfilerBundle AsseticBundle
- 14. 既存のモジュールシステム
PEAR パッケージ
Phar
Debian パッケージ
OSGi バンドル
etc...
- 15. バンドル設計の原則
高い凝集度と低い結合度
一般的なモジュール設計の原則
パッケージ設計の原則
— アジャイルソフトウェア開発の奥義
再利用・リリース等価の原則など 6 つの原則
ドメインの概念
— エリック・エヴァンスのドメイン駆動設計
- 16. サービスコンテナ
Dependency Injection
依存関係逆転の原則
— アジャイルソフトウェア開発の奥義
コンポーネント間の疎結合化
テスタビリティの向上
コンポーネント構成知識の保存と可視化
軽量プログラミング言語における
DI コンテナの価値
- 19. トランスフォーメーション
Problem Space Solution Space
Parse Populate
----------
----------
----------
----------
------
Service Containers
Semantic Service
Configurations Definitions
(YAML,XML,PHP) (Objects)
----------
----------
Parse ----------
Service
---------- Container
------
Configurations
(YAML,XML,PHP)
- 20. ドメイン特化言語
DSL:Domain Specific Languages
問題空間の言語
ドメインに特化した記法を持つ言語
言語ワークベンチ
コンフィグレーション DSL
式 DSL, グラフィカル DSL
- 21. ドメイン特化言語の開発
コンフィギュレーション DSL
YAML
式 DSL, グラフィカル DSL
言語ワークベンチ
Lexer/Parser Generators
- 23. テストの対象
ユーザ側からみた Web アプリの機能
機能に対するユースケースの粒度
ルーティング
ページフロー
入力・出力
バリデーション
- 24. 独立したドメインオブジェクト
Pure PHP オブジェクト
バリデーションや OR マッピングから
の高い独立性
フレームワークからの影響を極小化
- 31. ドメイン駆動設計の要点
ドメインモデルは、ドメイン知識を深めなが
ら反復的( iterative )に深化させていく
ドメインモデルが、開発者とドメイン知識を
もつ人(ユーザ、専門家等)との間の共通言
語となるようにする
ドメインモデルと実装コードとがきちんと対
応付けられるようにする
—DomainDriven Design のエッセンス
- 32. 代表的なパターン
ユビキタス言語
モデル駆動設計
≠ オブジェクト指向
ドメイン特化言語
実践的モデラー
- 34. プロセス、技法、パラダイム
アジャイルプロセス (Scrum, XP, …)
テスト駆動開発 (TDD:TestDriven Development)
SOLID
ビヘイビア駆動開発 (BDD:BehaviorDriven Development)
リファクタリング
- 35. SOLID
単一責任の原則
SRP:The Single Responsibility Principle
オープン・クローズドの原則
OCP:The OpenClosed Principle
リスコフの置換原則
LSP:The Liskov Substitution Principle
インタフェース分離の原則
ISP:The Interface Segregation Principle
依存関係逆転の原則
DIP:The Dependency Inversion Principle
- 36. プロセス、技法、パラダイム
オブジェクト指向プログラミング
関数プログラミング
ジェネリックプログラミング
アスペクト指向プログラミング
メタプログラミング
- 37. プロセス、技法、パラダイム
マルチパラダイムデザイン
ジェネレーティブプログラミング
プロダクトライン
Software Factories
インテンショナルプログラミング
言語指向プログラミング
言語ワークベンチ
Lean Software Architecture
- 38. プロセス、技法、パラダイム
レイヤ化アーキテクチャ
モデル・ビュー・コントローラ
DCI: Data, Context, and Interaction
- 40. 参考
『エリック・エヴァンスのドメイン駆動設計 (IT
Architects’Archive ソフトウェア開発の実践 ) 』、翔泳
社、 2011 年、 ISBN 9784798121963
[ 技術講座 ] DomainDriven Design のエッセンス 第 1
回、 http://www.ogis
ri.co.jp/otc/hiroba/technical/DDDEssence/chap1.html
『アジャイルソフトウェア開発の奥義 第 2 版 オブジェクト指向開発の神
髄と匠の技』、ソフトバンククリエイティブ、 2008 年、 ISBN 978
4797347784
『ジェネレーティブプログラミング (IT Architects’Archive
CLASSIC MODER) 』、翔泳社、 2008 年、 ISBN 9784798113319
The Symfony2 Book,
http://symfony.com/doc/current/book/index.html