2010年01月の投稿

Flex + Railsの構成でwebアプリケーションを作ることを考えているので、購入したFlex on Rails: Building Rich Internet Applications with Adobe Flex 3 and Rails 2 (Developer’s Library)を参考に機能チェックをしています。

FlexとRails間のデータの橋渡しには、同書でも取り上げているRubyAMFを使おうと考えているため、早速”Chapter5 Passing Data with AMF”を読み進めるも、クラスマッピングに関する記述でつまづいたのでその覚え書きをメモしておきます。

利用している環境は以下の通りで、これは”Flex on Rails”の環境より新しいものとなります。

  • Ruby: 1.8.7
  • Rails: 2.3.5
  • RubyAMF: 1.6.5
  • Flex SDK: 3.5

まず、Flexから、rubyamf_scaffoldで生成したcontoller上のfind_allを呼び出すことはうまくいきました。

次に、Flex上のVOで以下のようにRemoteClassに対するaliasを設定し、

package flexonrails.examples.vo {
[RemoteClass(alias="Contact")]
[Bindable]
public class Contact {
...
}
}

rubyamf_config.rbで”ClassMappings.assume_types = true”の指定をした後に、この型のデータをFlexからRailsのcontoller上のsaveに渡そうとすると、以下のようなエラーが表示され正常に動作しません。

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

ここここを見ると、Rails2.3系では解決していない問題のようですね。

取り急ぎ、rubyamf_config.rbで”ClassMappings.assume_types = false”にした上で、

ClassMappings.register(:actionscript => 'Contact', :ruby => 'Contact', :type => 'active_record')

のように手動でマッピングすると、Rails2.3.5でも問題なくsaveが呼び出せました。

Flex on Rails: Building Rich Internet Applications with Adobe Flex 3 and Rails 2 (Developer's Library)
Tony Hillerson Daniel Wanja
Addison-Wesley Professional
売り上げランキング: 26867
おすすめ度の平均: 3.0

3 RubyAMFについて内容が貧弱でちょっとがっかり

Ruby on Railsの調査のため、同フレームワークのアプリケーションを公開するサーバをレンタルしたので、その覚え書きを以下に記載します。

現在、このblogなどの公開のため、hetemlのホスティングサービスを利用していますが、このサービスではRailsを利用できず、また自前のサーバを用意するのも手間だったので、VPSをレンタルすることにしました。

Rails利用者によるVPSの情報は、ネット上で多く出回っているので、それらを参考にslicehostの256sliceプランを契約。pingの応答時間を見ると、海外のサーバだけに、日本からの応答はhetemlの十倍程度かかっているのが気にはなったのですが、コストパフォーマンスと高い評判を考慮して申し込みました。webページからクレジットカード情報などを入力して申し込むと、すぐ利用できるようになりました。なお、申込時に「Slice Name」と言うものを入力するのですが、これは複数のプランを申し込んだ際にそれらを区別するときなどに使うもので、契約後も変更できるようです。

また、同VPSではOSを選択できるのですが、今回は、今後自前サーバのOSとして使う予定のCentOS 5.4を選択しました。後はsshでログインして、以下のソフトウェアなどをインストール。いくつかのソフトウェアは、CentOSのデフォルトのリポジトリにはなかったので、リポジトリを追加したり手動でダウンロードしインストールしました。

  • ruby
  • ruby-devel
  • rubygems
  • rails
  • httpd
  • php
  • mysql
  • passenger

なお、Railsを公開する方法はいくつかあるようですが、今回は、Apache上でRailsを動作させるPassenger(mod_rails for Apache)を利用することにしました。

slicehostは評判通りドキュメントが充実していたため、特にhttpdやpassengerの設定をする際に助かりました。ただ、何カ所かドキュメントの情報が古いためか、CentOS 5.4に対応していない箇所もありました。

これまでwebサービスを開発する際に、クライアントサイドにFlash、サーバサイドにColdFusionを用いることがほとんどでしたが、趣向を変えてRuby on Railsでの開発も検討しています。その準備として、Rubyの入門書として評判の良い「初めてのRuby」をを読み終えたので、簡単に読後メモを記載します。

まず、著者も述べているように、本書はプログラミング経験者を対象にRubyの文法や文化を記載しているため、今の私にはちょうど適した内容・レベルでした。私自身のオブジェクトプ指向ログラミングの経験は、ActionScript2でのものしかありませんが、それでも本書は十分読みやすかったです。

ただ、Rubyの文法が、これまで慣れ親しんできたActionScript2とはかなり異なるため、Rubyを使う時はしばらくとまどいそうです。Rubyの構文で特に印象に残ったのが、「3.times do 〜 end」のように数値もオブジェクトとしてメソッドを持つ点や、インスタンス変数は@から始まる変数名をつけると言った変数名規則、モジュールの役割、と言った所です。

また、本書でも触れられているように、何らかのアルゴリズムを説明する際に、「おまじない」の記載が少ないので、アルゴリズム教育には向いてそうですね。その一方で、FlashやVisualBasicを用いてプログラミング教育をする時とは異なり、視覚的な成果が見えにくいので、授業でRubyを取り上げるときには、学習者への動機付けが大事であるように感じました。

初めてのRuby
初めてのRuby
posted with amazlet at 10.01.11
Yugui
オライリージャパン
売り上げランキング: 79413
おすすめ度の平均: 4.5

5 初めて Ruby を触る人へ
4 タイトル以外は5つ星
5 良書。但し要他言語の充分な経験
3 初めてじゃないRuby
5 タイトルに難あり