SlideShare a Scribd company logo
1 of 39
Download to read offline
PHPとSencha Ext.Direct
Hisashi Nakamura
自己紹介
• 中村久司
• Sencha UG Co-Organizer
• 株式会社ゼノフィ関西事業所 事業所長
• Sencha オフィシャルトレーナー
• 著書
• Sencha Touch 2 実践開発ガイド
@martini3oz
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
• まとめ PHPとSencha Ext.Direct
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
• まとめ PHPとSencha Ext.Direct
Single Page App
• シングルページアプリケーション
• ページ遷移をなくして、HTML5 / JavaScript の仕組みを
使ってクライアント側で画面を書き換え
• クライアントリッチな方向へ
• かわりにサーバーサイドは Thin になる
サーバーAPI
• HTML5 / JavaScript によるフロントの実装
• SPA (Single Page Application) の台頭
• PHP の主な役割はAPIでのJSONデータの提供に
APIの呼び出し
1 $.ajax({!
2 url: './hoge.php',!
3 type: 'POST',!
4 dataType: 'json',!
5 !
6 data: {!
7 id: 10!
8 },!
9 !
10 success: function(data) {!
11 // some process!
12 },!
13 !
14 error: function(xhr, status, err) {!
15 // error!
16 }!
17 });!
JSONを返す
1 <?php!
2 $id = isset($_POST['id']) ? $_POST['id']: null;!
3 $result = getPersonData($id);!
4 echo json_encode($result);!
5 !
6 function getPersonData($id) {!
7 //!
8 }!
• 一つひとつ作ると煩わしいAPIとその呼び出し
•Sencha の Ext.Direct を使うとすっきりとします
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
• まとめ PHPとSencha Ext.Direct
ところで
ところで
Sencha って何よ?
• カリフォルニア州レッドウッドシティにある企業
• HTML5について先駆者として取り組み
• フレームワーク/ツール/サービスを提供
Sencha 社
Sencha 製品
Sencha Ext JS
Sencha Touch
Sencha GXT
Sencha Architect
Sencha Cmd
Sencha Animator
Support
Training
Sencha Space
フレームワーク層 ツール層 サービス層
Sencha 製品
Sencha Ext JS
Sencha Touch
Sencha GXT
Sencha Architect
Sencha Cmd
Sencha Animator
Support
Training
Sencha Space
フレームワーク層 ツール層 サービス層Sencha Space については	

来週土曜日の JAWS三都物語
でお話しします。
Sencha Ext JS 5
• 豊富なUIコンポーネント
• 堅牢なクラスシステム
• クロスブラウザ対応
• プラグイン不要のチャート
• MVC / MVVM アーキテクチャ
全てのブラウザでリッチなアプリを作成するための

