2012年07月29日

なぜruby以外のrailsは流行らなかったのか

ちょっと昔に流行ったアスペクト指向っていうプログラム形態に今更ながら心惹かれてます。
ていうのもログ出力をいちいち考えるのがめんどくさいんすよね。主たるプログラム自体は本能に赴くままにコーディングして、
しっかりしたログは後から付け足したい。そういう時にひょっとしてコレ使えるんじゃねえの?って思って
ひとまずAspectJの入門サイトを色々めぐってるんだけど。

なんかAspectJ以外に目立つものがない

あれ?Rubyは?JavaScriptは?C#は?
どうも打ち捨てられた概念のような気が・・・Aspect.NETみたいなのは、どうなの。ないの。
一見して便利そうなのに・・・
と思って調べた所、別のこと書いてるページにヒットしてみた。
 
 
http://d.hatena.ne.jp/fromdusktildawn/20060216/1140064918

↑俺の今の話題に関連する部分としては、.netのメタオブジェクト機能を使えばアスペクトが実装できるよっていう話らしいんだけど
よく記事を見てると6年も前の話だな。この頃から.netは随分様変わりしてるだろー。
それでもAspect.netがないってことは、やっぱりあんま流行らなかったんだな。

引用元の話の本筋が気になった。railsのようなアーキテクチャはメタオブジェクト(リフレクションのことかな?)を利用できる言語全てで実装できるので、そのうちrails以外のフレームワークが現れて陳腐化するだろうというお話だ。
これ、現状見てもうまく当てはまらないというか、一時期railsの他言語実装はいくつか現れたけど、結構消えていったよね。
※CakePHPはちょっと残ってるのかな?

話の組立は悪くないし、6年前の予想を現状の実績で批判するのはあまりにも可哀想なんだけど、じゃなんで引用元みたいにrailsは陳腐化しなかったんだろう?っていうのがふと思いついた疑問なわけだ。理論としては特に問題のない話をしてるよね?

いまいち調べきれないので、ここで俺の少ない知識を使った推測を垂れ流す

特化していない言語で無理矢理実装しようとしている

原因の一つとして、いや頑張れば使えるけど書きづらくない?っていう記法を使ってしまっているという話があるかも。
リフレクションについてはrailsのユーザ側はほとんど使わないにしても、
クロージャをふんだんに使ってDSL風に書くっていうのはrailsのそこかしこで行われている。
これ、C#のクロージャで実施するのは相当つらいんじゃないだろうか。

もっともDSLが要求される場面(たとえばmigrationとかよ)では専用の言語を作ってしまうっていうのもできたと思う。.netでは。なんせマルチ言語だし。

あと、特にPythonとかは言語仕様としてブロックをインデントで表現してしまっているんだけど、HTMLテンプレートではどうすんだろ。
常にHAMLみたいにHTMLとは大違いな言語で作ってるの?教えておじいさん

一番流行っているところにみんなが集まってしまう

真っ先にこういうフレームワークを作ったのがrailsなんで、先進的な機能がすべてrailsに集まってしまったという話。
うちのブログでも前に書いてたかと思うけど、よりよいcssやjsとしてのscssとcoffee-script、高速HTTPサーバのnginx、テスティングフレームワークを超えて、仕様記述として使われようとしているrspecやcucumberなど
Webフレームワークとしてのrailsというより、railsを支える周辺技術がどんどん進歩してrails用に提供されている。

これって以前はJavaにすべてが集まっていたようなもので、やっぱり流行りの所はエネルギーが高いので、智慧がそこに集まってしまうんでしょう。
お気に入りの言語を盛り上げようとして頑張る一部の人も居るかもしれないけど、それはかなり元気を消耗する行為なんで、
特にお気に入り言語がなきゃ、自然に一番人気に集まるよね・・・

引用元の人は、将来的に.netが流行ると踏んでこういう記事を書いたのかもしれない。だが現状としてはコレ。むしろ今後はJavaScriptの方が流行るんでは?

別に他言語に実装しなくても・・・

上2つの論点とつながるんだけど、無理して他言語にrailsを実装してもパワーが分散されるだけなんで、
自分のお気に入りのVMにrubyを乗っけたほうが早いんじゃねえの?っていう考えが出てきて、他言語実装がナイのではないかと思った。

これ特にC#やJavaにrailsがない原因だと思うんだけど、自分の過去資産と連携したきゃIronRubyやJRuby使えばいい話だよね。
あえてC#で実装したいのだったら、C#でもできるよ!じゃなくてC#じゃなきゃコレができないよ!っていうものが必要だったんだと思う。

schalaやらnodeやらがrailsの隙を縫って流行ってるのは分散処理とスケーリングっていうrubyではなかなか手が出せない領域を攻めてるからでしょう?それがなかった。きっと。

いや、最終結論はこれだな。〜でもできる、ってだけだったら、流行を覆すことはできないということでは。オンリーワンが大事だよね!JPOPの歌詞にも使えそうないい結論だ。

とはいえ、引用元の人は6年前の情報だけで語っているので、その時はまだrailsにこんなに才能が集結するなんてわからなかったでしょう。
むしろあの時点でrubyの言語としての優位点はリフレクションが容易にかけるってくらいなものだっていう点に気づいたのが、すごいと思うっすよ。

最初の話題に戻る

さて、そういうわけでなぜruby以外のrailsが流行らなかったかの結論は俺の脳内では解決した。が、
そもそも俺は何がやりたかったんだっけ。アスペクト指向だったっけ。

あれ、なんでアスペクト指向はC#で流行らなかったの?オンリーワンになれない他のものがあったの・・・・?

教えておばあさん
ラベル:Rails
posted by LoyalTouch at 07:46| Comment(0) | TrackBack(0) | Webプログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック