PHPにおけるRIA
PHPにおけるRIA事情と開発事情と開発
環境

19-D-2

佐藤栄一
ゼンド・ジャパン株式会社
執行役員

Developers Summit 2010

RIAとはRIAとはRIA(リッチインターネットアプリケーション
RIA(リッチインターネットアプリケーション))
Rich Internet Application
私の感覚→私の感覚→ Rich Interface Application

Webアプリケーションでどれだけネイティブアプ
Webアプリケーションでどれだけネイティブアプリケーションに近づけるか。
入力処理の支援
マウス操作
出力処理→入力処理の軽減と応答スピードの向上→エンターテイメント的な要素#2

Developers Summit 2010

RIAの現状
RIAの現状Javaなら
Javaならそもそもダウンロード可能なアプリケーション
Swing→Swing→JavaFX
Apache Pivot.netなら.net
なら
VBは様々形でRIA
VBは様々形でRIAを実現を実現.NET RIA Services.NET Framework+Silverlight#3

Developers Summit 2010

PHPでのRIA
PHPでのRIA
クライアント側のテクノロジ
Java Script
Flash/Flash Lite
Silverlight
Curl

#4

Developers Summit 2010

RIAと開発環境
RIAと開発環境
EclipseAptana Studio
ZendStudio
FierFox
FirebugJava Script
jQuery, Prototype, YUI,dojo, Ext JS, MooTools

FLASH CS4
Flex 2 SDK

FlashAction Script

Flex Builder 3#5

Developers Summit 2010

WebサーバWebサーバ

Flash バージョン別普及率#6

Developers Summit 2010

出典：株式会社Ｊストリーム

携帯電話のFlash
携帯電話のFlash Lite
Lite対応時期
対応時期#7

出典」：有限会社水玉製作所
http://www.mztm.jp/
Developers Summit 2010

本資料は、公開情報に基づきまとめられました。

リクエストベースのFlash Lite のシェア

出典「ケータイ白書2010」(インプレスR＆D刊)#8

Developers Summit 2010

Flash サイト閲覧時の経験（単一回答）

Developers Summit 2010

出典：IMJモバイル

PHPが使用できる
PHPが使用できるハードウエアとOS
ハードウエアとOS
WindowsLinuxSolaris x86

Intel / AMD
Sun SPARC

PowerIBM i

Developers Summit 2010

Sun Solaris

プログラミング言語の人気
TIOBE Programming Community Index for February 2010

# 11

Developers Summit 2010

出典：TIOBE Software BV

人気推移：PHP
人気推移：
PHP

# 12

Developers Summit 2010

出典：TIOBE Software BV

人気推移：ActioScript
人気推移：
ActioScript# 13

Developers Summit 2010

出典：TIOBE Software BV

プログラミング言語の関連書籍販売部数推移# 14

Developers Summit 2010

出典：O'Reilly Media

プログラミング言語の関連書籍販売部数推移# 15

Developers Summit 2010

出典：O'Reilly Media

Zend Framework
Zend Framework
Frameworkには、様々通信に対応すには、様々通信に対応するモジュールを用意しています。
Zend_XmlRpc
Zend_Rest
Zend_Json
Zend_Dojo ZF1.5
ZF1.5からから
Zemd_AMF_Server ZF1.7
ZF1.7からからFlashからのリクエストに応じた処理を行いますFlashからのリクエストに応じた処理を行います# 16

Developers Summit 2010

PHPのPHPのRIA
RIA開発環境
開発環境
Flex Builder+Zend Studio for Eclipse
Eclipseバージョンのアンマッチに注意してくださ
Eclipseバージョンのアンマッチに注意してください。
Zend Studio for Eclipse 6.0 Eclipse 3.3
Zend Studio for Eclipse 6.1 Eclipse 3.4
Zend Studio for Eclipse 7.1 Eclipse 3.5
Flex Builder 3
Eclipse 3.2.2/3.3/3.4(プラグイン構成は3.2.2/3.3/3.4(プラグイン構成は3.33.3を推奨を推奨))# 17

Developers Summit 2010

Zend Studio シリーズの歴史

2005年10月
Eclipse Foundation に参加
PDT (PHP Development Tools )2004年
1月 3.0# 18

2005年
4月 4.02008年3
2006年 月 6.0
1月 5.0

ベース環境をEclipseに変更

2002
年3月
2.0
Developers Summit 201019-Feb-10|

Zend StudioStudioシリーズ日本語版
シリーズ日本語版
PHPアプリケーションの開発効率を飛躍的に向PHPアプリケーションの開発効率を飛躍的に向上する数々の機能が盛り込まれています。

# 19

Developers Summit 2010

Zend StudioStudioシリーズ日本語版
シリーズ日本語版
PHP専用エディタ
PHP
専用エディタ
補完機能

