SlideShare a Scribd company logo
1 of 33
BEAR.Sunday




Akihito Koriyama (@BEARSunday)
    15 Sep 2012 phpcon2012
About Me
PHP   Freelance   Exicite   Travel   Famicon




      @koriym


  @BEARSunday
PHP 5.4+ Only
API Driven Development
• 全ての情報をAPIとして利用可能に
• APIを内部でも利用する
                 *API提供をサブプロ
                 ジェクトにしない
テキスト
page://self/blog/posts


app://self/user?id=10


app://other/user?id=10


office://self/room/reserve
Hypertext-Driven API
“REST APIs must be
 hypertext-driven.”


               REST神
Hypertext-Driven ?


• =情報が繋がっている
Hypertext-Driven Application

  • PHPのフレームワーク
  • PHPもフレームワーク?
  • HTTPもフレームワーク?
POST

       I want to order a drink.
PUT

      I want to be able to change my drink.
OPTIONS
• Hypermedia Application
 Language
Client   API
Client   Auth   API
Client   Valid   Auth   API
Client   Valid   Auth   API   Log
@Valid




Client     Valid   Auth    API     Log




         /admin           delete
アスペクト指向

  • @DbPager
  • @Log
  • @Transactional
  • @Cahce
• Google GuiceクローンのDI
• push / pull アーキテクチャ
• オブジェクトグラフキャッシュ
• リソース指向アーキテクチャ
• 名前付き引き数
• シグナル・スロット
• Symfony / ZF2 / Aura コンポーネント
MUST / GOAL

• パフォーマンス
• 低い学習コスト
• 長期間運用可能なソフトウエア品質
WHAT’S NEXT

• Web Framework
• SQL Mapper
• BigPipe
• Realtime Web
• CQRS / Thrift / Daemon
This is a message.
Thankl you.
See you @
BEAR.Sunday meetup #1

More Related Content

What's hot

喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由Masaru Gushiken
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいAPI Meetup
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話KEISUKE KONISHI
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】dcubeio
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会Kentaro Ohkouchi
 
無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発Shoichi Takagi
 
Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)Atsushi Yokohama (BEACHSIDE)
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたShumpei Shiraishi
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform拓将 平林
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門Mahito Ogura
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム拓将 平林
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムMasayuki Abe
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話Takuto Wada
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話Shohei Tai
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付SpaTakahiro Tsuchiya
 

What's hot (20)

喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会
 
無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発無料で始めるアプリのバックエンド開発
無料で始めるアプリのバックエンド開発
 
Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)Speech API の概要(Microsoft Cognitive Services)
Speech API の概要(Microsoft Cognitive Services)
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
Chef入門
Chef入門Chef入門
Chef入門
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
 
Workshop1-02
Workshop1-02Workshop1-02
Workshop1-02
 
oEmbed と Text::Hatena
oEmbed と Text::HatenaoEmbed と Text::Hatena
oEmbed と Text::Hatena
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 

Similar to BEAR.Sunday@phpcon2012

appengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHPappengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHPRyo Yamasaki
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法Rui Hirokawa
 
Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python Yasuhiro Matsuo
 
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintentsKensaku Komatsu
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介CData Software Japan
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】洵貴 佐川
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようVOYAGE GROUP
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの PerlのつかいかたRyuzo Yamamoto
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Toru Kawamura
 
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!Kazumi IWANAGA
 
Api gurunavi
Api gurunaviApi gurunavi
Api gurunaviJun Chiba
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリアシアル株式会社
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 

Similar to BEAR.Sunday@phpcon2012 (20)

appengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHPappengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHP
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
Workshop1-01
Workshop1-01Workshop1-01
Workshop1-01
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python
 
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
Workshop1-03
Workshop1-03Workshop1-03
Workshop1-03
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
 
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!
 
Api gurunavi
Api gurunaviApi gurunavi
Api gurunavi
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
Android study part4
Android study part4Android study part4
Android study part4
 

More from Akihito Koriyama

PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」Akihito Koriyama
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleAkihito Koriyama
 
An object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAn object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAkihito Koriyama
 
