The new era of PHP web development.

Post on 07-Jul-2015

6.172 views 1 download

Tags:

description

PHPはテンプレート言語として生まれましたが、テンプレートエンジンとしての進化を遂げず各言語からどん欲に機能を取り込み、「簡単に、速く、やりたい事が実現できる」事を言語だけでなくフレームワークやライブラリも指向してきました。 その潮流が変化してます。何故どのように、またそれに対するソリューションは? 個人的に5.3用のフレームワークをつくるにあたって、リサーチして調べた事や思った事を2011年6月頃にまとめました。2011年10月1日に参加したPHP勉強会でたまたま空いた時間のLTとして発表しました。

Transcript of The new era of PHP web development.

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のビックウエーブがやってきた

新たな要求「もっと早くリリースしたい、もっと楽に作りたい。」“制作コスト削減”、”早期リリース”の価値が重視される

“レール”に乗っかってる事前提ですが

• フルスタック

• スキャッフホールド

• アクティブレコードブログが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+