InfoQ

News

Rails Cells: Railsのコンポーネント指向開発

作者 Mirko Stocker, 翻訳者 長部 広太 投稿日 2008年5月28日 午前12時5分

コミュニティ
Ruby
トピック
Webフレームワーク,
Object Oriented Design
タグ
Component Based Architecture,
Rails Engines,
Rails

Rails Cells(サイト・英語)の目的は、コンポーネント指向開発の利点を、Ruby on Railsのウェブアプリケーションプラットフォームにもたらすことだ。Cellは、結合したビューを備えた軽量コントローラの一種であり、ビューをウェブサイトに組み込むことが可能だ(SmalltalkのウェブアプリケーションフレームワークSeaside(サイト・英語)と似ている)

いったいRailsの既存機能のどこに問題があるのか? このことに関してMike Pence氏は、自身のブログ(source)で以下のような意見を述べた。:

Railsプロジェクトの多くが、ギャップを埋めるために before_filters を有するpartialに頼っているが、そのようなアプローチは問題だ。Shared partialsは、初期化コードを書いた application_helper の数を増やしてしまう。そして、Shared partialsは、自身より先立つコントローラに定義されたメソッドに定義されたインスタンス変数の中身を全て見ることが可能なので(不幸なデザイン決定だが)、Shared partialは、初めにShared partialをホストしたコントローラ、初めにShared partialを含んだビュー、そして依存しているヘルパーへの依存でいっぱいになる傾向がある。私の経験からすると、partialsが織りなしている依存性のウェブからpartialsを取り出すために、大量で手間のかかるデバッグなしで簡単に共有できるpartialsを多く見つけることは珍しいです。

コントローラとビューの関係に反して、コントローラのインスタンス変数は、セルと自動的に共有されないが、明示的にセルに渡す必要がある。これによって、Cellsが特定のコントローラから独立し、従って再利用可能かつ共有可能となる。

我々は、Cellsの開発者の一人であるNick Sutterer氏に話を聞き、Cellsの開発状況に関して質問を投げかけてみた。 

我々はCellsの改良版に取り組んでいるが、昼間の仕事がかなり忙しい(オープンソース開発者の典型的言い訳だが)幸いなことに、コミュニティの中にはパッチを提出してくれる人もいれば、ドキュメント化を手伝ってくれる人もいます。特にMike Pence氏にはいろいろ手伝ってもらっています。Cellsの1.0リリースで、我々は、Cellsが、使うのに便利であること。そして注目されるようにした。Cells1.0のAPIは非常に安定しており、近い将来大きく変わることはないであろう。

次のバージョンは、完全にRails2.0互換となるだろう。ヘルパーにいくつか問題があります。もう一つの問題は、CellsでのEnginesプラグインのサポートです。Enginesプラグインは、Rails自身のプラグインフレームワークを強化し、コントローラ、ヘルパー、モデルのプラグイン内での共有化を簡単にします。個人的に、Enginesプラグインが好きだ。James、素晴らしい仕事をしているね!そうは言っても、Enginesプラグインのサポートのことを心配している人もいるようなので、Enginesプラグインのサポートは、ユーザが選べるようにしなくてはいけません。CellsをEnginesプラグインに入れるというアイデアが本当に好きだ。そのアイデアによって、アプリケーションのモジュラリティを最大にすることが出来ます。また同様に、AJAXと組み合わせて使った際、Cellsの偽造保護に問題があります。Cellsは、AJAXと一緒に使うのに最適なので、次のバージョンで、この点を修正する予定だ。約束します。

我々は、Cellsが、Railsコミュニティにどれぐらい採用されているのかという点について興味があった。

Railsコミュニティには、Cellsに興味がある者もいます。プロジェクトにCellsを取り入れる方法を尋ねるのに、IRCチャンネルに来る人やメーリングリストを利用する人もいます。Cellsは、Railsに新しいコンポーネント指向をもたらします。しかし、開発者が、Cellsの力を理解し、より大きいなアプリケーション開発に、Cellsを使うまでしばらく時間がかかるのは確実です。私の共同開発者であるPeter Box氏は、Cellsの開発に参加し、formbuilder(source)というプロジェクトをCellsで実装しました。私は、Cellsをベースにした次回リリース予定のApotomoプラグイン(source)の開発に忙しいです。Apotomoプラグインは、Railsにステートフルなコンポーネントをもたらします。そして、ステートフルは、今話題だ。Cellsを使った注目に値するプロジェクトになるだろうと確信している。もしかしたら、Cellsのページに、サクセスストーリを書くべきかもしれない?

Cellsに関してより詳しい情報を得るには、Cellsのウェブサイト(サイト・英語)かCellsのドキュメント(source)を見て欲しい。

Cellsを使ったことがありますか?Cellsの成功事例を知っていますか?

原文はこちらです:http://www.infoq.com/news/2008/05/cells-components-for-rails

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。

ソフトウェアのリーン思考入門

これは、InfoQ Chinaのアジャイル編集者、Jacky Li氏によるリーン思考とリーン思考をどのようにソフトウェア開発に適用するかについての入門です。

Java 6のスレッド最適化は実際に動作しているのか?

2つのパートからなるこの記事では、シングルスレッドベンチマークの助けを借りて、Java 6のスレッドのパフォーマンスに関する疑問に答える試みをしようと思います。

平鍋氏のGordon Pask Award受賞スピーチ

Agile2008において、Gordon Pask Awardの授与式が行われ、その一人として、チェンジビジョンの平鍋氏が受賞しました。本賞は、毎年、アジャイルコミュニティで定評のあるリーダーだけではなく、新たなリーダーになる可能性のある者に贈られるものです。InfoQでは、授与式のスピーチを動画にてお送りします。

Linda Rising氏による「誰を信頼しますか?」

Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。