The new era of PHP web development.
The new era of PHP web development.The new era of PHP web development.
The new era of PHP web development.Akihito Koriyama
 

More from Akihito Koriyama (15)

PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangle
 
PHP Coding in BEAR.Sunday
PHP Coding in BEAR.SundayPHP Coding in BEAR.Sunday
PHP Coding in BEAR.Sunday
 
BEAR.Sunday 1.X
BEAR.Sunday 1.XBEAR.Sunday 1.X
BEAR.Sunday 1.X
 
BEAR.Sunday $app
BEAR.Sunday $appBEAR.Sunday $app
BEAR.Sunday $app
 
An object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAn object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_o
 
BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0
 
BEAR.Sunday Offline Talk
BEAR.Sunday Offline TalkBEAR.Sunday Offline Talk
BEAR.Sunday Offline Talk
 
BEAR.Sunday Note
BEAR.Sunday NoteBEAR.Sunday Note
BEAR.Sunday Note
 
PHP: Dis Is It
PHP: Dis Is ItPHP: Dis Is It
PHP: Dis Is It
 
The new era of PHP web development.
The new era of PHP web development.The new era of PHP web development.
The new era of PHP web development.
 
BEAR (Suday) design
BEAR (Suday) designBEAR (Suday) design
BEAR (Suday) design
 
BEAR DI
BEAR DIBEAR DI
BEAR DI
 
BEAR Architecture
BEAR ArchitectureBEAR Architecture
BEAR Architecture
 
BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)
 

BEAR.Sunday@phpcon2012

