リソースフレームワークBEARのススメ(PHP勉強会#51)

3,985 views
3,840 views

Published on

第51回PHP勉強会での発表資料。リソース指向フレームワークBEARの紹介です。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,985
On SlideShare
0
From Embeds
0
Number of Embeds
243
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

リソースフレームワークBEARのススメ(PHP勉強会#51)

  1. 1. リソース指向 フレームワーク BEAR のススメ 第51回PHP勉強会 2010年3月27日
  2. 2. 自己紹介
  3. 3. 自己紹介  ハンドル名:TOM  ブランド名:Stellaqua  活動場所  はてなダイアリー http://d.hatena.ne.jp/stellaqua  Webサービス実験場 http://www.stellaqua.com/
  4. 4. 自己紹介  最近作ったサービス  お祈りメールメーカー  http://www.stellaqua.com/oinorimail maker  俗に言うお祈りメールの文面をマルコフ連 鎖により自動生成するサービス。  「不毛という表現以外になにもないサービ スだが、こうしたサービスがネタとして注目 されること自体、いまの世相をあらわして いると言えなくもない。」 by やじうまWatch
  5. 5. 自己紹介  仕事  現在の肩書は友人と立ち 上げた会社のCTO  訳あって、こっそり求職中
  6. 6. 早速、 アンケート
  7. 7. 早速、アンケート  “BEAR”って知ってる?  ≧「BEARプロジェクトホーム ページを見た事がある」  “REST”って知ってる?  ≧「RESTという単語を知って いて何となく意味が分かる」
  8. 8. 早速、アンケート  今回は”RESTについて何と なく概念を知っている”とい うぐらいの知識を前提でお 話します。
  9. 9. 早速、アンケート  詳しい事は、教科書参照
  10. 10. 提供 RESTfulWebサービス BEARプロジェクト トライコーン株式会社
  11. 11. ←結論
  12. 12. ←結論  これからはリソース指向の 時代が来る!  今回は割愛。細かい話は 懇親会とかで。  BEAR楽しいよ! BEARならモテるよ!
  13. 13. BEARを使うとこうなる!(画像はイメージです) そんなMVC まだMVC じゃないヤツ じゃないの? 相手にする なよ CakePHP 流行って るなぁ… MVC じゃないのに彼はとても魅力的な ますます FWだった。私も早速BEARを 自信を無 始めて みる事にした。 くしていた ある日、 BEARに 出会った。 この後どうなってしまうのか?! 続きはプレゼンの終りで…
  14. 14. ~プロローグ~ 「リソースって 何ぞや?」
  15. 15. そもそも“BEAR”って何ぞや?  「BEARは ページ&リソース指向で イベント駆動型の DI PHPアプリケーション フレームワークです。」 (BEARプロジェクトホームページより)
  16. 16. BEARの特徴  ROA(Resource Oriented Architecture) リソース指向  POD(Page Oriented Design) ページ指向  EDP(Event Driven Programming) イベント駆動  DI(Dependency Injection) 依存性注入  AOP(Aspect Oriented Programming) アスペクト指向 →リソース指向である事に最も注目
  17. 17. “リソース”って何ぞや?  “リソースとは、それ自体を参照する に値するほどの重要性を持つもので ある。 「それに対してハイパーテキストリンク を作成する、それに対して意見また は反論する、その表現を取得または キャッシュする、あるいはその他の操 作を実行することがある場合は、そ れをリソースにすべきである。」” (“RESTfulWebサービス”より抜粋)
  18. 18. “リソース”って何ぞや?  リソース指向の構成要素  アドレス可能性  統一インターフェイス  接続性  ステートレス性
  19. 19. “リソース”って何ぞや?  噛み砕いて言うと…  URIがあること  CRUDの処理があること  決められた表現を返すこと →実装例:”RESTful”を謳っているWebAPI
  20. 20. ~第一章~ 「リソース指向 のススメ」
  21. 21. BEARでのリソース指向 GETリクエスト GETリクエスト (HTTP) (疑似HTTP) 200 OK 200 OK レスポンス レスポンス ブラウザ GETリクエスト GETリクエスト (疑似HTTP) (HTTP) 200 OK 200 OK レスポンス レスポンス サーバ クライアント層 ページ層 リソース層
  22. 22. BEARでのリソース指向 メソッド (POST/GET /PUT/DELETE) Web URI リソース パラメータ (RSS/XML) BEAR オプション ページ ローカル リクエスト リソース キ ・レスポンスの (CSV/ ャ 方法が共通 YAML/ PHP ッ INI) ファイル シ ュ コード (200/400/500) ロジック リソース ヘッダ (何らかの ボディ 処理/DB) リンク
  23. 23. リソース指向の良いところ  役割分担が明確  リソース層:ロジックのみ  ページ層:表現の調整のみ  “リソース”という概念での抽象化  バックエンドに何があるか意識 する事無く利用できる。(複雑 な処理、外部API、DB…)
  24. 24. リソース指向の難しいところ  リソース設計が難しい  RESTに関する(正確な)知 識が必要。
  25. 25. ~第二章~ 「BEAR 3分間 クッキング」
  26. 26. サンプル(お祈りメールメーカー)  Scaffold $ bear init-app /path/to/oinorimailmaker BEAR App files are successfully made at '/path/to/oinorimailmaker'. Thank you for using BEAR.Ok. $ cd /path/to/oinorimailmaker $ ls ./ ../ App/ App.php data/ htdocs/ logs/ tmp/
  27. 27. サンプル(お祈りメールメーカー)  リソース(App/Ro/sentence.php) <?php class App_Ro_Sentence extends BEAR_Ro { public function onRead($values) { $lib_sentence = new Lib_Sentence(); if ( ($result = $lib_sentence->build()) === false ) { throw $this->_exception('文章の生成に失敗しました。’ ,array('code'=>BEAR::CODE_ERROR,'info'=>array()); } return $result; } }
  28. 28. サンプル(お祈りメールメーカー)  ページ(htdocs/index.php) <?php require_once 'App.php'; class Page_Index extends App_Page { : public function onInit(array $args) { $params = array('uri' => 'sentence'); $this->_resource->read($params)->set('result'); } : } $options = array('cache' => array('type' => 'init', 'life' => 1)); App_Main::run('Page_Index', $options);
  29. 29. サンプル(お祈りメールメーカー)  テンプレート (App/views/pages/index.tpl) <html> <body> <div> <p>{$result|nl2br}</p> </div> </body> </html>
  30. 30. ~第三章~ 「BEARの特徴 いろいろ」
  31. 31. ページ指向  1ページ=1クラスでフロント コントローラを持たない。  リソースに対してクライアント としてリクエストを投げる形 でデータを受け取り、表現の 調整を行う。
  32. 32. イベント駆動  JavaScriptなどのイベントモ デルと似たイメージ。  ページにonClickハンドラを 定義して、クリックされた時 の処理を記述する事ができ る。
  33. 33. DI  オブジェクト間の疎結合の実現。  使いたいモノ(設定/データ/オ ブジェクト)を放り込んでおいて、 必要な時に取り出すイメージ。  BEARのクラスだけでなく、自作 クラスも簡単に再利用できる。
  34. 34. アスペクト指向  phpdoc形式のアノテーショ ンで指定する。  リソースの入力値・出力値の 変換を行ったり、エラー発生 時の処理を行ったりを、アド バイスとして定義できる。
  35. 35. ~終章~ 「←結論、 再び」
  36. 36. ←結論  これからはリソース指向の 時代が来る!  BEARならモテる! おいでよ 君たち 泳ごうよ! リソース指向! DI! アスペクト指向! ページ指向! イベント駆動!
  37. 37. 最後に…  情報源  BEARプロジェクトホームページ →http://code.google.com/p /bear-project/  BEARは現在も発展途上。 どんどん利用してフィードバックし ましょう!
  38. 38. ご清聴 ありがとう ございました

×