パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Ruby on Railsは万能薬ではない」記事へのコメント

  • by Anonymous Coward on 2007年09月24日 10時18分 (#1223865)
    ・なんかコードが読みにくい。規約うぜぇ
    ・さくらインターネットとかロリポップなどのレンタルサーバーで(せっかく)作ったアプリを動かせない
    すいません、へたれですorz
    • 心配ありません。両方とも現在railsが全然流行っていない原因ですから。

      特に痛いのが2番目で、一応cgiとしても動きはするのですが、
      リクエストの度に膨大なライブラリを全て読み込まなくてはいけないので
      普通のPCサーバーだと2~3秒/reqくらいかかってしまいます。

      実用的な速度を求めると、fastcgiかwebrickかmongrelという選択肢に
      なるのですが、これらはプロセス常駐型なのでサーバー貸し切り型の
      プランでないと稼働させることができないんですね。

      rails自体の性能は、実行速度面でも開発速度面でも十分実用的なのですが、
      こうも導入障壁が高いと、そのうち新しく出た物に負けてしまいそうです。
      なんかいいアイデア無いものでしょうかね。
      --
      Lv5以下の社員全員にデスマーチ!
      親コメント
      • by Anonymous Coward on 2007年09月24日 14時12分 (#1223998)
        もともとCGIの起動コストが大きいのが難点なんだよね。
        それにデータも、いちいちDBやファイルに落とす義務があるよりは、メモリに持っているほうが楽なのだし。

        つまり常駐型に移行するほうが地球(?)に優しい。

        常駐型のプログラムを、いかに安全に(サンドボックスに押し込めて)実行させるか?という技術に、磨きをかけるほうが生産的だと思います。

        ーー
        あと有りえるとすれば、スクリプトの「コンパイル」かな。
        コンパイルといっても動的言語では機械語まで落とすのは困難だけども、少なくともAbstractSyntaxTreeにまで落としといてファイルにするだけでも、結構違うはずだ。

        そういえば、"J"Rubyの配布物には、ASTという拡張子のファイルが幾つか入っていますね…。

        あるいは、その裏返しとして、
        OSかWebサーバのほうが歩み寄るという手も有りますね。

        Qt/KDEで「C++アプリの起動時間を短縮」するために使われてる技術として、
        プロセスを起動し、内部の幾つかの関数ポインタテーブルとかを初期化した状態「で」プロセスを停止してメモリに放置プレイしておき、
        プログラムを使いたくなったら随時、その放置プロセスを「fork」させ、生まれたプロセスのほうを自分で使う、という方式。
        起動のコストを分割するわけですね。
        それと同じことをWebアプリでもやればいい。

        ただしこれにはCGIの起動を司るOSかWebサーバの協力が必要だし、
        アプリにも(外からforkのタイミングを指示するための)仕組みが居る。
        要はこれまた1つのフレームワークを成す必要がある。

        フレームワークといえば拒絶反応を示す人も居るけど、そういう人は考えてみて欲しいんだけど、たとえばCGIという仕組みだって、それどころかプロセス起動という仕組みだって、1つのフレームワークです。
        つまりこれは、素CGI(プロセス起動)、FCGI、mod_hogeなどなどといった「幾つかのフレームワーク」の、性能競争なのであって、フレームワークの「有無」の競争ではない。

        それよか不思議なのは、
        mod_hogeとかの常駐型を許さないレンタルサーバが、
        同じ常駐型であるPHPは許すって点です。
        要するに「常駐型は危険」という切り分けは迷信でしかないということ。
        親コメント
        • by mojalor (16164) on 2007年09月24日 19時06分 (#1224132)
          それよか不思議なのは、
          mod_hogeとかの常駐型を許さないレンタルサーバが、
          同じ常駐型であるPHPは許すって点です。


          mod_phpはインタプリタが常駐するだけで、各種シンボルテーブル等は
          リクエストの度に初期化される(リクエスト終了時に必ず開放される)ので
          mod_xxx経由でスクリプト自体が常駐する他言語のApacheモジュールとはまた勝手が異なります。

          また、PHPのアドバンテージとしてCGI/FastCGI、Apache他のサーバモジュール、
          どの環境でも同じように動くという点もあります。
          CGIの場合、httpdの設定によっては正しいPATH_INFOを取得するためにphp.iniの設定を
          変えないといけないこともありますが、スクリプトは全く同じものが利用できます。

          言語自体の良し悪しとか速い遅いではなく、開発環境と実行環境の差違を
          あまり気にしなくてよいのがPHPが広く使われている理由ではないかなと。
          親コメント
          • あと、ドキュメント。
          • >開発環境と実行環境の差違

            それはまさに言語そのものも含めたフレームワークがラップしてくれる(とうれしい)部分ですよね。

            たしかRailsにも、開発環境と実行環境の差を埋めて、それどころか切り替えもワンタッチで出来るっていう機能があるのでしたね。たしか単体テスト用/結合テスト用/運用用の3つの環境という単位で、WebだのDBだのの設定を一撃でチェンジできる機能でしたね。

            これに限らずフレームワークってのは、「ずいぶん思い切った割り切りだな」という印象を受けることは、多いと思います。
            そして、「でもこれくらいなら確かに現実的にちょうどいいんだよな」と思われればそのフレームワークは成功。

            >各種シンボルテーブル等はリクエストの度に初期化される

            そうなんですか。

            すると「オブジェクトをバインドした変数」もリクエストごとに揮発してしまうのですね?だとすると、リクエスト単位を越えて保持したい情報の保持手段が面倒でしょうね。DBに格納するのが似合うデータもありますが、なんだか違和感を覚えるデータも結構ありますから。
      • そうすると、AmazonのEC2 [amazon.com]は結構いい選択肢かもしれないですね。 サーバは貸し切りで値段もそんなに高くないし。
        親コメント
      • >実用的な速度を求めると、fastcgiかwebrickかmongrelという選択肢に
        >なるのですが、これらはプロセス常駐型なのでサーバー貸し切り型の
        >プランでないと稼働させることができないんですね。

        一応共有サーバでもfastcgiを提供してくれているところはあるのですが(例えばDreamHost)、すると速度はそこそこ良いとしてもメモリ不足に悩まされることになるんですよね。貧弱な環境ではRailsはそっちの方にも気を配らなければならなくて大変です。

        ActiveRecordを使ったRails類似の極小フレームワークであるcamping [whytheluckystiff.net]もメモリ使用量の観点からはあまり改善されていないらしく、もしかしてRailsというよりはActiveRecordを使用すること自体がそれなりにメモリを消費してしまうのかも知れません。Railsは優れたフレームワークであると思いますので、この点だけなんとかならないかなぁと思います。
        親コメント
    • 規約が厳しいのがRoRの特徴ですよ。
      名前通りレールに沿ったものを作るときは簡単。
      レールから外れないように造るのが基本なのでは。
      このあたりはPerlのCatalyst(なんでも自由)とは違います。

アレゲはアレゲを呼ぶ -- ある傍観者

処理中...