先日からSWXのドキュメントを和訳していたのですが、自分が初めて読んだとき以上に使う上で役立つコトというのが少ないので、SWXで混乱しやすいところからまとめることにしました。完全に私家版ですので、誤っているところなどございましたら、ご指摘下さい。
本文章は、クリエイティブコモンライセンス(表示-継承 2.1 日本)で公開しています。
まずは、SWX用語編から。
SWX用語の補足1)SWX データフォーマット
SWXはデータフォーマットから、ASのクラスSWX、サーバサイドのSWX PHPまですべてにSWXと言う言葉が使われているので理解をするには用語を理解する必要があります。
SWXデータフォーマットは変数(result)情報を含むSWFです。
SWX は、resultという名前の変数が必ず含まれておりその中にActionScriptのオブジェクトなら何でも格納することが出来ます。ドキュメントに 書いてあるとおり、このファイル自体はMacromedia Flash 5以降のFlashで生成する(*)ことが可能です。
注)*パブリッシュするときはSWF形式で良い。
resultという変数が存在するSWFであれば、SWXのASコードで利用できるので、サーバアプリケーションがあるなしにかかわらず、同じASのコードで私たちはSWXデータフォーマットを利用できます。
普通のテキスト/XMLデータと比べた場合の利点は、次の通りです。
- データのパースが不要
- バイナリデータ
- 階層構造などを持たせるのが容易
もっともサーバウエアを置かない場合は、データの編集がFlashからしか行えないという欠点はありますが、複雑なデータを外部ファイルで置けば置くほど検討の余地はあると思います。
Flash Player6対応というのを無視すれば、resultには当たり前のことですが、Bitmapデータを含ませておくことも理論上可能です。
ActionScriptのライブラリやSWX RPCのサーバサイド実装については続きをご覧下さい。
SWX用語の補足2)ActionScriptライブラリ(特にSWXクラス)とはなんだろう?
SWXのサイトでも、上級者用と位置づけられているSWXデータフォーマット形式のデータを取得ためのActionScriptライブラリのことです。
具体的には、SWXクラスはMovieClipLoaderとSWXデータフォーマットの受け入れ先となるムービークリップを含むもので現在はActionScript2.0で書かれています。(AS3版は現在開発中とのこと)
SWXクラスのメソッドは先日の記事でふれていますので、そちらをご一読下さい。
SWX データフォーマット自体はSWFと同等なので、loadMovieおよびMovieClipLoaderで読み込むことが可能ですが、通常から MovieClipLoaderを使いこなしているユーザなら、わざわざムービークリップを生成してMovieClipLoaderで読み出すよりは、 SWXクラスのインスタンスを利用する方が簡単でしょう。Flash上でムービープレビューするとき専用のtestGatewayも設定できますし、エ ラーや実行成功のイベントハンドラも持っています。
もちろんFlash Lite2.xのスクリプトでも利用することが出来ます。
サンプルコード
import org.swxformat.SWX;
var swx:SWX = new SWX();
swx.gateway = "http://www.yourdomain.com/php/swx.php";
swx.testGateway = "http://localhost:8888/php/swx.php";
swx.encoding = "GET";//CakeSWXPHPの場合は"POST"限定
swx.debug = true;
// serviceClassとmethodはチュートリアルのものを利用
var callParameters:Object =
{
serviceClass: "Calculator",
method: "addNumbers",
args: [15, 20],
result: [this, resultHandler],
progress: [this, progressHandler]
}
swx.call(callParameters);
function resultHandler(event:Object)
{
result_txt.text = event.result;
}
SWX用語の補足3)SWX RPC 実装
SWFはSWX RPCのゲートウエイ(URL)を指定して、データを取得します。ゲートウエイはPublicなものと、自分でクラスやメソッドを設定出来るものがあり、 TwitterやFlickerのようなメジャーなAPIはPublicGatewayを通して十分な機能を使うことが出来ます。
SWX RPC実装はSWX PHPおよびフレームワーク組み込み型のCakeSWXPHPのみが正式版として公開されています。(2007/10/29現在)
ユーザが使う上で理解しておくべきサーバサイド側の機能は次の通り。
- 送られてくる変数debugに基づいてSWX DataAnalizerでデバッグ情報を表示するか
- 送られてくる変数args(JSON形式)の内容を解釈しSWXデータフォーマットを返す
- SWX内result変数にActionScriptネイティブな形式の変数を入れる(ユーザは実装で使われている言語の変数型をそのままアクションの戻り値として返せばいい。解釈はSWX実装が行う)
- SWX Explorer(アクションリストとテスト表示)とSWX Data Analizer(デバッガ)を装備している
SWXPHPおよびCakeSWXPHP
アクションをPHPで書く際、PHPDoc方式でコメントを入れておくと、SWX Explorerでアクションの説明や変数の説明を見ることが出来ますが、1.0.1では日本語対応はしてないので、英語でドキュメントを入れるようにします。
SWFムービーから送ったargs変数の各値が、順にメソッド引数になり、メソッドの戻り値(returnで返すもの)がSWX形式のデータ内result変数に格納されます。
現在の実装状況について
正式版
- SWX PHP
- 1.0.1(SWX PHP1.0/1.0.1にはセキュリティパッチに当たるファイルが出ているので、それも念のためダウンロードすることをオススメします)
- CakeSWXPHP
- cakeswxphp revision 91 SWX PHP1.0.1ベースです。controlerにおいたファイルとメソッドがゲートウエイ上のクラス・アクションとして登録されます。システムがDBと連動する独自開発の場合、PHP単体より圧倒的に使いやすいと思われます。
アルファ版
- SWX Ruby [公式サイト(英)]
- 0.1.1(アルファ版)
計画段階
- SWX JAVA
- SWX公式サイトで何度か名前が出ている
- SWX .NET [SWX .NET情報(英)]
- 公開してないがテスト段階では動いている模様)