Ruby on Railsのメリット・デメリット【初心者にもわかりやすく解説】

2018年12月27日木曜日

Ruby on Rails

Ruby on Rails メリット デメリット

こんにちは。uni-browserの財前航介です。

皆さんは、Ruby on Railsというフレームワークを使用されたことはありますか?

Ruby on Railsは、高機能なWebアプリケーションを非常に高速に開発できる、優れたフレームワークとして、大変話題になりましたね。

特にスタートアップ企業などの、スピードを求められるWeb開発において、Ruby on Railsは非常に多くのメリットをもたらします。

このフレームワークを使うと、非常に少ない作業量で、本格的なWebアプリケーションが作成できるため、Webアプリの開発に興味がある方であれば是非押さえておきたいフレームワークです。

今日は、そんなRuby on Railsというフレームワークを使うメリットデメリットについて見ていきましょう。


フレームワーク


フレームワーク

フレームワークとは


皆さんは、開発においてフレームワークを使われたことはありますでしょうか。

フレームワークとは、アプリケーションを作る上でのひな形を提供してくれるソースコードの集まりと言えます。

Webアプリケーションを作成する上での基本的な機能を、フレームワーク側であらかじめ用意してくれてあり、私たちは、そのフレームワークのルールに従って、ソースコードを記述していきます。

基本的な機能はフレームワークによって提供されているため、フレームワークを用いることによって、開発者が記述するソースコードの量が格段に少なくなるというメリットがあります。

フレームワークとは「枠組み」という意味の英単語ですが、ソフトウェアを開発する上での基本となる枠組みを提供してくれることから、このように呼ばれています。


代表的なフレームワーク


Rubyだけでなく、様々なプログラミング言語に対して、それぞれのフレームワークが存在します。

代表的なものは、以下のようなものです。

プログラミング言語 フレームワーク
Ruby
  • Ruby on Rails
  • Padrino
  • Sinatra
  • Cuba
  • HANAMI
  • Ramaze
Java
  • Spring Framework
  • Struts
  • JSF
  • SAStruts
  • Apache Wicket
  • Dropwizard
  • ZK
  • Play Framework
  • Ninja web framework
PHP
  • CakePHP
  • laravel
  • zend framework
  • FuelPHP
  • Symfony
  • codeigniter
  • Phalcon

上記に記載したような、Webのバックエンドで用いられるRubyJavaPHPだけでなく、フロントエンド開発で用いられるJavaScriptにも、フレームワークが存在します。

プログラミング言語 フレームワーク
JavaScript
  • AngularJS
  • Vue.js
  • Ember.js
  • React.js

上記では、数あるフレームワークのうちの代表的なもののみを挙げましたが、世の中にはこれら以外にも数多くのフレームワークが存在し、用途や制約によって使い分けられています。

その中でもRuby on Railsは、高い生産性を誇る、強力なフレームワークの一つです。


Ruby on Railsとは:
MVCアーキテクチャを採用したWebフレームワーク


Ruby on Railsとは、プログラミング言語であるRubyを用いてWeb開発を行うためのフレームワークです。

MVCアーキテクチャと呼ばれる構造に基づいて、Webアプリケーションの構築を、素早く行うことができるフレームワークです。

Ruby on RailsにおけるMVCアーキテクチャ

MVCモデルを採用しているフレームワークはRuby on Rails以外にも多くありますが、Ruby on Railsは、MVCアーキテクチャを採用しているフレームワークの中で、最も有名なものの一つと言えるでしょう。


Ruby on Railsを使うことのメリット


Ruby on Railsのメリット

Rubyによる、美しく無駄のないソースコード


Ruby on Railsにおける開発では、Rubyというプログラミング言語が用いられます。

Rubyとは、以下のような特徴を備えたプログラミング言語です。

  • プログラマーが「楽しんで」プログラミングできることに焦点を当てて作られた言語
  • 他のプログラミング言語に比べて、記述するコード量が少なくて済む
  • 英語を記述するように、直感的に分かりやすいコーディングが可能
  • コンパイルの要らないスクリプト言語
  • オブジェクト指向
  • 非常に柔軟