HTML5 / JavaScript フレームワーク
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
• まとめ PHPとSencha Ext.Direct
Ext.Direct
Ext Directは、クライアントサイドからリモートサー バサイド
メソッドを呼び出す、プラットフォームや言語にとわられない
技術です。Ext Directは、クライア ントサイドのExt JSアプリ
ケーションと、ポピュラーなサーバプラットフォームの間でシー
ムレスな通信を可能にします。
Ext.Direct
• Ext JS / Sencha Touch にひっそりと装備されている
• RPC (Remote Procedure Call) を実現
• サーバーサイドのメソッドをクライアントのJavaScriptから
直接実行するしくみ
サーバー側ですること
• API 情報を公開
• どんなクラスとメソッドが用意されているか
• アクセスポイント (Router) はどこか
• Router を設置
API
• Ext Direct でコールできるサーバー側メソッドをクライアン
トに教える。
• ここではAPI情報が入った JavaScript コードを返す。
• クライアント側では、この情報を RemotingProvider に渡
す。
Router
• クライアントがメソッドをコールした時にリクエストを受け
付ける
• リクエストの中を解析してサーバーサイドのメソッドをコー
ルする
クライアント側
• Direct Manager に API 情報を渡して RemotingProvider
を追加
• RemotingProvider は JavaScript の関数オブジェクトを
生成する
• 生成された関数をコールするとサーバーにリクエストが
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
PHPとSencha Ext.Direct
サーバー側を用意する
• example に PHPでのサーバーサイドコードが用意されてい
る
• classes ディレクトリの下に公開メソッドを用意したクラス
を配置
• 公開するメソッドのシーケンスを config.php に指定
見てみましょう
呼び出す
• Ext.Direct を用意する
• Ext.direct.Manager の addProvider メソッドで API を追
加
• 呼び出す
呼び出す
• 中身は Ajax リクエストなので、値を返すメソッドの場合は
非同期でコールバックで受け取る
30 onGetData: function(form, field, value) {!
31 Direct.rpc.Customer.getCustomer(value, function(ret) {!
32 form.getForm().setValues(ret);!
33 });!
34 },
見てみましょう
こんなことされたら
36 onGetMultiData: function() {!
37 var me = this, i,!
38 store = me.getCustomersStore();!
39 !
40 store.removeAll();!
41 for(i=1; i<=100; i++) {!
42 Direct.rpc.Customer.getCustomer(i, function(ret) {!
43 store.add(ret);!
44 });!
45 }!
46 }!
ループの中でDirectを呼んでる
こんなことされたら
• 100回のRPCをループの中で呼び出している
• 100回のAjaxリクエストがサーバーへ?
• んなことされたら困るわ (;´д`)
こんなことされたら
• でも大丈夫なんです。Direct では。
• 連続して実行されたRPC呼び出しは、Ext.Direct がバイン
ドして処理してくれるのです
リクエストのバインド
• 短時間の間に呼び出された関数コールはまとめられて一つの
リクエストとして送信される
• サーバー側の Router は、それらを分解してサーバーのメ
ソッドをコールする
• すべてのリザルトをまとめてクライアントに返す
• RemotingProviderが順次コールバックを呼び出す
見てみましょう
• Single Page Application への流れとAPI
• Sencha について
• Ext.Direct って何?
• Ext.Directの実際
• まとめ PHPとSencha Ext.Direct
• Single Page Application への潮流
• 複雑になりがちなAPIをひとつにまとめる
• 無駄なリクエストをバインドして高性能に
• Ext JS のデータモデルとの連携も可能
PHPとSencha Ext.Direct
• PHP との相性は抜群
• サーバー側実装もたくさんのものがある
• これを機会に是非、Sencha Ext JS を触って見てください
• モバイルには Sencha Touch もあります
PHPとSencha Ext.Direct
告知
• 2014/07/12 13:00より
• 日本マイクロソフト関西支店
• http://atnd.org/events/51279
初心者向けJavaScript入門からテラ・コーディングまで!	

JavaScriptフレームワークの主流、MVVMアーキテクチャパターンを採用
しているKnockoutJSを堪能する!Sencha Ext JSのMVVMもやります!
ご清聴ありがとう
ございました

More Related Content

Similar to PHP と Sencha Ext.Direct

Ext.js/Sencha SDKでえんぷら
Ext.js/Sencha SDKでえんぷらExt.js/Sencha SDKでえんぷら
Ext.js/Sencha SDKでえんぷらKazuhiro Kotsutsumi
 
20200214 c#tokyo lt_upload
20200214 c#tokyo lt_upload20200214 c#tokyo lt_upload
20200214 c#tokyo lt_uploadShuhei Nishizawa
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践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拓将 平林
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~Akira Inoue
 
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」Embarcadero Technologies
 
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013Akira Inoue
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについてDaisuke Tamada
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要Akira Inoue
 
Sencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha CmdSencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha Cmd久司 中村
 
Spa のための web サーバ構築ノウハウ
Spa のための web サーバ構築ノウハウ Spa のための web サーバ構築ノウハウ
Spa のための web サーバ構築ノウハウ Kazuhiro Kotsutsumi
 
Translator API (Microsoft Cognitive Services)の概要
Translator API (Microsoft Cognitive Services)の概要Translator API (Microsoft Cognitive Services)の概要
Translator API (Microsoft Cognitive Services)の概要Atsushi Yokohama (BEACHSIDE)
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るshinjiigarashi
 
第2回HTML5企業Webシステム開発セミナー hifive紹介資料
第2回HTML5企業Webシステム開発セミナー hifive紹介資料第2回HTML5企業Webシステム開発セミナー hifive紹介資料
第2回HTML5企業Webシステム開発セミナー hifive紹介資料Osamu Shimoda
 
we are javascript LTの資料4
we are javascript LTの資料4we are javascript LTの資料4
we are javascript LTの資料4Yuuta Moriyama
 
Introducing Sencha Space
Introducing Sencha SpaceIntroducing Sencha Space
Introducing Sencha Space久司 中村
 
Transactd PHP ORM
Transactd PHP ORMTransactd PHP ORM
Transactd PHP ORMbizstation
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会Kentaro Ohkouchi
 

Similar to PHP と Sencha Ext.Direct (20)

Ext.js/Sencha SDKでえんぷら
Ext.js/Sencha SDKでえんぷらExt.js/Sencha SDKでえんぷら
Ext.js/Sencha SDKでえんぷら
 
20200214 c#tokyo lt_upload
20200214 c#tokyo lt_upload20200214 c#tokyo lt_upload
20200214 c#tokyo lt_upload
 
Mobile Web
Mobile WebMobile Web
Mobile Web
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
 
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」
「つながるシステム構築を可能にするDelphi / C++Builder / Sencha」
 
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
Sencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha CmdSencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha Cmd
 
Spa のための web サーバ構築ノウハウ
Spa のための web サーバ構築ノウハウ Spa のための web サーバ構築ノウハウ
Spa のための web サーバ構築ノウハウ
 
Translator API (Microsoft Cognitive Services)の概要
Translator API (Microsoft Cognitive Services)の概要Translator API (Microsoft Cognitive Services)の概要
Translator API (Microsoft Cognitive Services)の概要
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
第2回HTML5企業Webシステム開発セミナー hifive紹介資料
第2回HTML5企業Webシステム開発セミナー hifive紹介資料第2回HTML5企業Webシステム開発セミナー hifive紹介資料
第2回HTML5企業Webシステム開発セミナー hifive紹介資料
 
we are javascript LTの資料4
we are javascript LTの資料4we are javascript LTの資料4
we are javascript LTの資料4
 
Introducing Sencha Space
Introducing Sencha SpaceIntroducing Sencha Space
Introducing Sencha Space
 
Transactd PHP ORM
Transactd PHP ORMTransactd PHP ORM
Transactd PHP ORM
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会
 

More from 久司 中村

アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方久司 中村
 
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよSencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ久司 中村
 
なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?久司 中村
 
Ext JS version 5 を始めよう
Ext JS version 5 を始めようExt JS version 5 を始めよう
Ext JS version 5 を始めよう久司 中村
 
AWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現するAWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現する久司 中村
 
Ext Schedulerを使ってみる
Ext Schedulerを使ってみるExt Schedulerを使ってみる
Ext Schedulerを使ってみる久司 中村
 
Sencha Touch working with AWS
Sencha Touch working with AWSSencha Touch working with AWS
Sencha Touch working with AWS久司 中村
 
Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2久司 中村
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share久司 中村
 

More from 久司 中村 (9)

アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方
 
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよSencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
 
なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?
 
Ext JS version 5 を始めよう
Ext JS version 5 を始めようExt JS version 5 を始めよう
Ext JS version 5 を始めよう
 
AWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現するAWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現する
 
Ext Schedulerを使ってみる
Ext Schedulerを使ってみるExt Schedulerを使ってみる
Ext Schedulerを使ってみる
 
Sencha Touch working with AWS
Sencha Touch working with AWSSencha Touch working with AWS
Sencha Touch working with AWS
 
Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 

PHP と Sencha Ext.Direct