Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

RoRのWebサービスと連携する、Adobe AIRアプリケーションの自動生成

Adobe AIRアプリケーションの自動生成とWebサービスとの連携

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/07/22 14:00

ダウンロード サンプルソース (7.7 KB)

 Ruby on Rails 1.0系のActionWebServiceが提供するWebサービスと、Adobe AIRアプリケーションとの連携サンプルを紹介します。また作成するAdobe AIRアプリケーションは、Scaffoldのようにジェネレータを用意し、Ruby on Railsから自動生成できるようにします。

目次

はじめに

 Ruby on RailsにはScaffoldというジェネレータがあり、テーブルのメンテナンスアプリケーションを自動生成してくれます。これによりRuby on Railsの生産性が向上しました。

 そこで本稿では、Adobe AIR(以下、AIR)の生産性を向上させる試みの一環として、データベースをメンテナンスするAIRアプリケーションのジェネレータを作成します(以下、メンテナンスアプリケーションジェネレータ)。

 ジェネレータの作成には、Ruby on Railsを利用します。

対象読者

  • ActionScriptやAIRのプログラマー
  • Rubyプログラマー
  • 生産性の向上を目指すSEやSEマネージャ

必要な環境

  • Ruby 1.86以上
  • Ruby on Rails 1.2.5以上
  • Flex SDK 3以上

 ※RoR 2.0以降は、web_serviceの部分が異なるので、対象外です。

AIR版メンテナンスアプリケーションジェネレータの作成

 本稿では、まずRuby on Railsを使用して、AIR版メンテナンスアプリケーションジェネレータを作成し、次に作成したジェネレータで実際にアプリケーションを生成してみます。最後に、「Dictionaryの作成」と「ActionWebServiceへのFindByIdの追加」に関して説明します。

Ruby on RailsによるAIR版メンテナンスアプリケーションジェネレータの作成

作成するジェネレータの格納場所

 Ruby on Railsは以下の場所からユーザー定義のジェネレータを探すので、本稿では「RAILS_ROOT\lib\generators」配下に「air_maintenance」ディレクトリを作り、ジェネレータを配置する前提で話を進めます(図1、図2参照)。

  • RAILS_ROOT\lib\generators
  • RAILS_ROOT\vendor\generators
  • RAILS_ROOT\vendor\plugins\任意のサブディレクトリ\generators

 なお、「RAILS_ROOT」はRuby on Railsで生成したアプリケーションのルートディレクトリを表します。

図1 ジェネレータの格納場所 1
図1 ジェネレータの格納場所 1
図2 ジェネレータの格納場所 2
図2 ジェネレータの格納場所 2

ジェネレータクラスの作成

 まず、ジェネレータクラスair_maintenance_generatorを作成します。

 継承しているNamedBaseは、Ruby on Railsにおけるジェネレータの拡張元となるクラスです。class_collisionsメソッドで、これから生成するクラスが、RubyやRuby on Railsのクラスとして既に使用されていないか確認します。

 また、directoryメソッドで、これから生成するクラスを格納するディレクトリを作成し、templateメソッドで、テンプレートを基にクラスを生成します。

 第1引数でテンプレートディレクトリからのテンプレートファイルの相対パス、第2引数で生成されるファイルのRAILS_ROOTからの相対パスを指定します。

air_maintenance_generator.rb
class AirMaintenanceGenerator < Rails::Generator::NamedBase
  def manifest
    record do |m|
      # Check for class naming collisions.
      m.class_collisions class_path, "#{class_name}"

      # API and test directories.
      m.directory File.join('air-source', class_path, class_name)

      # 一覧検索を行う MXML
      m.template 'list_mxml.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "#{class_name}List.mxml")

      # 一覧検索を行う Function
      m.template 'list_function.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "#{class_name}ListFunction.as")

      # データ型
      m.template 'data_type.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "#{class_name}.as")

      # 新規作成を行う MXML
      m.template 'new_mxml.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "New#{class_name}.mxml")

      # 新規作成を行う Function
      m.template 'new_function.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "New#{class_name}Function.as")

      # 更新を行う MXML
      m.template 'update_mxml.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "Update#{class_name}.mxml")

      # 更新を行う Function
      m.template 'update_function.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "Update#{class_name}Function.as")

      # アプリケーションを実行するための XML
      m.template 'appxml.rb',
                  File.join('air-source',
                            class_path, class_name,
                            "#{file_name}-app.xml")
    end
  end
end

 これから作成するAIRアプリケーションは、図3のように記事『Rails ActionWebServiceジェネレータのカスタマイズ』で作成したActionWebServiceと連携することで、データベース上のテーブルをメンテナンスできるというものです。

図3 システムの構成図
図3 システムの構成図

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

著者プロフィール

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5