上記にもあるように、Rubyというプログラムそのものが、Java等の他言語に比べて、記述するコード量が非常に少なくて済むというメリットがあります。

開発者達のプログラミングのし易さにフォーカスして開発された言語であるため、初心者にも直感的に理解しやすい文法を備えています。

つまり、Ruby on Railsというフレームワーク以前に、既にRubyという言語そのものが、開発効率の高い言語であると言えるでしょう。


アプリケーションの雛形を一瞬で生成


インターネット上のRuby on Railsのチュートリアルなどを見ると、5行のコマンドでブログサービスを作り上げるなど、Ruby on Railsを用いて、一瞬でWebサービスを構築する例が多く挙がっていますね。

もちろん、5行(5つのコマンド)で作り上げるブログは、基本的な機能しか備えていないものですが、それにしても、ブログやSNSなどの基本的な機能であれば、一瞬で作成できてしまうというのは、Ruby on Railsというフレームワークの強力さを物語っています。

超高速でアプリケーションの雛形さえできてしまえば、あとはRuby on Rails内の規約に則って、その雛形にカスタマイズを加えていくだけで、独自のWebアプリケーションの構築ができてしまいます。


規約に基づいた効率的な開発


Ruby on Railsは、比較的しっかりと開発の為の規約が定められているフレームワークです。

フレームワーク内のルールに従ってソースコードなどを記述することによって、フレームワークの機能を最大限に用いることができます。

一般的にWeb開発は非常に柔軟である反面、各人の好き勝手に開発しても、動作する機能が実装できてしまう面があります。

しかしそれでは、ソースコードのモジュール分けの粒度や、機能が呼び出されてからのデータの流れや管理の仕方など、統一が取れていないシステムが出来上がってしまいます。

Ruby on Railsは、多くの規約を設けることによって、それらの統一を図り、多人数での効率的な開発を実現します。

また、Ruby on Rails上でのルールに則ってコーディングを行うことで、プログラマー自身が全体的な設計思想を意識しなくても、最適なMVCアーキテクチャ上での開発を行うことができるため、開発者は自分の機能の実装に集中することができます。


多くの前例があり、学習資材も豊富


Ruby on Railsは、多くの既存のWebサービスでも採用されており、Webのバックエンド開発において、非常に信頼性のあるフレームワークです。

Ruby on Railsを用いて開発された代表的なサービスは、以下のようなものがあります。

国内事例
  • 食べログ
  • Cookpad(クックパッド)
  • CrowdWorks(クラウドワークス)
  • Web版 グノシー

海外事例
  • Shopify
  • Hulu
  • Github

上記はあくまで代表的な例ですが、その他にも、国内外問わず多くの導入事例があります。

既に多くの導入事例があるため、書籍やWeb上の情報も多数あり、情報収集や学習が容易である点も、メリットの一つです。


また、Rubyという言語自体が日本人であるまつもとゆきひろ(Matz)氏によって開発された国産言語であるため、Ruby自体の仕様に関しては、日本語のドキュメントも豊富です。


Ruby on Railsのデメリット


Ruby on Railsのデメリット

サーバー負荷が比較的大きい


実行時にコンパイルされるスクリプト言語であるため、Java等のコンパイラ型言語に比べると、動作速度はそこまで高速でないと言われています。

また、サーバーへの負荷が比較的大きいため、大規模サイト構築の際は、サーバーリソースの確保が課題になることがあります。


他言語と挙動が違う部分がある


これはどの言語でも言えることですが、他のプログラミング言語との仕様の違いがミスを招く場面があります。

たとえばRubyにおいてはクラス変数がスレッドセーフになっておらず、複数人から同時にアクセスがあった場合に、その変数が共有されてしまうということがあります。

PHPなどとも所々仕様が違う部分があるため、そういった点には注意しながらコーディングを行いたいですね。


純粋なRuby関数が上書きされている場合がある


メリットにも挙げたように、Rubyは非常に柔軟なプログラミング言語です。

その為、Rubyそのものの関数を上書きすることが可能です。

公式ドキュメントにも記述がありますが、
たとえば、足し算の記号である「+」という記号の代わりに、「plus」というアルファベットを用いたい場合は、Rubyで用意されているプログラムモジュールに機能の追加を行うことができます。

