SHOEISHA iD

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

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

特集記事

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

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

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

ダウンロード サンプルソース (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 システムの構成図

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
AIRアプリケーション生成の流れ

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

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

もっと読む

この記事の著者

ryujinseiichi(リュウジンセイイチ)

http://ryujinseiichi.sblo.jp/ RubyやAIRなどの新規技術に興味があり、研究を行っています。 最近、seasar2やBPMの研究も始めました。  

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2715 2009/10/20 17:09

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング