RailsのStreamlinedアナウンスから面白いことに!

2006/08/18 22:57

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

誤読に対していただいたコメントや、 喧嘩とかして欲しくないですけどね…(Usa*Usa日記) というエントリに、またまた勝手に調子づいてしまっていた ことに気づきました。一部訂正等の修正を入れました。

会社で同僚とわーきゃー言っている気分で書いてしまうことがよくあるので、気をつけないと。。。

Railsの blogに必見のエントリー が。

エントリー自体は、RailsのAjax ScaffoldをベースとしたDjangoのadminライクな Streamlined に関するアナウンスなんだけど、コメントにDjangoのAdrianが登場し「失望した!単なるコードジェネレーションに失望した!」とのたまった。

すぐさまDHHによる反論。DHHによれば、

Scaffold自体も入門用として存在しているだけでなれてきたらスクラッチで書くべきもの Scaffoldはあくまで「足場」 、StreamlinedについてもRailsのコアに取り入れるようなものではない、Djangoのadminのようにmodelにメタ情報を記述するのは気に入らないとのこと。

実は、streamlinedはコードジェネレーションだけではなく動的生成でも動作するらしい(本当のところどうなのかは知らない)。さらにさらに、 auto_admin というRailsのDjango adminを作っている人がいたり(見た目は完全にDjango)、Railsで作っているサイトの管理画面にDjangoを使っている人がいたり(RailsのmodelをDjangoのmodelにする補助スクリプトあり)と、面白いことになっています。

RailsのAjax Scaffoldはなかなか見た目もよくて、関連も扱えるようになってきて、もう少しでadminになるんじゃないかと思っていた矢先の出来事でした。

海外のRails使っている人って、Djangoがいいっていう人がいっぱいいて、でもRailsに取り込もうとしていたりしてなんだか面白い(デザイナー達はDjangoへ逃げたりしてるようですが)。

実際のことを言えば、Djangoを使っている人たちもRSJが良いっていったり、Scaffoldが欲しいって言ったりしています。Scaffold については本家のwikiに利用可能なコードがあります。もちろんAdrianはコアに組み込もうとはしませんが。

そうそう、「RailsのコアチームはRailsがこうあるべきっている信念が感じられるけどDjangoには感じられない」っていうコメントにAdrianが切れてるのも面白いです。

私的には

世のAjax必須ムードにもめげず黒魔術を取り除くのに半年かけるのがDjango

has_oneとbelongs_toを双方のmodelに定義しなければいけないDRYがRails

って思っているんだけど、Django派だからかな。

ん?いや?、業務にRailsつっこもうとしてるんですからRailsラブですよ、もちろん。

複数スキーマ&ロジック満載データベースが含まれる業務系にRailsつっこんだチームなんてそうは無いに違いないぞ。

だれか、Railsの偉い人、Streamlinedの使い勝手とか具体的な動作とか、解説してくださーい。Rubyのコードは追いたくないもんで。。。catwalkと比べてどうなんだろう?

が、ここで 大きな疑問 が。 なんでDjangoを使わないの!?

本が無いから?

Python系の特徴ともいえる理路整然としたドキュメントがありますよっ(完全なる日本語訳もあるし)!

つーか、 Pro Django 本出るし!

2006/08/19 20:04 by takahashim
えーと、Davidが言っているのは、「なれてきたらスクラッチで書くべきもの」ではなくて、あれは「scaffold = 足場」なのだから、そこから手を入れて作り上げていく、という意味ではないかと。
あと、入門用という言葉ですが、Rails的にはcode generationは単に生成できればよいというものではなくて、生成されたコードやそれをいじってできたコード自体が読みやすく書きやすいようになってないと、という含みもあると思います。なので、コード生成が「learning tool」になるんだと思います。
2006/08/23 12:59 by and
DHH は「Rails の scaffold は動的にも使えるよ」と言ってるだけで、streamlined が動的生成できるとは言って無いんじゃないでしょうか?

Prev Entry

Next Entry