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