SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

Flex + LL連携(Ruby、Python、PHP)

  • このエントリーをはてなブックマークに追加

Rubyを使う

 Rubyには、幾つかのオープンソースのAMF実装があります。

  • MidnightCoders WebORB for Ruby
  • rubyamf

 今回はrubyamfを取り上げます。現時点でのRubyAMFの最新版は、1.6.3です。

 RubyAMFの特徴は、WebアプリケーションフレームワークであるRuby on Railsとの連携が容易なことです。

RubyAMFのインストール:

 Ruby on Railsをインストールし、railsコマンドでプロジェクトを作成します。

C:\devel\rails>gem install rails
C:\devel\rails>rails helloservice
C:\devel\rails>cd helloservice

 プロジェクトディレクトリに移動し、以下のコマンドを実行すると、RubyAMFがインストールされます。

C:\devel\rails>ruby script/plugin install http://rubyamf.googlecode.com/svn/tags/current/rubyamf

 無事にインストール出来たかを確認するために、Webブラウザでgatewayアドレスにアクセスしてみましょう。次のコマンドでWebサーバを起動します。

C:\devel\rails>ruby script/server

 RubyAMFのゲートウェイアドレスは、

http://localhost:3000/rubyamf/gateway

 です。正常にインストールされていれば、RubyAMFのロゴ画像が表示されます。

RubyAMFでのサービスの実装:

 「プロジェクトディレクトリ/app/controllers」以下に、「hello_world_controller.rb」を作成します。クラス名、ファイル名は、Railsの命名規則に従います。

hello_world_controller.rb
class HelloWorldController < ApplicationController
  def hello
    render :amf => "Ruby World! [message from client: " + params[0].to_s.upcase + "]"
  end
end

 クライアントから渡された引数には、params配列でアクセスできます。

 RubyAMFの細かい挙動は、「プロジェクトディレクトリ/config/rubyamf_config.rb」で設定できます。一度目を通しておくことをお勧めします。

RubyAMFのサービスの呼び出し:

 「クラス名.サービス名」をサービス名として指定し、呼び出します。今回の例では、「HelloWorldController.hello」です。

デバッグのためのツール

 クライアント~サーバ間通信は、問題が発生した際にデバッグが難しい個所です。例えば、サーバから受け取ったデータ型を、クライアント側の対応する型に正しくキャスト出来ないケースを考えましょう。

  • サーバから返されたデータが期待した内容で届いているのか
  • サーバから返されたデータが指定した型になっているのか
  • そもそもデータがサーバから届いているのか

 このような時に便利なのが、実際に通信されているAMFデータの内容を確認できるモニタリングソフトウェアです。

 などが代表的です。

 下の画面はCharlesのものですが、送受信するAMFの内容を、型情報と共に表示してくれるため、問題の切り分けに効果的です。AMFの生データのHexダンプなど、追加の情報も確認することができます。

終わりに

 サーバサイドのサービスをスクリプト言語で記述し、Flexクライアントと通信する簡単な例を紹介してきましたが、いかがでしたでしょうか。意外と簡単にクライアント・サーバ連携が実現できることが伝われば幸いです。

 最後に、サーバサイドとの通信を容易にするためのオープンソースのライブラリを幾つか紹介したいと思います。

 今回のサンプルでは、生のNetConnectionクラスを使って処理を行いましたが、イベントリスナの登録など、定型の処理を記述する必要がありました。これらのライブラリを使うことにより、定型の処理の記述を省くなど、より簡単に通信処理を記述することが出来ます(もちろん、他にもいろいろな機能が提供されています)。

 クラスメソッド社では、主にFlex/AIR技術を使ったユーザーインターフェース開発を行っています。また、Flexと連携する様々なサーバーサイドテクノロジーを利用し、多くの業務システム開発を行っています。Flex/AIRを用いたシステム開発を検討されている企業様はお気軽にお問い合わせください。

「FlexではじめるRIA開発」特集、絶賛公開中!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

クラスメソッド株式会社 篠崎 大地(シノザキ ダイチ)

クラスメソッド株式会社(http://www.classmethod.jp/)所属テクニカルスペシャリスト。金融系システムのRIA化を得意とし、日々アーキテクチャー設計と実装に奮闘中。Adobe Certified Flex 2.0 Developer。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4541 2009/11/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング