the new era of php web development

37
The new era of PHP web development. @koriym June 2011 LT@ PHP勉強会関東#56 Oct 2011

Upload: akihito-koriyama

Post on 07-Jul-2015

6.172 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: The new era of PHP web development

The new era of PHP web development.

@koriym June 2011LT@ PHP勉強会関東#56 Oct 2011

Page 2: The new era of PHP web development

PHP 3つの時代PHP 4.xPHP 5.2PHP 5.3

大きくこの3つの時代に分かれるのではないかとPHPだけでなく、作り手も使い方も指向も変わってきてるのではと

Page 3: The new era of PHP web development

まとめると

Page 4: The new era of PHP web development

それだけで十分な価値があった時代

PHP4.x

動いたらOK

サービスが提供できるということが大切

Page 5: The new era of PHP web development

PHP5.2

RAD(高速開発)

そしてRORのビックウエーブがやってきた

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

Page 7: The new era of PHP web development

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

• フルスタック

• スキャッフホールド

• アクティブレコードブログが10分で作れてすごいよ的な

多くのRORインスパイアPHPフレームワークの出現

「容易なプロトタイピングや、早期リリースに繋がる技術」に熱狂的な支持

5.2 Framework

Page 8: The new era of PHP web development

PHP5.3 ?

Page 9: The new era of PHP web development

PHP5.3

Quality Agility+

Page 10: The new era of PHP web development

Why ?

Page 11: The new era of PHP web development

Webサイトが変わった

Page 12: The new era of PHP web development

“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

End of the Software Release Cycle

“誰もがウェブを通して情報を発信できるように変化したwebの利用状態”

とか説明されますが

“the perpetual beta”永遠のベータ

“終わった言葉”に改めて注目してみる

開発者にとって見逃せないのはここ。

Page 14: The new era of PHP web development

βが「未完成品」という意味合いが薄れ、「常に修正と改良がされる」という意味に。

これが激しくなってきた

Page 15: The new era of PHP web development

“一週間で447箇所の変更と22人による74回のdeploy”

Web2.0で永遠のβとか言ってたのが今はデフォ。「リリースまでのコスト」より「リリースしてからのコスト」意識

Page 16: The new era of PHP web development

つまりDynamic HTMLをつくるwebアプリそのものがDynamicになってきた。いわばDynamic Applicationその開発はどうすれば?

Page 17: The new era of PHP web development

そのソリューションとしての

Quality Agility+

Page 18: The new era of PHP web development

PHP 5.3

• 2009年6月登場

• 2年経過して(やっと)フレームワークが揃ってきている

Page 19: The new era of PHP web development

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

特徴

Page 21: The new era of PHP web development

DI ?

Page 22: The new era of PHP web development

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

そもそも現状は

Page 24: The new era of PHP web development
Page 25: The new era of PHP web development

動的言語にDIは不要

PHPらしくない。それってJAVAの文化、コンパイル言語には良いけどさ的な否定的意見多数

Page 26: The new era of PHP web development

PHPらしくない否定的意見多数

それでも揃ってDI導入してきたそれは、つまり

PHPらしくない。それってJAVAの文化、コンパイル言語には良いけどさ的な

Page 27: The new era of PHP web development

Testability for

Quality Agility+

Page 28: The new era of PHP web development

アノテーション ? AOP ?

Page 29: The new era of PHP web development

• 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

ほかには

Page 31: The new era of PHP web development

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

•アノテーション•レイジーロード、レイジーエバリュエーション、レイジーXX

•アクティブレコードからドメインモデルへ

•レイテンシーを軽視しない

PHPUnitでもおなじみPHPDocにかいてく@

ajax等webの多様化の背景

モデルをデータソースの写像から真のオブジェクトへ

後がいいですね的テクノロジー

new standard / features

Page 33: The new era of PHP web development

•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

•シングルトンの排除(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

と、これまでの「簡単に速く開発できる」とは指向の違ったPHP界の潮流

なんかそういうのありますよねえ

Page 36: The new era of PHP web development

つまり、全ては...

Page 37: The new era of PHP web development

PHP5.3

Quality Agility+