RubyとPythonについて考えてみました

ハセテツは複数の言語を状況に応じて使い分けてきましたが、最近のWeb系開発はPython(+Django)がメインになってきています。

ちょっと前までRuby(+Rails)だったのですが、いろいろと考えるところもあり、乗り換えました。その乗り換えた理由をまとめてみようと思います。

まとめてみたら「やっぱりRailsじゃね?」となるかもしれません。w

Ruby(+Rails)

  • Rails便利すぎる。
  • コントローラとモデルが別々のファイルになってくれるのはソースが追いやすい。
  • Railsを通さない画像やCSSはpublicフォルダに置けばよいのはわかりやすい。
  • urlディスパッチャーがいまいち使いにくい。(知らないだけかも)
  • APサーバはmongrel一択?
  • VirtualHost使おうとするとApache+Passenger(mod_rails)だが、これが重い。(チューニングで速くなるのかも)
  • というか、Railsがそもそも重い。
  • ちゅーか、Rubyが重い、遅い。
  • PassengerはWindowsじゃ動かない。
  • mongrelもPassengerより激速軽快かというと、そうでもない。
  • gem便利すぎ。
  • ワンライナで書く人が多くて、Perlとおなじ匂いがする。

ハセテツが使っていたRubyは1.8で、速くなったといわれる1.9には触れていないのでもしかすると古いのかもしれません。でも、Railsって1.9には対応してないですよね?(本日現在)

Python(+Django)

  • Django便利すぎる。
  • 日本語の書籍、情報が少なすぎる。(ハマるとキツい)
  • modelが一枚のファイルなので、大量のmodelがあると可読性が激しくダウン。
  • viewファイルをフォルダで分けたくても、アプリケーションフォルダ直下以外にviewファイル置くなら「sys.path.append」しないといけない。(違う?)
  • urlディスパッチャーのカスタマイズが超便利。
  • mod_pythonが使えるので、Windows環境だろうがLinux環境だろうが気にせずVirtualHostが使える。
  • 速い。
  • 日本語大変。Shift_JIS怖い。
  • easy_installでパッケージのインストールは楽だが、管理が悪夢。

メリットとデメリットが入り乱れました。見難くてすいません。

結局フルスタックのフレームワークということで、DjangoとRailsに関しては一長一短だと思います。個人的にはRailsの方が良くできてたかなぁと。

最終的に、「RubyonRailsは重い」というオチになってしまうのです。Rubyも、Railsも、です。ただ、これはRuby1.9が実は劇的に速くなっていて、1.9に対応したRailsがリリースされたらすべて解決されるのかもしれません。

それでも、いまのところPythonの軽快さ、シンプルさに満足しています。あと、GAEでPythonが動くのもいいですよね。

「Googleが導入した言語」というのがハセテツ的に琴線に触れたのかもしれません。

ミーハーですいません。w

「RubyとPythonについて考えてみました」への6件のフィードバック

  1. >> 日本語の書籍、情報が少なすぎる。(ハマるとキツい)
    Railsには敵いません。
    >>modelが一枚のファイルなので、大量のmodelがあると可読性が激しくダウン。
    appを分ける。ファイルを分けてimport
    >>viewファイルをフォルダで分けたくても、アプリケーションフォルダ直下以外にviewファイル置くなら「sys.path.append」しないといけない。(違う?)
    views.pyなんて不要です。urls.pyのurlpatternsに関数が渡されていればいいだけなので、どこに書いても、どれだけ分けてもOKです。
    >> mod_pythonが使えるので、Windows環境だろうがLinux環境だろうが気にせずVirtualHostが使える。
    modwsgiがおすすめです。さらに言えばnginx + gunicornとかお勧めです。
    >> 速い。
    そうでもないです。
    >> 日本語大変。Shift_JIS怖い。
    もうちょい具体的に書いてくれるとフォローできます。
    多言語化はよくできているとおもいます。
    >> easy_installでパッケージのインストールは楽だが、管理が悪夢。
    virtualenvを使ってみると悪夢から楽園へ飛べます。

    返信
  2. コメントありがとうございます。

    >>views.pyなんて不要です。

    python_pathが通ってないとこにおいたら「そんな関数ないです」って怒られたんですよね。。。書き方間違ってたかな。もうちっと調べてみます。

    >>modwsgiがおすすめです。

    mod_wsgiがお勧めな理由ってどのへんでしょうか。

    mod_pythonだろうがmod_wsgiだろうが、特にこだわりは無いのですが、枯れていて、情報が多くて、安定していてくれればいいです。パフォーマンスに差はあまりないと聞いていますが。。。

    返信
  3. >>python_pathが通ってないとこにおいたら「そんな関数ないです」って怒られたんですよね。。。書き方間違ってたかな。もうちっと調べてみます。

    僕は__init__.pyを設置し忘れて同じようなことになることが多いですw
    いかがでしょう?

    返信
    • コメントありがとうございます。

      もしかして追加したフォルダに__init__.pyおいておけばpython_pathの追加は不要ってことですか?
      うおぉぉ、それは知らなかった!

      早速試そう。

      返信