Developers Summit 2010 佐藤栄一 佐藤栄一 ゼンド・ジャパン株式会社 ゼンド・ジャパン株式会社 執行役員 執行役員 19-D-2 PHP PHPにおける におけるRIA RIA事情と開発 事情と開発 環境 環境
Developers Summit 2010
佐藤栄一佐藤栄一ゼンド・ジャパン株式会社ゼンド・ジャパン株式会社
執行役員執行役員
19-D-2
PHPPHPにおけるにおけるRIARIA事情と開発事情と開発環境環境
Developers Summit 2010
RIARIAとはとはRIA(RIA(リッチインターネットアプリケーションリッチインターネットアプリケーション))
Rich Internet ApplicationRich Internet Application私の感覚私の感覚→ → Rich Interface ApplicationRich Interface Application
WebWebアプリケーションでどれだけネイティブアプアプリケーションでどれだけネイティブアプリケーションに近づけるか。リケーションに近づけるか。
入力処理の支援入力処理の支援
マウス操作マウス操作
出力処理出力処理
→→入力処理の軽減と応答スピードの向上入力処理の軽減と応答スピードの向上
→→エンターテイメント的な要素エンターテイメント的な要素# 2
Developers Summit 2010
RIARIAの現状の現状
JavaJavaならならそもそもダウンロード可能なアプリケーションそもそもダウンロード可能なアプリケーション
SwingSwing→→JavaFXJavaFXApache PivotApache Pivot
.net.netならならVBVBは様々形では様々形でRIARIAを実現を実現
.NET RIA Services.NET RIA Services
.NET .NET Framework+SilverlightFramework+Silverlight
# 3
Developers Summit 2010
PHPPHPでのでのRIARIAクライアント側のテクノロジクライアント側のテクノロジ
JavaJava ScriptScriptFlash/FlashFlash/Flash LiteLiteSilverlightSilverlightCurlCurl
# 4
Developers Summit 2010
RIARIAと開発環境と開発環境
Java ScriptjQuery, Prototype, YUI,dojo, Ext JS, MooTools
FlashAction Script
FLASH CS4
Flex Builder 3Flex 2 SDK
FierFoxFirebug
EclipseAptana Studio
ZendStudio WebWebサーバサーバ
# 5
Developers Summit 2010
FlashFlash バージョン別普及率バージョン別普及率
出典:株式会社Jストリーム# 6
Developers Summit 2010
携帯電話の携帯電話のFlashFlash LiteLite対応時期対応時期
出典」:有限会社水玉製作所http://www.mztm.jp/本資料は、公開情報に基づきまとめられました。# 7
Developers Summit 2010
リクエストベースのリクエストベースのFlashFlash LiteLite のシェアのシェア
出典「ケータイ白書2010」(インプレスR&D刊)# 8
Developers Summit 2010
Flash Flash サイト閲覧時の経験サイト閲覧時の経験(単一回答)(単一回答)
出典:IMJモバイル
Developers Summit 2010
PHPPHPが使用できるが使用できるハードウエアとハードウエアとOSOS
WindowsLinux
Solaris x86
IBM i Sun Solaris
Intel / AMD
Power Sun SPARC
Developers Summit 2010
プログラミング言語の人気プログラミング言語の人気TIOBE Programming Community Index for February 2010TIOBE Programming Community Index for February 2010
出典:TIOBE Software BV# 11
Developers Summit 2010
人気推移:人気推移:PHPPHP
出典:TIOBE Software BV# 12
Developers Summit 2010
人気推移:人気推移:ActioScriptActioScript
出典:TIOBE Software BV# 13
Developers Summit 2010
プログラミング言語のプログラミング言語の関連書籍販売部数推移関連書籍販売部数推移
出典:O'Reilly Media# 14
Developers Summit 2010
プログラミング言語のプログラミング言語の関連書籍販売部数推移関連書籍販売部数推移
出典:O'Reilly Media# 15
Developers Summit 2010
ZendZend FrameworkFramework
ZendZend FrameworkFrameworkには、様々通信に対応すには、様々通信に対応するモジュールを用意しています。るモジュールを用意しています。
Zend_XmlRpcZend_XmlRpcZend_RestZend_RestZend_JsonZend_JsonZend_DojoZend_Dojo ZF1.5ZF1.5からからZemd_AMF_ServerZemd_AMF_Server ZF1.7ZF1.7からから
FlashFlashからのリクエストに応じた処理を行いますからのリクエストに応じた処理を行います
# 16
Developers Summit 2010
PHPPHPののRIARIA開発環境開発環境
Flex Flex Builder+ZendBuilder+Zend Studio for EclipseStudio for EclipseEclipseEclipseバージョンのアンマッチに注意してくださバージョンのアンマッチに注意してください。い。
ZendZend Studio for EclipseStudio for Eclipse 6.06.0 Eclipse 3.3Eclipse 3.3ZendZend Studio for EclipseStudio for Eclipse 6.16.1 Eclipse 3.4Eclipse 3.4ZendZend Studio for EclipseStudio for Eclipse 7.17.1 Eclipse 3.5 Eclipse 3.5
Flex BuilderFlex Builder 33Eclipse 3.2.2/3.3/3.4(Eclipse 3.2.2/3.3/3.4(プラグイン構成はプラグイン構成は3.33.3を推奨を推奨))
# 17
Developers Summit 2010
ZendZend StudioStudio シリーズの歴史シリーズの歴史
19-Feb-10 |
2002年3月2.0
2004年1月 3.0
2005年4月 4.0
2006年1月 5.0
2008年3月 6.0
ベース環境をEclipseに変更
2005年10月Eclipse Foundation に参加PDT (PHP Development Tools )
# 18
Developers Summit 2010
ZendZend StudioStudioシリーズ日本語版シリーズ日本語版PHPPHPアプリケーションの開発効率を飛躍的に向アプリケーションの開発効率を飛躍的に向上する数々の機能が盛り込まれています。上する数々の機能が盛り込まれています。
# 19
Developers Summit 2010
ZendZend StudioStudioシリーズ日本語版シリーズ日本語版
PHPPHP専用エディタ専用エディタ
補完機能補完機能
ローカルデバッグローカルデバッグ
リモートデバッグリモートデバッグ
プロファイルプロファイル
SQL Support(SQL Support(データベースとの接続データベースとの接続))phpDocumentorphpDocumentor((ドキュメント作成機能ドキュメント作成機能))ソース管理ソース管理//リモートファイルリモートファイル(CVS/SVN/ftp(CVS/SVN/ftp))
# 20
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipse
JavaJavaスクリプトのコーディングのサポートスクリプトのコーディングのサポート
ZendZend Framework Framework 対応の強化対応の強化
ZendZend FrameworkFramework 1.0/1.5/1.6/1.71.0/1.5/1.6/1.7を選択可能を選択可能
ControllerController TestTest CaseCase作成機能作成機能
補完対象の拡大補完対象の拡大
ヘルプの増量ヘルプの増量
ユニットテストユニットテスト//カバレッジカバレッジ
Ajax/DojoAjax/Dojo対応対応独自の独自のSQLSQL QueryQuery ビルダビルダ を搭載を搭載# 21
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT
ZendZend Studio forStudio for EclipseEclipse vsvs Eclipse+PDTEclipse+PDTPDT (PHP Development Tools)PDT (PHP Development Tools)は、は、20052005年か年かららZendZendががEclipse Foundation Eclipse Foundation に参加して製作に参加して製作したプラグインモジュールです。したプラグインモジュールです。
主に主にPHPPHPエディタにフォーカスして機能実装エディタにフォーカスして機能実装
している。そのため、高度な開発には、機能している。そのため、高度な開発には、機能不足となります。不足となります。
# 22
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT①①
Feature PDT Zend Studio 7.1PHP RefactoringIn line Refactoring ○
Extract Variable / Method ○
Move Files and Folders ○
Rename Files Classes, Function and Variables ○
Zend Framework IntegrationCustomized Framework Project Layout ○
Zend Tool Integration ○
Code Templates ○
Example Project ○
MVC View ○
MVC Code Generation ○
Coding Standards Formatter ○
Semantic Awareness to View / Action Helpers ○
Code Assist ○
# 23
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT②②
Feature PDT Zend Studio 7.1PHP Code Generation ○
Getters/Setters Functions ○
Override/Implement Functions ○
PHP Elements Wizards (Class, Interface) ○
JavaScript SupportReal Time Error Detection ○
jsDoc ○
Syntax Coloring & Code Assist ○ ○
DOJO Support ○ ○
TODO ○ ○
HTML and CSS SupportSyntax Coloring & Code Assist ○ ○
HTML Real Time Error Detection ○ ○
Code Folding ○ ○
Automatic Closing Tag ○ ○
Code Formatting ○ ○# 24
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT③③
Feature PDT Zend Studio 7.1Source ControlSubversion (SVN) ○
CVS ○ ○
Local History ○ ○
PHP DebuggingFirefox / IE Toolbars Support ○
Profiler ○
Code Coverage ○
Tunneling Support ○
SSL Communication ○
Local Debugging ○ ○
Web Server Debugging ○ ○
Text Encoding Support ○ ○
Web Servers Management ○ ○
# 25
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT④④
Feature PDT Zend Studio 7.1Zend Server IntegrationAuto Detection of Local Zend Server ○
Servers View ○
Zend Server Events List ○
Import and Debug Zend Server Event ○
Easy Project Creation on Zend Server ○
Quick Debug ○
Debug & Profile Events ○
Zend Platform IntegrationBasic Integration (Open Platform GUI) ○
Events List View ○
Debug / Profile Events ○
Automatic Allow Debugging/Tunneling on Server (using WSDL)
○
Platform API ○ ○# 26
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT⑤⑤
Feature PDT Zend Studio 7.1PHP Editor and File ManagementCode Analysis & Quick Fix ○
Quick New File Creation ○
Advanced Code Formatting (Rule Based) ○
PHP4 and PHP5 Support ○ ○
Syntax Coloring & Code Assist ○ ○
Mark Occurrences ○ ○
Override Indicators ○ ○
Type Hierarchy ○ ○
Open Type / Method ○ ○
Templates (PHP, PHPDoc, New File) ○ ○
Code Folding ○ ○
Real time Error Detection ○ ○
Bookmarks ○ ○
Smart Goto Source + Hover Support ○ ○
Automatic Insertion ○ ○
Matching Bracket ○ ○
Comment / Uncomment PHP code ○ ○
PHP Explorer View ○ ○
Open Resource (File / function) ○ ○
Search PHP Element ○ ○
File / Project / PHP Outlines ○ ○
Basic Code Formatting (not customizable) ○ ○
Find & Replace in Files ○ ○
Tasks ○ ○
Project Include Path ○ ○
Problems View ○ ○
Code Assist for Include Content ○ ○
# 27
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT⑥⑥
Feature PDT Zend Studio 7.1PHPUnit TestingCode Assist ○
Test Case / Suite Code Generation ○
Test Results Visual Support ○
PHP Unit Reports ○
Stack Trace and Filtering ○
Installation / Documentation / SupportTechnical Support (SLA) ○
Welcome Page & Tip of the Day ○
Package / Installation ○
File Association ○
Certified Eclipse Plugins ○
Update Mechanism ○ ○
# 28
Developers Summit 2010
ZendZend Studio forStudio for EclipseEclipsevsvs Eclipse+PDTEclipse+PDT⑦⑦
Feature PDT Zend Studio 7.1Remote SystemsFTP ○
SSH ○
SFTP ○
Database ConnectivityIntuitive Connection Wizard ○
JDBC Drivers ○
Query Editor ○ ○
Editable Table Viewer ○ ○
Objects Tree - Tables, Views ○ ○
MiscellaneousRSS Reader ○
PHPDocumentor Support ○
Zend Code Gallery ○
Zend Guard Ingegration ○
# 29
Developers Summit 2010
デモデモ
ZendZend Studio forStudio for EclipseEclipseデモデモ画面説明画面説明
デバッグデバッグ
プロファイルプロファイル
ユニットテストユニットテスト
カバレッジカバレッジ
# 30
Developers Summit 2010
ZendZendプロダクトの役割プロダクトの役割
インターネット
ZendZend PlatformPlatform高速化高速化//信頼性確保信頼性確保
運用監視運用監視
FortifyFortify SCASCAソースコード監査
ZendZend GuardGuardプリコンパイル暗号化/難読化
ZendZend StudioStudio統合開発環境統合開発環境
ZendZend CoreCorePHPPHPサーバ環境構築サーバ環境構築
PHPソースコード
Webサーバ
Webブラウザ携帯電話
Developers Summit 2010
RIARIAサイトのサイトのCMSCMSWEB SPIRALWEB SPIRAL配信管理機能配信管理機能
日時指定での自動公開や、即時配信にも対応。日時指定での自動公開や、即時配信にも対応。
履歴管理機能履歴管理機能
WEBWEBマスターに負担をかけずに、自動的にファイマスターに負担をかけずに、自動的にファイル履歴を保管。さらに、過去の履歴ファイル情報ル履歴を保管。さらに、過去の履歴ファイル情報を元に、ある時刻のを元に、ある時刻のWEBWEBサイトを再現することもサイトを再現することも可能です。可能です。
ワークフロー管理機能ワークフロー管理機能
より詳細な承認ワークフロー機能を実現。より詳細な承認ワークフロー機能を実現。# 32
商品のお問い合わせ株式会社ネットドリーマーズhttp://www.webspiral.jp/
Developers Summit 2010
RIARIAサイトのサイトのCMSCMSWEB SPIRALWEB SPIRAL
# 33
Developers Summit 2010
RIARIAサイトのサイトのCMSCMSWEB SPIRALWEB SPIRAL
通常のCMS WEB SPIRALレイアウト
テンプレートの仕様に沿って定型化される
テンプレートもレイアウトもどちらも可能。動画やFlashも使用可能
リニューアル
CMSにあわせたリニューアル 制約無くデザインも構築も可能
スタッフ
CMSに精通した業者に製作されるべきデザインの制約を受ける
特殊技術は一切必要なし通常の制作、デザイン会社で対応可能
# 34
Developers Summit 2010
RIARIAサイトのサイトのCMSCMSWEB SPIRALWEB SPIRALイッツ・コミュニケーションズ株式会社イッツ・コミュニケーションズ株式会社http://www.itscom.net/http://www.itscom.net/導入の経緯導入の経緯
担当ディレクトリ制をとっていても更新が煩雑担当ディレクトリ制をとっていても更新が煩雑
導入効果導入効果
承認ワークフローで膨大な更新ルーチン作業が承認ワークフローで膨大な更新ルーチン作業がなくなるなくなる
# 35
Developers Summit 2010
RIARIAサイトのサイトのCMSCMSWEB SPIRALWEB SPIRAL綜合警備保障株式会社綜合警備保障株式会社http://www.alsok.co.jp/http://www.alsok.co.jp/導入前の問題点導入前の問題点
限定された限定されたPCPC端末を複数人で扱うため更新ミ端末を複数人で扱うため更新ミスやファイルの消失が発生スやファイルの消失が発生
導入の決め手になったポイント導入の決め手になったポイント
製品連携や拡張性にも優れており当社の業務製品連携や拡張性にも優れており当社の業務を広くサポートを広くサポート
# 36
Developers Summit 2010
RIARIAの監の監視サービス視サービスIOSIOSの概要の概要
WebWebサイトの応答時間を監視サイトの応答時間を監視
リアルなユーザ操作で測定リアルなユーザ操作で測定
FirefoxFirefoxを利用し、ユーザと同じ実際のブラウを利用し、ユーザと同じ実際のブラウ
ザで表示にかかった時間を測定可能です。ザで表示にかかった時間を測定可能です。
サイトの障害をユーザへの応答時間から検知サイトの障害をユーザへの応答時間から検知
ページ単位の設定やシナリオ全体など、細かページ単位の設定やシナリオ全体など、細か
な閾値の設定が可能です。な閾値の設定が可能です。
グラフと表で状況を把握できるレポート機能グラフと表で状況を把握できるレポート機能# 37
商品のお問い合わせPCIアイオス株式会社http://www.pci-aios.jp/
Developers Summit 2010
IOSIOSダッシュボード画面イメージダッシュボード画面イメージ
シナリオごとの直近の測定結果を一覧で確認できます。グラフでは成功と失敗の比率、および各シナリオごとの表示時間を確認できます。
問題の発生個所を詳細に表示します。
# 38
Developers Summit 2010
IOSIOS履歴画面イメージ履歴画面イメージ
ログイン画面
任意の日時や期間での測定結果を表示できます。
期間内でのレスポンス時間の変化を把握するのに役立ちます。
# 39
Developers Summit 2010
参考資料参考資料
# 40
Developers Summit 2010
FlashFlash LiteLiteバージョン別アクセスシェアバージョン別アクセスシェア
出典「ケータイ白書2010」(インプレスR&D)©ValueEngine,200902010 # 41
Developers Summit 2010
携帯電話加入者数キャリア別累計携帯電話加入者数キャリア別累計
出典「ケータイ白書2010」(インプレスR&D)出所財団法人電気通信事業者協会発表資料に基づく
# 42
Developers Summit 2010
キャリア別アクセスシェアキャリア別アクセスシェア
出典「ケータイ白書2010」(インプレスR&D)©ValueEngine,200902010
# 43
Developers Summit 2010
WebWebブラウザ普及率ブラウザ普及率
出典:株式会社Jストリーム# 44
Developers Summit 2010
デモ内容補足デモ内容補足
PHPPHPととFlashFlashの連携の連携
ZendZend Framework(Framework(Zend_AMF_ServerZend_AMF_Server))ととFlexFlexのコード例のコード例
# 45
Developers Summit 2010
Zend_Amf_ServerZend_Amf_Server
AMFAMFプロトコルによるプロトコルによるFlashFlashからのリクエストからのリクエストに応答するためのコンポーネントです。に応答するためのコンポーネントです。
FlashFlashから送信されたオブジェクトをマッピンから送信されたオブジェクトをマッピングする機能を備えています。グする機能を備えています。
Zend_Amf_ServerZend_Amf_ServerだけをだけをZendZend FrameworkFrameworkから切り出して使用することが可能です。から切り出して使用することが可能です。
# 46
Developers Summit 2010
Zend_Amf_ServerZend_Amf_Server
クラスクラス//関数でマッピング関数でマッピング
Flash
Webサーバ
Action Script
PHPZend Framework
クラスn関数1
関数n
クラス
関数
関数n
# 47
AMF
Developers Summit 2010
デモアプリの構成デモアプリの構成
Test.mxmlTest.mxmlsend send 関数関数((文字列文字列))send2send2関数関数((連想配列連想配列))
SendData.saSendData.saマッピング用クラスファマッピング用クラスファイルイル
IndexController.phpIndexController.phpコントローラコントローラ
job1.phpjob1.php実際の処理を記述実際の処理を記述
CatchData.phpCatchData.phpマッピング用クラスファマッピング用クラスファイルイル
index.phtmlindex.phtmlテンプレートファイルテンプレートファイル
参考資料:CodeZine 「PHPアプリからFlashコンテンツにアクセスしよう – Zend_Amf-風田伸之氏[著]/山田祥寛氏[監修」# 48
Developers Summit 2010
FlashFlash側ソース:送信部分側ソース:送信部分
ResponderResponder定義定義 正常時と異常時の関数正常時と異常時の関数varvar responder:Responderresponder:Responder = new Responder(onNormal2,onFault);= new Responder(onNormal2,onFault);
コネクションの定義コネクションの定義 リクエストリクエストURLURLvarvar nc:NetConnectionnc:NetConnection = new = new NetConnectionNetConnection();();nc.connectnc.connect('http://127.0.0.1/index/amf');('http://127.0.0.1/index/amf');nc.objectEncodingnc.objectEncoding = ObjectEncoding.AMF3;= ObjectEncoding.AMF3;
クラス定義クラス定義varvar params:SendDataparams:SendData = new = new SendDataSendData;;params.cb1 = CB1.text;params.cb1 = CB1.text;
送信!送信! クラスと関数を指定クラスと関数を指定nc.callnc.call('job1.getData2',responder,params);('job1.getData2',responder,params);
# 49
Developers Summit 2010
FlashFlash側ソース:側ソース:
通常処理通常処理 簡単に連想配列で受け取れる簡単に連想配列で受け取れる
private function onNormal2(ret:*):void{private function onNormal2(ret:*):void{TA1.text = TA1.text = ret.statusret.status;;L2.text = ret.val;L2.text = ret.val;
}}異常処理異常処理
private function private function onFaultonFault(ret:*):void{(ret:*):void{Alert.showAlert.show('('通信失敗通信失敗');');
}}# 50
Developers Summit 2010
クラスマッピング用ファイルクラスマッピング用ファイル
SendData.saSendData.sapackage {package {[[BindableBindable]][[RemoteClassRemoteClass(alias="(alias="SendDataSendData")]")]public class public class SendDataSendData{{
public public varvar cb1:String;cb1:String;public public varvar cb2:String;cb2:String;public public varvar cb3:String;cb3:String;public public varvar ans:Stringans:String;;
}}}}
CatchData.phpCatchData.php<?<?phpphpclass class CatchDataCatchData{{public $cb1;public $cb1;public $cb2;public $cb2;public $cb3;public $cb3;public $ta1;public $ta1;
}}
# 51
Developers Summit 2010
PHPPHPソースコードソースコード
public function public function amfActionamfAction()(){ {
////描画処理を無効化描画処理を無効化$this$this-->_helper>_helper-->>viewRendererviewRenderer-->>setNoRendersetNoRender(true); (true); $server = new $server = new Zend_Amf_ServerZend_Amf_Server();();////処理クラスを定義処理クラスを定義$server$server-->>setClasssetClass('job1');('job1');//PHP//PHPととAction ScriptAction Scriptのクラスをマッピングのクラスをマッピング$server$server-->>setClassMapsetClassMap('('SendDataSendData', '', 'CatchDataCatchData');');$result = $server$result = $server-->handle();>handle();echo $result;echo $result;
}}
# 52
Developers Summit 2010
PHPPHPソースソース 処理部分処理部分
class job1class job1{{
public function public function getDatagetData($($paramparam)){{////何かしらの処理何かしらの処理return “return “文字列文字列”;”;}}
public function getData2($public function getData2($paramparam)){{////何かしらの処理何かしらの処理return array(“return array(“objobj”=>$”=>$param,“statusparam,“status”=>“”=>“OK”,“valOK”,“val”=>””=>”文字列文字列”);”);}}
}}# 53
Developers Summit 2010
PHPPHP開発を側面から支援する開発を側面から支援する
ゼンド・ジャパン株式会社ゼンド・ジャパン株式会社ZendZend Japan, Ltd.Japan, Ltd.執行役員執行役員佐藤栄一佐藤栄一 [email protected]@zend.co.jp〒〒150150--00410041東京都渋谷区神南東京都渋谷区神南11丁目丁目1515番番88号号 兼仲ビル兼仲ビル22階階TEL:03TEL:03--62756275--20022002FAX:03FAX:03--34623462--13651365WebWebサイトサイト http://www.zend.co.jp/http://www.zend.co.jp/