SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
リソース指向
フレームワーク
  BEAR
 のススメ
第51回PHP勉強会
2010年3月27日
自己紹介
自己紹介
    ハンドル名:TOM
    ブランド名:Stellaqua
    活動場所
     はてなダイアリー
      http://d.hatena.ne.jp/stellaqua
     Webサービス実験場
      http://www.stellaqua.com/
自己紹介
     最近作ったサービス
       お祈りメールメーカー
        http://www.stellaqua.com/oinorimail
         maker
          俗に言うお祈りメールの文面をマルコフ連
           鎖により自動生成するサービス。
          「不毛という表現以外になにもないサービ
           スだが、こうしたサービスがネタとして注目
           されること自体、いまの世相をあらわして
           いると言えなくもない。」 by やじうまWatch
自己紹介
 仕事
  現在の肩書は友人と立ち
   上げた会社のCTO
  訳あって、こっそり求職中
早速、
アンケート
早速、アンケート
 “BEAR”って知ってる?
  ≧「BEARプロジェクトホーム
    ページを見た事がある」
 “REST”って知ってる?
  ≧「RESTという単語を知って
    いて何となく意味が分かる」
早速、アンケート
 今回は”RESTについて何と
  なく概念を知っている”とい
  うぐらいの知識を前提でお
  話します。
早速、アンケート
 詳しい事は、教科書参照
提供

RESTfulWebサービス
  BEARプロジェクト
トライコーン株式会社
←結論
←結論
 これからはリソース指向の
  時代が来る!
  今回は割愛。細かい話は
   懇親会とかで。
 BEAR楽しいよ!
  BEARならモテるよ!
BEARを使うとこうなる!(画像はイメージです)
            そんなMVC
                       まだMVC
            じゃないヤツ
                       じゃないの?
            相手にする
            なよ
                                CakePHP
                                流行って
                                るなぁ…


 MVC じゃないのに彼はとても魅力的な
                                 ますます
 FWだった。私も早速BEARを
                                 自信を無
 始めて      みる事にした。
                                 くしていた
                                 ある日、
                                 BEARに
                                 出会った。




この後どうなってしまうのか?! 続きはプレゼンの終りで…
~プロローグ~

「リソースって
 何ぞや?」
そもそも“BEAR”って何ぞや?
 「BEARは
  ページ&リソース指向で
  イベント駆動型の
  DI PHPアプリケーション
  フレームワークです。」
    (BEARプロジェクトホームページより)
BEARの特徴
   ROA(Resource Oriented Architecture)
    リソース指向
   POD(Page Oriented Design)
    ページ指向
   EDP(Event Driven Programming)
    イベント駆動
   DI(Dependency Injection)
    依存性注入
   AOP(Aspect Oriented Programming)
    アスペクト指向
→リソース指向である事に最も注目
“リソース”って何ぞや?
   “リソースとは、それ自体を参照する
    に値するほどの重要性を持つもので
    ある。
    「それに対してハイパーテキストリンク
    を作成する、それに対して意見また
    は反論する、その表現を取得または
    キャッシュする、あるいはその他の操
    作を実行することがある場合は、そ
    れをリソースにすべきである。」”
        (“RESTfulWebサービス”より抜粋)
“リソース”って何ぞや?
 リソース指向の構成要素
  アドレス可能性
  統一インターフェイス
  接続性
  ステートレス性
“リソース”って何ぞや?
 噛み砕いて言うと…
  URIがあること
  CRUDの処理があること
  決められた表現を返すこと
→実装例:”RESTful”を謳っているWebAPI
~第一章~

「リソース指向
  のススメ」
BEARでのリソース指向
        GETリクエスト          GETリクエスト
        (HTTP)            (疑似HTTP)

        200 OK            200 OK
        レスポンス             レスポンス
 ブラウザ

                          GETリクエスト
        GETリクエスト          (疑似HTTP)
        (HTTP)
                          200 OK
        200 OK            レスポンス
        レスポンス
 サーバ