Editor's Notes

  1. \n
  2. こんにちは。BEAR.Sundayの開発をしている郡山です。では早速紹介をしたいと思います。宜しくお願いします。\n
  3. PHP5.4専用のフレームワークです。 \n
  4. BEAR.Sundayには様々な特徴がありますが、中でも今日はAPI駆動開発を中心にお話をしたいと思います。\n
  5. APIとは、プログラムのためのインターフェイスです。通常外部に対して使うものですが、これをアプリケーションの内部でも使って、アプリケーションの持つ情報を全てAPIにしよう、そしてそれを中心に開発しようというものです。ではさっそくこのAPI駆動開発、ADDで作られたBEAR.Sundayのアプリケーションを見て見ます。\n
  6. データベースから記事一覧のデータを取得して表示する、チュートリアルなどでよくあるページです。これはデバック表示がされてます。緑色のタグに注目してみてください。\n
  7. これですね。\n
  8. URIが表示されています。見慣れないスキーマやホスト名ですがこれがBEAR.Sundayの内部URIです。これがAPIとして機能します。\n
  9. それぞれのAPIでリクエストされた情報のかたまりはリソースと呼ばれます。\nここではそのリソース範囲が破線で示されています。つまり今自分が見てる情報はどのAPIによって得られたものかがわかります。内側の記事リソースはページリソースに含まれてる、などリソースがどのように構成されているかということも分かるでしょう。並んでいるツールアイコンをクリックしてみます。\n
  10. 虫眼鏡のインスペクタアイコンをクリックするとAPIで得られたデータが表示されます。つまりリソースの状態です。Viewアイコンはそれがどのような表現になったかがわかります。\nHTML5のcanvasを使ったエディタで、なかなか快適です。ctrl+Sやクリックで保存することもできます。\n
  11. それではこのAPIを今度はコンソールから操作してみます。 スクリプトを利用して、記事リソースをGETリクエストします。\n
  12. 200 OKのレスポンスコード、それにブログの記事がJSONフォーマットで返ってきました。webアプリケーションではこれが部分的なHTMLとしてレンダリングされていましたが、API利用するとこのようにJSONで返ってきます。\n
  13. スキーマやホストは自由に構成する事ができます。リソースの名前と実装は任意で割り当てられるので、テストの時にダミーデータを使ったり、既存のシステムを統合するのにレイヤーとしても機能します。\n
  14. BEARでは”ハイパーテキスト駆動API”が使える事も特徴です。\n
  15. ロイ.T.フィールディングさん、この人はRESTを策定したいわばRESTの神様みたいな人です。この人が言うには「ハイパーテキスト駆動API以外はRESTを名乗っては行けない」そうです。\n
  16. それではハイパーテキスト駆動とはどういうことでしょうか?簡単に言えば、情報が他の情報と繋がっているという事です。リソースとリソースがリンクされてるということです。\n
  17. それではBEAR.Sundayで作成したハイパーテキスト駆動のアプリケーションを見て見ましょう。しかしここで紹介するのは一般的なWebページのアプリケーションではありません。REST APIのHTTPアプリケーションです。\n
  18. 飲み物を注文してその支払をする簡単なアプリです。まず注文URIにdrinkをPOSTして、注文リソースをつくります。201 Createdとステータスコードが返ってきて無事注文が作成され、注文内容が返ってきたのが分かります。\n
  19. 次に注文を変更するためPUTメソッドでリクエストします。注文IDと追加を指定してPUTすると Continue続けなさいというレスポンスが返ってきました。レスポンスにはリンクが含まれ、この注文に対する支払先が記されてることに注目してください。\n
  20. 支払には何が必要でしょうか?OPTIONSメソッドではそのURIでどのメソッドが使えるか、またクエリーには何が必要かを知る事ができます。これで支払URIに何をPUTすればいいかが分かりますね。ちなみに支払をするのにPUTを使っているので、同じリクエストを二度しても支払が重複することはありません。\n
  21. このサンプルアプリでリンク付きの情報、ハイパーメディアがどのようなものかお分かりいただけたでしょうか? HTTPはトランスポートプロトコルではなくて、アプリケーションプロトコルです。\n情報の関連をクライアントでなく、サービスにもつこのアプリケーションは、その柔軟性から従来のAPIよりより長期運用が可能なものになり、自己の機能をよりよく表した自己記述的なものになります。\nAPIはたんにデータを返すだけでなくその関連性も利用できるハイパーメディアになりました。紹介したリンク付きJSONフォーマットはHALと言われるドラフトRFCのもので、BEAR.SundayはこのPHP実装を利用しています。\n
  22. APIは利用方法によって事前、事後に必要な処理が変わります。\n
  23. 例えば、認証や\n
  24. バリデーションなどはソフトウエア内部からのアクセスでは不要でも、外部からのアクセスでは必要でしょう。\n
  25. 特定のAPIにはロギングが必要かもしれません。\n
  26. BEARではこれらの「横断的な処理」をアノテーションや、URI、またはメソッド、これらの条件を決めてそれに従うものに指定することができます。アスペクト指向、AOPと呼ばれるプログラミング技法です。\n
  27. このAOPによってDBページング処理や、ロギング、トランザクション等を対象となるコードには手を加えないでbootstarp時の設定だけで機能を追加することができます。例えば普通のSQLを書いてもそれをページング対応のSQLにするのに対象のコードに手を入れる必要はありません。モバイルだったらページングにする、というような処理が該当コードを記述することなく実現できます。\n
  28. これでREST APIを中心としたBEAR.Sundayの特徴の紹介を終わります。他にも様々な特徴があります。\n
  29. BEAR.Sundayは設計の抽象度が高く、技術も多岐に渡っていますが、パフォーマンスや学習コストなどには非常に注力していいて、高いバランスを目指しています。これらの事はゴールでも有りますが、前提条件でもあります。\n
  30. 現在APIフレームワークとしての完成度が高まっている状態ですが、Webフレームワークとしての完成やその他の機能を実装予定です。1.0リリースは年内を予定しています。\n
  31. 知名度の高い世界的なフレームワークに混じって、個人制作のフレームワークを紹介させていただきました。最初は無茶なことだとも思いました。\n\nしかし注目してくれる人が少なからずいて、またこんな小さなプロジェクトが、大きなカンファレンスの審査に通り、登壇して発表できる事自体が、現在のPHPコミュニティやこのPHPカンファレンスの健全さや、素晴らしさを証明する、そういうメッセージになるのではないかと思い、応募を決めました。\n
  32. ご清聴ありがとうございました。\n
  33. それではmeetupでお会いしましょう。\n