May 03, 2008
twitterがrailsを使うのをやめるのかも?と言ったニュースがかけめぐったらしい。
TechCrunch Japanese アーカイブ » Twitter、Ruby on Railsを放棄か
すぐさまそれの否定意見は出たようだが、
Ruby, Rails Give Twitter Its Tweet
まぁ愚痴レベルでそんな話は出てもおかしくはないでしょう。例えrailsが身代わりだったとしても。
Webのエンジニアとしてどういうフレームワークが良いのかなって考えてみたが、railsがtwitter規模のサービスはターゲットではないという言葉をちらほら見ますが、それは技術選択としてrailsは使うのは間違いという話にしかならないので、railsが好きなら言ったらいけない言い訳だと思う。
そもそも、何で人気が出るかなんてわからないってのは、twitter自身が物語っているのだから。マネージャーが全然そんなことを聞いてなくて、後からエンジニアに、そんなことをさらっと言われた日には信頼を失います。
以下今、僕個人が現在、思っているフレームワーク感。
あくまで僕個人の好みね。
・SQLは手で書くのが一番。パフォーマンスチェックでexplainなどを実行するSQLがすぐ取得できないのは面倒。あと僕個人としては、JOINのコードはSQL書きながらが一番やりやすい。
・これ言うとキリがないかもしれなけど、一つのテーブルの基本的なCRUDのコード書くのなんて数分かからないよね。たかだかその程度をメリットとしてO/Rマッパーってのは重すぎね?
確かにJavaBeansは面倒だけど、ハッシュで取り回す型のない言語は、DBのスキーマの変更は強いし。(え、select * from を使うなって?)それもExcelで書いた表からBeansとhibernateのデータ生成して1ボタンで配置できればいいんじゃね?(これは言い過ぎだけど、それぐらいはやってもいいじゃん。)
・SQLインジェクションなどは人為的ミスで起きるので、プレースフォルダはあった方が良い。
・MVC、またはV+C+ハッシュテーブルを如何に簡単にハンドリングできるか?ぐらいのフレームワークは欲しい。
・テストはなくても良い。ロジックレベルのテストケース書くの面倒だけど、複雑なサービスなら必要なのかなー。やってることにもよるけど全体の90%はいらないんじゃない?いろんな条件のデータが一カ所に集まってくるようなところは必要かな。ソーシャルブックマークのブクマ処理とか、情報の入出力のフィルターとか例えばそういうとこ。
・1日でフレームワーク全体が理解できることと、いざとなった時にフレームワークを改造しても支障のないライブラリのありようってのは重要かも。railsって、インストールされるところじゃなくて、プロジェクトフォルダにごっそり持ってこれないのかな。ソースコードがそもそもよくわからん。(調べろって話ですね。はい。)
railsは、素敵な機能がいろいろ揃ってるし。何よりプラグインが素敵すぎると思ってます。だから使えるなら是非使いたい。
そこは、なんというかVB + ActiveXみたいな見方をしてるんですよね。VBと言う表現がRubyの人にとって心地よいかはさておき、VBが持つActiveXコンテナという糊のような考え方は凄いなーと思っていた方です。PerlのCatalystなんかもそういう感じだと思います。
まぁ、DBのmigrationあたりはなくても全然支障ないですけどね。どっちにしろさすがにDBのスキーマは別途管理してるわけだし。そんなにDBいじらないしね。
その分、フレームワークが複雑になってわかりにくいなぁと思ってる気持ちの方が強いですが、プロダクトの特性なので必要コストとして受け入れるべきだと思っています。
結果、なんだかをアップデートしたら、こっちが動かなくなりました、とかVBの悪いところみたいなのはrailsにもついてまわってるようですね。便利だけど、決して簡単なフレームワークではないですよね。
そんなこともふまえて、
もし、本当に本当にスケーラビリティのことがrailsというコードの集合体では重すぎるのであるならば・・・WebのロジックをC++で書くべきとは思わないけど、Webエンジニアとしては、できるだけプリミティブなコードの記述を書くことを避けてはいけないのかもしれない、と現在、思っています。
さぁどうなんだろう。
是非、twitterにはrailsで頑張ってもらって、ノウハウ集を出して欲しいですね。
個人的には、LLによる開発は職人芸に近い綱渡りを求められるのか、VBやOracleみたいになんかミドルウエアがうまいぐあいにやってくれて成り立つのかの分かれ道なのかなーと思って見てたりします。
Rails をプロジェクトディレクトリに置く方法はあります。rake rails:freeze:gems です。この状態で配布されているアプリも結構あると思います。
おお。そんなのが。
でも手元のmacで実行したらエラーが出た。
uninitialized constant Gem::GemRunner
しかも何かが書き換えられたらしく挙動が変わった。
Mac Book Proを買ってからrailsを一回も触ってないから鴨。
ご愁傷様(^^;
全部消して入れなおせば~
#人事
でも Rails なんてそんなもんでしょう。誰も何も保証してないんだし。
その点を考えると、「仕様を厳密に出来なくなるから」と Java のオープン化に慎重だった Sun の態度を保身だと揶揄するばっかりじゃダメだな、と思わなくもないですよ。
いや、最近、結構地雷踏んでる気がして、「これがオープンという価値か」と、ちょっと寂しい気持ちになっているところです。
変数名変わっててエラーするのにテストされないままリリースされてたりするとね、寂しい気持ちになりますよ。