DIVE INTO CODE

2019年04月05日

フレームワークとしてRuby on Railsを使うメリット・デメリット

Aws4 request&x amz signedheaders=host&x amz signature=9e496205259931a4f2759247a3e47c6b456a958f8b02a7689390c99fa344eb60

こちらの記事では、Ruby on Rails(ルビーオンレイルズ)の実装上、学習上でのメリット・デメリットをご紹介していきます。また、Rubyで作られているRuby on Rails以外のフレームワークについても解説します。

【こんな方におすすめ】
・未経験からのエンジニアを目指している方
・プログラミングスクールを検討している方
・Ruby on Railsの理解を深めたい方

【目次】
1.Ruby on Railsの実装上のメリット・デメリット
2.Ruby on Railsの学習上のメリット・デメリット
3.Ruby on RailsよりシンプルなフレームワークはSinatra

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

Ruby on Railsの実装上のメリット・デメリット

Ruby on Rails(ルビーオンレイルズ)を使うメリットとデメリットを教えてください。

どういう観点で捉えるかで話が変わりますので、 まずはその点を押さえた上で、フレームワークとしてRuby on Railsを使うメリットとデメリットについて話していきましょうか。1つ目の観点は、実装する上での話です。 2つ目の観点は、学習する上での話です。
Ruby on Railsの実装上のメリットは、他のフレームワークと比較して作り込み具合が高いことです。システムを作る上で色々な機能がありますし、何でも揃っていますのであっという間にシステムを開発することができます。
Ruby on Railsの実装上のデメリットは、色々な機能が入っているので使いこなすのがなかなか難しいと言われています。重厚になりすぎてしまうということです。でも、それが足かせになるということはないと思いますので、デメリットに関してはそんなに気にしなくて良いですね。
プログラムを書く人からすると不要なモノを作らないというのが原理原則にあるので、余計なモノがあるというのはあまり良いことではないんですよね。仕事でも同じだと思うんですが、言ってもいないことをしてきたら「無駄になるからやめて」って言うじゃないですか。それと一緒です。「必要なモノだけをやろう」という考えからすると、Ruby on Railsは重厚になり過ぎるという可能性がありますね。

なるほど。余計なモノがあったり、余計な機能を作ってしまったりするんですね。

余計なモノがあるというのは、厳密にいうとプログラムの文字量やファイル量が多いということですね。その分、処理のスピードが遅くなる可能性があります。本当に厳密な話ですけどね。もっと簡単なインターネットから情報を持ってくるだけのシステムを作りたい時に、何が何でもRuby on Railsで作る必要はないです。

Ruby on Railsの学習上のメリット・デメリット

学習上のメリットとデメリットも教えてください。

学習上のメリットはモノをあっという間に作れるので達成感を感じやすいです。ただ、「何かわからないけどできた!」ってよく言われるんですよ(笑)

ははは(笑)そうなんですね(笑)

「Ruby on Railsはこんなシステムが作れるんだよ、何かわからないけど」って感じですね(笑)

何でできたかは分からないんですね(笑)魔法みたいですね!

メリットは簡単に作れてしまうので達成感を感じやすいんですけど、一方でそれがデメリットにもなります。あまりに簡単に作れてしまうので、裏側の仕組みが分からないままになりかねないです。

裏側の仕組みは理解しておいた方が良いんですか?

プログラマーは世の中にないようなシステムを作り続けなければならないんですよ。世の中にないようなシステムを作る際に、フレームワークにちょっと付け足しただけでは実現できなかったりするんですね。裏側の仕組みを理解した上で、イレギュラーなことを行うことが普通にあるわけですよ。Ruby on Railsで学習していくと、裏側の仕組みや基本的な部分がつい疎かになりやすいというのが学習上のデメリットです。

そのデメリットを補うために何かできたりしないんですかね?

デメリットを補うには、Ruby on Railsだけを学んで、「全てを学んだ気にならない」というのが大事ですかね。重要なことはRubyから学びましょう。

あまりRubyを学ばずに、Ruby on Railsだけを学んでしまう人って結構多いんですかね。

多いですね。Ruby on Railsは説明書やドキュメントがインターネット上でいっぱい公開されています。誰かが書いたものが見られる。そうするとついそこから手を出したりするわけですね。そこでちゃちゃっと作って達成感も感じやすいからやった気になるわけです。「なぜそれが動いているのか」、「プログラムってそもそもどうやって書くんだっけ?」ということが疎かになるんですね。Ruby on Railsから学ぶのは達成感を感じるためだったら良いと思いますが、本当にプログラムの書き方とかを覚えるんだったら私はおすすめしないです。

プログラマーになろうと思うんだったらRubyから学んだ方が良いんですね。

そういうことですね。プログラマーにならない方だったとしても、プログラマーが「どういう想い」で「どんな価値観」で「どうやって作業」をするのか知るためには、Ruby on Railsだけではそこまで到達できずに知った気になってしまうかもしれませんね。

「簡単だからできるでしょ!」って感じになってしまうかもしれないですね。

そうなると非常に恐ろしいですね。Ruby on Railsを勧めることによって、そのようになったら嫌だなと、危惧される方もいますね。

Ruby on RailsよりシンプルなフレームワークはSinatra

他にはどんなフレームワークがありますか?

Rubyで作られているフレームワークだと有名なのがSinatra(シナトラ)というのがあります。SinatraはRuby on Railsよりシンプルです。多くの機能は揃っていないんですけどシンプルに作ることができます。重厚じゃないんですよね。重厚かそうでないかを例えると、イメージは「スポーツカー」と「軽自動車」のような違いです。スポーツカーは「何でも揃っていてめちゃくちゃ速い」みたいな感じですね。軽自動車は「ふらっと買い物に行きたい」時に使いますよね。

Sinatraのプロトタイプを作るような時に使うんですかね。

両方の良さを知っておくのが良いと思います。スポーツカーを乗り回してる人でも、実は買い物行く時に軽自動車に乗っていたりするんですよ。目的によって違いますので、理解していれば使い分けられます。

Sinatraは学習するという点ではいかがですか?

Sinatraは実用で使われてるというのはあまり聞いたことがありません。あると思うんですけど私の耳には入ったことがありませんね。学習で「ちょっとやってみる」っていうことで使われることが多いみたいですね。会社の研修とかでいきなりRuby on Railsをやると思考停止するので、 Sinatraから行い、インターネットのアクセスの流れを理解させようとする会社もあります。

なるほど。Sinatraが学習に向いていることがわかりました。本日はありがとうございました!

まとめ

・Ruby on Railsの実装上のメリットは様々な機能が揃っていて素早くシステムを作ることができる。デメリットは使いこなすのが難しい。
・Ruby on Railsの学習上のメリットは素早くシステムを作ることができるので達成感を感じやすい。デメリットはあまり理解せずに作れてしまうので、裏側の仕組みを学びにくい。
・Ruby on RailsよりシンプルなフレームワークはSinatra。Sinatraは初学者がシステムの流れを学習するのに適している。

DIVE INTO CODEのことをもっと知ってみませんか?