TOP
>
システム開発
> 内部の動作
Ruby on Rails入門
第5回:Ajaxアプリケーションの作成
著者:
アスタリクス 大西 正太
2006/6/21
前のページ
1
2
3
4
次のページ
内部の動作
JavaScriptを読み込んだ以外は、ビューを1行変更してコントローラに1行追加しただけで、フォームがオートコンプリートに対応してしまいました。
このように簡単にできてしまうのはなぜでしょうか。そこで、次にRailsが内部でどのように動いてくれているのか簡単に解説していきます。
ビューの動き
ビューでテキストフィールドを「text_field_with_auto_complete」タグに書き換えることでCSS、オートコンプリート表示のDIV区画、Ajax通信処理などが自動的にレンダリングされます。JavaScriptを一行も書くことなく、タグを書き換えること以外に一切の記述は不要です。
ヘルパーメソッドは通常のHTMLに極めて近いタグ形式で記述されているため、段階的、部分的にAjax化するという要望にも応えやすく、Ajaxの特徴を殺すこともありません。
コントローラの動き
コントローラに「auto_complete_for :contact, :name」と宣言的に記述することで、オートコンプリートの表示項目にDBを検索するメソッドが動的に追加され、クライアントサイドと連動します。
重要なのはRailsではメソッドが実行時にメモリ上で「動的に」生成されていることです。JavaEEなどのように、実行前にツールを用いてコードジェネレートする必要がないのはこの理由によります。
動的にクラスへメソッドを追加できるのは強力なリフレクション機構を持つRuby言語自体の特性です。Railsではオートコンプリートの他にも、この機構を活用して驚異的なコード量削減を実現している箇所が多くあります。RailsがJavaでもPHPでもなくRuby上に構築されて登場した理由はこの辺りにあるのかもしれません。
図2:オートコンプリート内部の動き
(画像をクリックすると別ウィンドウに拡大図を表示します)
前のページ
1
2
3
4
次のページ
著者プロフィール
株式会社アスタリクス 大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(
http://rubricks.org/
)のコミッタ。
INDEX
第5回:Ajaxアプリケーションの作成
はじめに
Ajaxの実装
内部の動作
Ajaxのテスト