The new era of PHP web development.
@koriym June 2011LT@ PHP勉強会関東#56 Oct 2011
PHP 3つの時代PHP 4.xPHP 5.2PHP 5.3
大きくこの3つの時代に分かれるのではないかとPHPだけでなく、作り手も使い方も指向も変わってきてるのではと
まとめると
それだけで十分な価値があった時代
PHP4.x
動いたらOK
サービスが提供できるということが大切
PHP5.2
RAD(高速開発)
そしてRORのビックウエーブがやってきた
新たな要求「もっと早くリリースしたい、もっと楽に作りたい。」“制作コスト削減”、”早期リリース”の価値が重視される
5.2 Framework
•フルスタック
•スキャッフォールド
•アクティブレコード
(PEARなどの)ライブラリ依存が無い事に価値DBと密結合した簡単”Model”設定より規約」(CoC:Convention over Configuration)
“レール”に乗っかってる事前提ですが
• フルスタック
• スキャッフホールド
• アクティブレコードブログが10分で作れてすごいよ的な
多くのRORインスパイアPHPフレームワークの出現
「容易なプロトタイピングや、早期リリースに繋がる技術」に熱狂的な支持
5.2 Framework
PHP5.3 ?
PHP5.3
Quality Agility+
Why ?
Webサイトが変わった
“Web 2.0”
2005年、”What Is Web 2.0 - Design
Patterns and Business Models for the Next Generation of Software”という記事で提唱。しかしすぐ死語に。
Tim O'Reilly
記事の価値は大だと思います。
End of the Software Release Cycle
“誰もがウェブを通して情報を発信できるように変化したwebの利用状態”
とか説明されますが
“the perpetual beta”永遠のベータ
“終わった言葉”に改めて注目してみる
開発者にとって見逃せないのはここ。
βが「未完成品」という意味合いが薄れ、「常に修正と改良がされる」という意味に。
これが激しくなってきた
“一週間で447箇所の変更と22人による74回のdeploy”
Web2.0で永遠のβとか言ってたのが今はデフォ。「リリースまでのコスト」より「リリースしてからのコスト」意識
つまりDynamic HTMLをつくるwebアプリそのものがDynamicになってきた。いわばDynamic Applicationその開発はどうすれば?
そのソリューションとしての
Quality Agility+
PHP 5.3
• 2009年6月登場
• 2年経過して(やっと)フレームワークが揃ってきている
PHP 5.3 Framework
• Lithium
• Symfony 2
• Zend Framework 2
• FLOW 3
• Aura
• Ding
他にもAlloy, Fuel, Melt...
a.k.a SolarPHP 2.0。コンパクト、エレガント
binpressプログラミングコンテンスト優勝。SpringのようなPH
DDD指向最右翼
特徴
DI ?
PHP 5.3 framework
• Lithium
• Symfony 2
• Zend Framework 2
• FLOW 3
• Aura
• Ding
DI
DI
DI
DI
DI
DI
あるいはDIが解決しようとする依存性の問題に対しての技術
そもそも現状は
動的言語にDIは不要
PHPらしくない。それってJAVAの文化、コンパイル言語には良いけどさ的な否定的意見多数
PHPらしくない否定的意見多数
それでも揃ってDI導入してきたそれは、つまり
PHPらしくない。それってJAVAの文化、コンパイル言語には良いけどさ的な
Testability for
Quality Agility+
アノテーション ? AOP ?
• Lithium
• Symfony 2
• Zend Framework 2
• FLOW 3
• Aura
• Ding Annotation
Annotation
Annotation
AOP
AOP
PHP 5.3 framework
ほかには
new standard / features
•名前空間•オートローダー(PSR-0)•フルスタックからプラガブルへ•オブジェクトの生成/管理クラス•アスペクト指向
車輪の再発明止めよう
“New” Considered Harmful ?
1フルスタックFW+1アプリの閉じた世界から旅立つ
そもそもPEARスタンダードが
関心の分離 SoC:Separation of concerns
•アノテーション•レイジーロード、レイジーエバリュエーション、レイジーXX
•アクティブレコードからドメインモデルへ
•レイテンシーを軽視しない
PHPUnitでもおなじみPHPDocにかいてく@
ajax等webの多様化の背景
モデルをデータソースの写像から真のオブジェクトへ
後がいいですね的テクノロジー
new standard / features
•Clean Code•より標準的なものを重視•POPO (Plain Old PHP Object)•100% test coverage•GitHub
継続可能性のために
no magic !
PHPUnit
google codeや自サイトからの大移動はほぼ完了済み
symfony2でPHPUnit採用とか
new standard / features
•シングルトンの排除(zf2)•JSR-330アノテーション(Ding)•ユニバーサルコンストラクターからネームドパラメーターへ(Aura)
•共通ベースクラスの廃止(Aura)•DDD重視(Flow3, symfony2)
Zend Frameworkから反省
@Inject
逆にLithiumは
継承より合成
本来の”モデル”に
new standard / features
と、これまでの「簡単に速く開発できる」とは指向の違ったPHP界の潮流
なんかそういうのありますよねえ
つまり、全ては...
PHP5.3
Quality Agility+
Top Related