クライアント層            ページ層              リソース層
BEARでのリソース指向
               メソッド
             (POST/GET
            /PUT/DELETE)            Web
                URI               リソース
             パラメータ               (RSS/XML)

 BEAR        オプション
 ページ
                                 ローカル
                リクエスト            リソース
        キ       ・レスポンスの            (CSV/
        ャ       方法が共通             YAML/
  PHP   ッ                           INI)
 ファイル   シ
        ュ            コード
                 (200/400/500)    ロジック
                                  リソース
                     ヘッダ
                                 (何らかの
                     ボディ         処理/DB)
                     リンク
リソース指向の良いところ
 役割分担が明確
  リソース層:ロジックのみ
  ページ層:表現の調整のみ
 “リソース”という概念での抽象化
  バックエンドに何があるか意識
    する事無く利用できる。(複雑
    な処理、外部API、DB…)
リソース指向の難しいところ
 リソース設計が難しい
  RESTに関する(正確な)知
   識が必要。
~第二章~
 「BEAR
 3分間
クッキング」
サンプル(お祈りメールメーカー)
 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/
サンプル(お祈りメールメーカー)
     リソース(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;
    }
}
サンプル(お祈りメールメーカー)
 ページ(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);
サンプル(お祈りメールメーカー)
     テンプレート
      (App/views/pages/index.tpl)
<html>
<body>
<div>
 <p>{$result|nl2br}</p>
</div>
</body>
</html>
~第三章~

「BEARの特徴
  いろいろ」
ページ指向
 1ページ=1クラスでフロント
  コントローラを持たない。
 リソースに対してクライアント
  としてリクエストを投げる形
  でデータを受け取り、表現の
  調整を行う。
イベント駆動
 JavaScriptなどのイベントモ
  デルと似たイメージ。
 ページにonClickハンドラを
  定義して、クリックされた時
  の処理を記述する事ができ
  る。
DI
 オブジェクト間の疎結合の実現。
 使いたいモノ(設定/データ/オ
  ブジェクト)を放り込んでおいて、
  必要な時に取り出すイメージ。
 BEARのクラスだけでなく、自作
  クラスも簡単に再利用できる。
アスペクト指向
 phpdoc形式のアノテーショ
  ンで指定する。
 リソースの入力値・出力値の
  変換を行ったり、エラー発生
  時の処理を行ったりを、アド
  バイスとして定義できる。
~終章~

「←結論、
 再び」
←結論
 これからはリソース指向の
  時代が来る!
 BEARならモテる!
 おいでよ
 君たち
 泳ごうよ!




         リソース指向!      DI!
                             アスペクト指向!
         ページ指向!    イベント駆動!
最後に…
 情報源
  BEARプロジェクトホームページ
   →http://code.google.com/p
   /bear-project/
 BEARは現在も発展途上。
  どんどん利用してフィードバックし
  ましょう!
ご清聴
 ありがとう
ございました

Mais conteúdo relacionado

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

XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
Ruby on Rails の規約
Ruby on Rails の規約Ruby on Rails の規約
Ruby on Rails の規約Shuhei Iitsuka
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkunsYohei Sato
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話KEISUKE KONISHI
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい! request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい! Masato Noguchi
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用についてYuuki Namikawa
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理するKenjiro Kubota
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
Php初心者セッション2014ppt
Php初心者セッション2014pptPhp初心者セッション2014ppt
Php初心者セッション2014pptHideo Kashioka
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムMasayuki Abe
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 

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

BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Ruby on Rails の規約
Ruby on Rails の規約Ruby on Rails の規約
Ruby on Rails の規約
 
BEAR.Sunday Note
BEAR.Sunday NoteBEAR.Sunday Note
BEAR.Sunday Note
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkuns
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい! request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
request-specを利用していい感じにモックデータを作ってフロントエンド開発を楽にしたい!
 
Pjax1
Pjax1Pjax1
Pjax1
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
LaravelでAPI定義を管理する
LaravelでAPI定義を管理するLaravelでAPI定義を管理する
LaravelでAPI定義を管理する
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
Php初心者セッション2014ppt
Php初心者セッション2014pptPhp初心者セッション2014ppt
Php初心者セッション2014ppt
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 

Último

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Último (10)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

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