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