質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

7820閲覧

ruby on railsは基幹・業務システムなどの複雑なインテグレーション処理が向いてないのでしょうか

sprite

総合スコア63

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2015/12/11 07:43

現在、ruby on railsを勉強中なのですが、
この言語では、基幹・業務システムなどの複雑なインテグレーション処理は向いていないのでしょうか

railsではURLに対して、テーブルを決定しているO/Rマッピングがあるため、単一テーブルのQUADは簡略化されています。

しかし、例えば一つの機能から複数テーブルの結合結果を表示したり、
ワークテーブルの作成、ループ処理からの更新・削除処理などは
O/Rマッピングでは向いていないように思えます。

こういった分析・インテグレーションを行うWebサイトでは
他の言語で行ったほうがいいのでしょうか

また、他の言語でおすすめのものがあれば教えてください。

オブジェクト指向で、今後需要が伸びていキそうなものがあれば
そちらも勉強したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Rails云々の前にMVCフレームワークを適用するのが妥当かどうかがあります。MVCフレームワークの枠組みに当てはまらないようなシステムにRalisを使うことは無意味ですし、Rails以外のMVCフレームワークでも無意味です。そして、他のMVCフレームワークにできてRalisだとできないことはたぶん無いです(ただ、全く逆も言えます)。Railsだと実装が難しいと思うなら、それはMVCフレームワークを使おうとする時点で間違っています。

あと、Railsはレールの上は走りやすいだけで、レールから外れた処理ができないわけではありません。手動でいくらでもカスタマイズはできます(内容によってはRails本体のハックも必要かも知れませんが)。また、複数テーブルの結合も、テーブル同士の1対1や1対N、N対Nを結べるので結合された状態を簡単に取得できます。コントローラは別途作れるので、一括処理とかも何でもできます。ただ、これは他のMVCフレームワークにも言えることなので、Rails特有のことではありません。

次に、Ralisでは駄目だからRubyは駄目というわけではありません。Ralisでは難しい物でも、同じくRubyで書かれている優れたWebフレームワークであるSinatraでは簡単に作れる場合もあります。Ralisが駄目だから、他の言語がいいという結論を出すことはおかしいです。

最後に、Ruby自体をどうしてもやめたいようですので、Rubyの弱点とそれを補う言語は無いかと言うことについて述べます。Rubyは

  • 遅いです。
  • メモリが大好きです。
  • マルチスレッドできるといいながら、一部の例外を除き、常にコア一つしか使いません。
  • 動的型付けなので、一定規模以上になるとちょっと大変です。
  • 間違っていても実行するまでエラーになりませんので、自動テスト必須です。

多くのアクセスがあり、処理速度が求められ、応答時間がシビアな基幹系では厳しいです。逆に、特に時間的制約があまり求められない管理者のタスク処理には向いています。chefやvagrantはRubyでできていますし、DSLとしてRubyを採用している例も見られます。また、(実行速度は遅いけど)開発速度が速いため、スタートアップのプロトタイプ作成にも向いています。初期のTwitterがRuby on Ralisでできていたのは有名な話です。処理の規模が小さく、シビアな速度が求められなければ、基幹・業務システムに使うことは十分できます。

さて、データ規模が大きくなり、世界中から多くのアクセスがあり、それでも応答速度を落とさないようにしなくてはならなくなったとき、現在のRubyでは残念ながら限界があります。そんな時に採用すべきだと私が注目している言語は二つです。

  • Go
  • Scala

Goは並列処理が書きやすいと言われています。Rubyではいくらコアを増やしてもコア1個しか使ってくれませんが、Goであればマルチコアでもその実力を遺憾なくこなせるでしょう。並列処理がうまくこなせるようになれば、それだけ多数のアクセスをさばける・・・はずです。

次のScalaはスケールアウトを意識している・・・らしいです。遅かったら、サーバを単純に増やせばいいのです。また、基幹・業務システムで実績が高く、安定性があるJavaVM上で動くというのも重要です。実行速度もJavaと同じぐらいで、大規模でも十分耐えられると思っていただければと思います。(ただ、コンパイルはめちゃくちゃ遅いです)

以上になりますが、Rubyは何でもこなせるすごい奴では決してないです。でも、すぐにできなくなるような駄目な奴でもないです。大規模だから駄目というわけではなく、そこそこの規模でも十分こなせます。GitHubのシステムは未だにRubyを使っているそうです(今もそうかは資料がみつからなかったけど)。でも、Twitter並にユーザー数が増えると無理という感じでしょう。

投稿2015/12/11 10:41

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どんな言語やフレームワークでも「複雑なインテグレーション」を実現するにはそれなりの工数がかかります。それなりの工数がかかる規模のプロジェクトでは人員確保が重要課題です。そうなると、特に理由のない限り技術者の多いJavaとSpringフレームワークなどを使っておけということになります。

10年先のメンテナンスに責任を持てる場合は何を使っても結構です。

投稿2015/12/11 10:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問