それだけではなく、Rubyが元々用意しているメソッドの上書きを行うこともできてしまうのです。

「Rubyが元々持っているメソッドは、上書き禁止」
というルールを開発現場で設ければ良いと思われるかも知れませんが、実は、
Ruby on Railsが、Rubyのメソッドを上書きしている
という場合もあります。

つまり、Ruby on Railsでの開発中に、Rubyのメソッドについて調べる場合には、それが、Ruby側のメソッドなのか、Ruby on Railsによって上書きされているメソッドなのかということを特定してから調べていく必要があります。


規約を覚える必要がある


多くの規約を設けることによって、統一が取れていて無駄のない、効率的な開発ができるというのは、Ruby on Railsを用いる上での大きなメリットです。

しかし当然のことながら、そういった開発を行うためには、Ruby on Rails側の規約を覚える必要があります。

とは言っても、フレームワークを使う以上は多少の学習コストは必要ですし、Ruby on Railsが他のフレームワークよりも学習コストが高いということも決してありませんので、ここは仕方がない部分と言えるかもしれません。


まとめ:
Ruby on Railsのメリットを活かして、高速開発をしよう!


Ruby on Railsで高速Web開発

如何でしたでしょうか?

Ruby on Railsを用いる最大のメリットは、なんといっても高速でWebアプリケーションが開発できることですね。

数回のコマンド発行で、もうアプリケーションの雛形が完成してしまうというのは、驚異的です。

学習コストも決して高くはありませんので、Web開発に興味がある方は、ぜひRuby on Railsを用いた開発にチャレンジしてみては如何でしょうか。

以下では、WindowsやLinuxへのRubyのインストール方法を解説していますので、興味が湧いた方は、まずはインストールからチャレンジしてみてくださいね。



Ruby on Railsのおすすめ書籍


何か新しい技術を学ぶ際には、分かりやすい書籍に一冊目を通しておくと、体系的な知識が身に付きますし、その後の学習効率が格段に上がります。

私自身が分かりやすいと感じた、Ruby on Railsの書籍を、ここではご紹介させて頂きます。

基礎 Ruby on Rails



表紙を見るとちょっと難しそうに見えますが、非常に噛み砕いて説明されていて、分かりやすく、初心者の方にもオススメできる書籍です。

これ一冊あれば、MVCの基礎から、現場での開発に必要なRuby on Railsの機能は一通り身に着けることができます。


プロを目指す人のためのRuby入門



Rubyを開発した張本人である、まつもとゆきひろ氏がこの本を読んで、
「ああ、人の気持ちがわかるとはこういうことなんだなあ」
と言ったほど、非常に分かりやすくRubyプログラミングについて解説されている本です。

こちらは、Ruby on Railsに関する内容ではなく、Rubyそのもののプログラミングの方法について記載されています。

Ruby言語そのものに興味がある方は、ぜひこちらの書籍を読んでみることをお勧めします。

Rubyの設計思想から、便利な機能まで、非常に分かりやすく学ぶことができます。


「Ruby」と「Ruby on Rails」、どちらを学ぶべき?


Ruby on Railsを利用する予定の方で、どちらか一方の書籍の購入を検討されている方は、まずは上記の「基礎 Ruby on Rails」を用いて、Ruby on Railsというフレームワークの仕様について学ぶことをオススメします。

というのも、Ruby on Railsは、Rubyの深い部分を理解していなくても、規約に従って開発を進めれば、高速でWebアプリケーションの作成ができる、強力なフレームワークですので、Ruby on Railsについて直接的に学ぶことが、高速にWeb開発を行う近道になるからです。

また前述のとおり、Ruby on Railsが、Ruby本体のメソッドを書き換えているケースもあることから、折角学んだRubyの文法が、Ruby on Railsでは通用しない場面も一部あります。

そのため、初心者の方でも、いきなりRuby on Railsの書籍を用いて学習することをお勧めします。
上記の「基礎 Ruby on Rails」であれば、Rubyプログラミング初心者の方でも、十分理解できる内容になっていますので。


この記事が、少しでも皆様の学習のお役に立てば幸いです。
最後まで読んで下さり、ありがとうございました。