ローカルデバッグ
リモートデバッグプロファイルSQL Support(データベースとの接続
Support(データベースとの接続))
phpDocumentor((ドキュメント作成機能
phpDocumentor
ドキュメント作成機能))
ソース管理//リモートファイル
ソース管理
リモートファイル(CVS/SVN/ftp(CVS/SVN/ftp））# 20

Developers Summit 2010

Zend Studio for Eclipse
Javaスクリプトのコーディングのサポート
Javaスクリプトのコーディングのサポート
Zend Framework 対応の強化
Zend Framework 1.0/1.5/1.6/1.7
1.0/1.5/1.6/1.7を選択可能
を選択可能
Controller Test Case 作成機能
補完対象の拡大
ヘルプの増量# 21

ユニットテスト/カバレッジ
ユニットテスト/Ajax/Dojo対応
Ajax/Dojo対応
独自のSQL独自のSQL Query
ビルダを搭載Developers Summit 2010

Zend Studio for Eclipse
vs Eclipse+PDT
Zend Studio for Eclipse vs Eclipse+PDT
PDT (PHP Development Tools)は、Tools)は、20052005年か年からZend
ZendががEclipse Foundation に参加して製作したプラグインモジュールです。

主にPHPエディタにフォーカスして機能実装
主にPHPエディタにフォーカスして機能実装している。そのため、高度な開発には、機能不足となります。

# 22

Developers Summit 2010

Zend Studio for Eclipse
vs Eclipse+PDT
Eclipse+PDT①①Feature
PHP Refactoring
In line Refactoring
Extract Variable / Method
Move Files and Folders
Rename Files Classes, Function and Variables
Zend Framework Integration
Customized 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

PDTZend Studio 7.1○○○○○○
○
○
○
○
○
○
○

Zend Studio for Eclipse
vs Eclipse+PDTEclipse+PDT②②Feature
PHP Code Generation
Getters/Setters Functions
Override/Implement Functions
PHP Elements Wizards (Class, Interface)
JavaScript Support
Real Time Error Detection
jsDoc
Syntax Coloring & Code Assist
DOJO Support
TODO
HTML and CSS Support
Syntax Coloring & Code Assist
HTML Real Time Error Detection
Code Folding
Automatic Closing Tag
Code Formatting# 24Developers Summit 2010

PDT

Zend Studio 7.1
○○○
○

○
○
○

○
○
○
○
○

○
○
○
○
○

○
○
○
○
○

Zend Studio for Eclipsevs Eclipse+PDT
Eclipse+PDT③③Feature
Source Control
Subversion (SVN)
CVSLocal History
PHP Debugging
Firefox / 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

PDT

Zend Studio 7.1

○○

○
○
○

○
○
○
○

○
○
○
○
○
○
○
○
○

Zend Studio for Eclipse
vs Eclipse+PDT
Eclipse+PDT④④Feature
Zend Server Integration
Auto Detection of Local Zend ServerServers View
Zend Server Events List
Import and Debug Zend Server Event
Easy Project Creation on Zend Server
Quick Debug
Debug & Profile Events
Zend Platform Integration
Basic Integration (Open Platform GUI)
Events List View
Debug / Profile Events
Automatic Allow Debugging/Tunneling on Server (usingWSDL)
Platform API# 26
Developers Summit 2010

PDT

Zend Studio 7.1
○○○
○
○
○
○
○
○
○
○

○

○

Zend Studio for Eclipse
vs Eclipse+PDT
Eclipse+PDT⑤⑤Feature
PHP Editor and File Management
Code 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

PDTZend Studio 7.1

○○○
○
○
○
○○○
○
○○○
○
○
○
○
○
○○○○○○

○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○
○

Zend Studio for Eclipse
vs Eclipse+PDT
Eclipse+PDT⑥⑥Feature
PHPUnit Testing
Code Assist
Test Case / Suite Code Generation
Test Results Visual Support
PHP Unit Reports
Stack Trace and Filtering
Installation / Documentation / Support
Technical Support (SLA)
Welcome Page & Tip of the Day
Package / Installation
File Association
Certified Eclipse Plugins
Update Mechanism# 28

Developers Summit 2010

PDT

Zend Studio 7.1
○○
○
○
○

○

○
○
○
○
○
○

Zend Studio for Eclipsevs Eclipse+PDT
Eclipse+PDT⑦⑦Feature
Remote Systems
FTP
SSHSFTP
Database Connectivity
Intuitive Connection Wizard
JDBC Drivers
Query Editor
Editable Table Viewer
Objects Tree - Tables, Views
Miscellaneous
RSS Reader
PHPDocumentor Support
Zend Code Gallery
Zend Guard Ingegration
# 29

PDT

Zend Studio 7.1
○○
○

○
○
○

○
○
○
○
○
○
○
○
○

Developers Summit 2010

デモ
Zend Studio for Eclipse デモ
画面説明
デバッグ
プロファイル
ユニットテスト
カバレッジ

# 30

Developers Summit 2010

Zendプロダクトの役割
Zend
プロダクトの役割
Webサーバ

Zend Studio

Zend Core
PHPサーバ環境構築
PHP
サーバ環境構築

統合開発環境Fortify SCAソースコード監査PHP
ソース
コード

Zend Platform

Zend Guard
プリコンパイル
暗号化/難読化

インターネットWebブラウザ

高速化/信頼性確保
高速化/
運用監視

携帯電話
Developers Summit 2010

RIAサイトのCMS
RIAサイトのCMS
WEB SPIRAL

商品のお問い合わせ株式会社ネットドリーマーズ
http://www.webspiral.jp/

配信管理機能
日時指定での自動公開や、即時配信にも対応。

履歴管理機能WEBマスターに負担をかけずに、自動的にファイWEBマスターに負担をかけずに、自動的にファイル履歴を保管。さらに、過去の履歴ファイル情報を元に、ある時刻のWEBを元に、ある時刻のWEBサイトを再現することもサイトを再現することも可能です。

ワークフロー管理機能
より詳細な承認ワークフロー機能を実現。
# 32

Developers Summit 2010

RIAサイトのCMS
RIAサイトのCMS
WEB SPIRAL# 33

Developers Summit 2010

RIAサイトのCMS
RIAサイトのCMS
WEB SPIRAL
通常のCMSWEB SPIRAL
レイアウト

テンプレートの仕様に沿って定型化されるテンプレートもレイアウトもどちらも可能。動画やFlashも使用可能
リニューアル
CMSにあわせたリニューアル
制約無くデザインも構築も可能
スタッフ
CMSに精通した業者に製作さ 特殊技術は一切必要なし通常れるべきの制作、デザインの制約を受ける
デザイン会社で対応可能# 34

Developers Summit 2010

RIAサイトのCMS
RIAサイトのCMS
WEB SPIRAL
イッツ・コミュニケーションズ株式会社
http://www.itscom.net/
導入の経緯
担当ディレクトリ制をとっていても更新が煩雑

導入効果
承認ワークフローで膨大な更新ルーチン作業がなくなる# 35

Developers Summit 2010

RIAサイトのCMS
RIAサイトのCMS
WEB SPIRAL
綜合警備保障株式会社
http://www.alsok.co.jp/
導入前の問題点限定されたPC端末を複数人で扱うため更新ミ限定されたPC
端末を複数人で扱うため更新ミスやファイルの消失が発生

導入の決め手になったポイント
製品連携や拡張性にも優れており当社の業務を広くサポート# 36

Developers Summit 2010

RIAの監視サービス
RIAの監視サービス
IOSの概要IOSの概要

商品のお問い合わせ
PCIアイオス株式会社
http://www.pci-aios.jp/

Webサイトの応答時間を監視
Webサイトの応答時間を監視リアルなユーザ操作で測定
Firefoxを利用し、ユーザと同じ実際のブラウFirefoxを利用し、ユーザと同じ実際のブラウザで表示にかかった時間を測定可能です。
サイトの障害をユーザへの応答時間から検知
ページ単位の設定やシナリオ全体など、細かな閾値の設定が可能です。
グラフと表で状況を把握できるレポート機能# 37

Developers Summit 2010

IOSダッシュボード画面イメージ
IOS
ダッシュボード画面イメージ
シナリオごとの直近の測定結果を一覧で確認できます。
グラフでは成功と失敗の比率、および各シナリオごとの表示時間を確認できます。

問題の発生個所を詳細に表示します。

Developers Summit 2010

# 38

IOS履歴画面イメージ
IOS
履歴画面イメージ

ログイン画面

任意の日時や期間での測定結果を表示できます。
期間内でのレスポンス時間の変化を把握するのに役立ちます。
Developers Summit 2010

# 39

参考資料

# 40

Developers Summit 2010

Flash Lite
バージョン別アクセスシェア

出典「ケータイ白書2010」(インプレスR＆D)©ValueEngine,200902010
Developers Summit 2010

# 41

携帯電話加入者数キャリア別累計

出典「ケータイ白書2010」(インプレスR＆D)
出所 財団法人電気通信事業者協会発表資料に基づく# 42

Developers Summit 2010

キャリア別アクセスシェア# 43

出典「ケータイ白書2010」(インプレスR＆D)©ValueEngine,200902010
Developers Summit 2010

Webブラウザ普及率
Web
ブラウザ普及率# 44

Developers Summit 2010

出典：株式会社Ｊストリーム

PHPとFlashPHPとFlashの連携の連携
Zend Framework(Framework(Zend_AMF_Server
Zend_AMF_Server))とFlex
Flexのコード例のコード例

デモ内容補足# 45

Developers Summit 2010

Zend_Amf_Server
AMFプロトコルによるFlashAMFプロトコルによるFlashからのリクエストからのリクエストに応答するためのコンポーネントです。
Flashから送信されたオブジェクトをマッピン
Flashから送信されたオブジェクトをマッピングする機能を備えています。
Zend_Amf_ServerだけをZend_Amf_ServerだけをZend
Zend Frameworkから切り出して使用することが可能です。

# 46

Developers Summit 2010

Zend_Amf_Server
Webサーバクラス//関数でマッピング
クラス

PHP
Zend Framework
クラス
関数

Flash関数nAction Script

AMF

クラスn関数1関数n# 47

Developers Summit 2010

デモアプリの構成
Test.mxml
send 関数
関数((文字列文字列))
send2関数
send2関数((連想配列連想配列))
SendData.sa
マッピング用クラスファ
イル

# 48

IndexController.php
コントローラjob1.php
実際の処理を記述
CatchData.php
マッピング用クラスファイル
index.phtml
テンプレートファイル

参考資料：CodeZine 「PHPアプリからFlashコンテンツにアクセスしよう – Zend_Amf風田伸之氏[著]/山田祥寛氏[監修」
Developers Summit 2010

Flash側ソース：送信部分
Flash側ソース：送信部分
Responder定義
Responder
定義 正常時と異常時の関数
var responder:Responder = new Responder(onNormal2,onFault);

コネクションの定義 リクエスト
リクエストURL
URL
var nc:NetConnection = new NetConnection
NetConnection();();
nc.connect('http://127.0.0.1/index/amf');
nc.connect('http://127.0.0.1/index/amf');
nc.objectEncoding = ObjectEncoding.AMF3;

クラス定義
var params:SendData = new SendData
SendData;;
params.cb1 = CB1.text;

送信！ クラスと関数を指定
nc.call('job1.getData2',responder,params);
nc.call('job1.getData2',responder,params);# 49

Developers Summit 2010

Flash側ソース：
Flash側ソース：
通常処理 簡単に連想配列で受け取れる
private function onNormal2(ret:*):void{TA1.text = ret.status
ret.status;;
L2.text = ret.val;}

異常処理
private function onFault
onFault(ret:*):void{(ret:*):void{
Alert.show('Alert.show('通信失敗通信失敗');');}# 50

Developers Summit 2010

クラスマッピング用ファイル# 51

SendData.sa

CatchData.php

package {[BindableBindable]][RemoteClass
RemoteClass(alias="(alias="SendDataSendData")]")]
public class SendData{public var cb1:String;
public var cb2:String;
public var cb3:String;
public var ans:String
ans:String;;
}
}

<?php
<?php
class CatchData{
public $cb1;
public $cb2;
public $cb3;
public $ta1;}

Developers Summit 2010

PHPソースコード
PHP
ソースコードpublic function amfAction
amfAction()(){//描画処理を無効化//
描画処理を無効化$this-->_helper$this>_helper-->viewRenderer
viewRenderer-->setNoRender
setNoRender(true);(true);$server = new Zend_Amf_Server
Zend_Amf_Server();();//処理クラスを定義//
処理クラスを定義$server-->setClass$server
setClass('job1');('job1');//PHPと//PHPとAction Scriptのクラスをマッピング
Scriptのクラスをマッピング$server-->setClassMap$server
setClassMap('('SendData
SendData',', 'CatchData'CatchData');');$result = $server$server->handle();echo $result;｝# 52

Developers Summit 2010

PHPソースPHP
ソース 処理部分
class job1{
public function getData
getData($($paramparam)){//何かしらの処理//何かしらの処理
return “文字列“文字列”;”;}
public function getData2($param
getData2($param)){//何かしらの処理//
何かしらの処理
return array(“objarray(“obj”=>$”=>$param,“statusparam,“status”=>“”=>“OK”,“valOK”,“val”=>””=>”文字列文字列”);”);
}
}
# 53

Developers Summit 2010

ゼンド・ジャパン株式会社
Zend Japan, Ltd.
執行役員 佐藤栄一 satou@zend.co.jp〒150150--0041
東京都渋谷区神南1
東京都渋谷区神南
1丁目
丁目1515番番8号 兼仲ビル
兼仲ビル22階TEL:03--6275
TEL:036275--2002
FAX:03--3462
FAX:033462--1365
WebサイトWebサイト http://www.zend.co.jp/

PHP開発を側面から支援する
PHP
開発を側面から支援する
Developers Summit 2010