ムラサメ研究ブログ

主にゲームやプログラミングのログ

Railsはじめました

はじめに

私 みやたけゆき がRailsを始めるなんて冗談だろ?? 確かに私は なんでもかんでもRailsの風潮には否定的であるが 正しくRailsを使うのは ありと思ってる

RailsというかRubyには根本的な弱点 遅いという問題があるのに 速度が必要なリアルタイム処理にRailsを使ったり 遅いならサーバ台数を増やせばいいじゃない? それランニングコスト増えてますよ! など 気に入らない事も多い

サーバ台数が増えれば当然マシン代も増えるが、管理コストも増える事を忘れてはいけない 例えば以前 Railsで100台のサーバが必要だったサービスを C++で書き替えて 1台で余裕になった事もある

そんなわけで Rails2日目ですが Railsの良しあしを今の段階でかいていく

論じない事

Rubyは書いていて楽しい言語

楽しさは人それぞれであるし、私はC++が一番手になじみ楽しい それになにより、プログラマが楽しいからという理由で言語を選択すべきではない

Rubyは日本発だ

私は人並み以上に日本が好きだし愛国心はあるので、Rubyが世界一の言語になってほしいと願う ただ、もしRubyが世界一の言語でない場合は、その言語にこだわり 世界一のサービスを作れないというのは 日本を愛するものとしては 悲しい 世界一のサービスを作るためには、国産だからという理由で使うのは 真の愛国心ではない

日本語情報が多い

英語読め。 PythonだってJavaだって日本語で十分情報がある

Railsエンジニアは多いから集めやすい

今回は 派遣会社目線ではないし、それを言うならJavaエンジニアの方が集めやすいとおもわれる

スクリプト言語の功罪

私はコンパイルできる言語の方が事前にエラーを検知できるので好きだが 単体テストかけばいいじゃん という宗派もあったりで スクリプトの功罪については直接は語らない 同じく GCについても

デメリット

あえてデメリットから書く

遅い

Rubyの最大の弱点で、言語仕様みるかぎりどうしようもない。。。 mrubyとか方法はあるんだろうけど 根本的に遅い スレッドセーフになってないのでネイティブスレッド基本使えない 動的型付け言語 演算子オーバーロードできたり 最適化しにくい などなど 私にとっては この時点でかなり厳しい

コードに柔軟性が高い

シンタックスシュガーが多く、同じ処理を何通りにも書くことができる これをコード書くのが楽しいと表現する人もいるが ビジネスで考えるとPythonのように、一通りの書き方しかない方が良いにきまっている 特に Perl時代のPerl風構文が残っていると殺意がおこるひとも多いだろう

Railsの学習コスト

Railsはかなり大きなフレームワークのため学習コストが高い

メリット

言語が比較的簡単

といってもC++との比較 JavaPythonと比べたらどうなんだろうか Pythonとあまり変わりないきがする

Rails Console

便利ですね Pythonにもあると思うけど

総合評価

私がRailsにあまり好意的でないのは上でもかいたが とにかく 実行速度が遅く、その他はPythonと変わらない PythonにもDjangoというWebフレームワークもあるし コードの難易度も変わらないと思う

よくRailsは開発速度が速いというが、実際は Pythonで書いても同じだと思う Rubyの方がコード量が少ないというが、タイピングよりアルゴリズムを考える方が重要なので たいしたメリットではない Javaのようにコード記述量はIDEでサポートすればいいわけだし

ただ 現実では日本ではスタートアップのモックアップとしてRailsが好まれるので モックアップスピードとしては速いのだろう ただし、海外ではPythonが多いので、たいして変わらないと思われる しかしRubyは実行速度が遅いため、スケールしたら他の言語で書き直す事が多い さらに Pythonは同じ機能は一つの書き方しか出来ないのでメンテナンスに有利 そういうのを考えると、たいして開発速度かわらないのなら Pythonで作るべきだと思うし GoやJavaC#を極めて ライブラリを作り開発した方が良いと思う

それに そもそも BaaSサービスを使って作る方がモックアップ速いので 作り直し前提であれば BaaSを使いこなすのも良いと思う

そんなわけで、やはり 私はあまりRailsに対して必要性をあまり感じていない PythonとかGoでいいじゃん!

ただ、mrubyなど速度の速いRubyにたいしては期待しているが、使ってないからまだわからず