今日も適当ダイアリー

PHP や Javascript や Symfony、BEAR.Sunday などのWeb周りのことを中心に。それ以外のことも気まぐれに投稿します。

第89回PHP勉強会@東京でBEAR.Sundayのお話をしてきました #phpstudy

blogger からはてなブログに移行したんだけど、面倒だから適当に移行して以前の記事が 404 Not Found になってたりしてごめんなさいな @madapaja です。

もう4月も終わりますね。 やること、やりたい事が多くて時間が足りてません。

さて、先日 4月28日にリジョブ咲くらぼ第89回 PHP勉強会@東京が開催されました。

f:id:ja9:20150430123417p:plain

勉強会の内容は、PHP勉強会@東京で恒例となっている参加者全員での自己紹介から始まり、セッション、懇親会+LTと約2時間半程度でした。

参加者は使い始めたばかりの方からPHP歴10年以上のベテランまで、バックグランドも経験も様々な人が集まっていろんな話をしました。久しぶりに参加したのですが楽しかったです。

会の詳細は、togetter でのまとめとか、Twitterあたりで素敵なまとめブログとかが出てくるんじゃないかと思いますので、そちらを要チェックです。

で、私は BEAR.Sundayのはなし というタイトルで発表してきたので、そちらの内容のまとめを書きたいと思います。

BEAR.Sundayのはなし

BEAR.Sunday = DI + AOP + REST(Hypermedia)

BEAR.Sunday は DI、AOP と REST(Hypermedia) という3つの仕組みが柱となっているリソース指向フレームワークです。

DI、AOP、REST(Hypermedia) はそれぞれ Ray.DiRay.AopBEAR.Resource というフレームワーク(ライブラリ)が用いられており、すべて BEAR.Sunday の開発者でもある郡山さん(@koriym)を中心に開発されているものです。

DI と Ray.Di

Ray.Di は、Module という単位でルールを記述(どういう構造なのかを示す)すると、そのルールを基にオブジェクトが生成出来る DI フレームワークです。 ルールを一度記述すれば、同じルールで表現できるDIであれば、別のクラスなどで利用する際にも、新しい設定なしに必要な依存オブジェクトが注入されるため、よりクラス同士の密結合を減らせます。

Ray.Diについては、以前にブログを書いていますので(ちょっと古い内容ですが、根本は変わっていないので)参考になるかもしれません。

blog.madapaja.net

なお、Ray.Diは最近リリースされたバージョン2.1から、インスタンス生成コードの自動生成への対応が行われ、よりパフォーマンスの向上が期待できます。

AOP と Ray.Aop

Ray.Aop は横断的関心事を分離するためのアスペクト指向フレームワークです。 インターセプターという仕組みを利用して、横断的関心事を本質的関心事と切り離し、それを結びつけることができます。

Ray.Aop についても過去の記事がありますのでもっと知りたい方は見てみてください。

blog.madapaja.net

Ray.Aopもバージョン2.1からコード生成部分の効率化が図られ、より使いやすく進化ました。

REST(Hypermedia) と ROP(リソース指向プログラミング)、BEAR.Resource

PHPの多くのフレームワークとの大きな違いは、MVCではなく、リソース指向を選択している点でしょう。

皆さんも Web を日々利用していると思いますが、その凄さは何なのでしょうか? その凄さの一つに、REST、Hypermediaによってもたらされる拡張性、柔軟性、ポータビリティの高さ等があると思います。

BEAR.Resource では、1つのURLを1つのクラス(リソースオブジェクト)と対応させ、それらのリソースをRESTと同じように扱おうとするフレームワークです。

リソースは URI とクエリなどによってリクエストを行い、<a>タグや<link>タグのようにリソース同士をリンクしたり、<img>タグや<video>タグのようにリソース内に別のリソースを埋め込む事ができます。

また、MVCのようにコントローラがモデルからデータを受け取りView渡すのではなく、リソースに対するリクエストに対して、リソース自身がレンダラーを持っており、それによって表現、アウトプットする、というのも特徴的だと思います。

まとめ

BEAR.Sunday は DIで構造を結びつけ、AOPで横断的関心事を結びつけ、ROP(REST, Hypermedia)でリソース同士を結びつけるConnecting Framework と言うことも出来ます。

また、RESTの力を引き出し、それをアプリケーションにも適用することで、広がる世界は面白いと思いませんか?

だって、Webの凄さはみんな知っているでしょ?

興味を持たれた方は、ぜひ一緒に BEAR.Sunday 触りましょう!

質問

勉強会で質問されたことをこちらでもまとめておきます。

BEAR.Sunday の由来は何ですか?

(会場では言えませんでしたが)

Because Everything is A Resource

Sunday なのはクマの名前から、というのは、アドベントカレンダーで郡山さんが書いていたのでチェックしてみてください!

どの程度の規模のアプリに適していますか?

スケールについては Web と同じです。つまり、最小から極大までに対応できます。

速度面については、HelloWorldベンチが以下にあるので実際に図ってみてください。(誰かベンチしたらぜひシェアしてください!)

bearsunday/BEAR.HelloWorld · GitHub

参考URL