【Rails】Ruby on Railsとは?Rubyとの違いを徹底解説!

Rails

Ruby on Railsとは

プログラミング言語のRubyのフレームワークです。
Ruby on Railsを使うと簡単にアプリを開発できるようになります。

フレームワークとは?
リンクをコピーしました

ruby on rails
フレームワークとはアプリケーションを作成するための骨組みがあらかじめ用意されている便利なものといったイメージです。
アプリを作るとき、誰が作っても同じようなコードになるものをあらかじめ用意しておけば開発効率がかなり上がります。

また一部の天才が作成したコードを再利用することにより、自分にそのコードを書く知識がなくても簡単にその機能を実装することができるため、プログラミングの知識がそれほどなくてもそれなりのアプリを作成することができます。

メリット
リンクをコピーしました

Rubyだけでアプリを作成するよりもフレームワークを利用すると作成時間をかなり短縮させることができます。
実際に簡単なアプリであればフレームワークを使うと15分ほどでアプリが作れると言われています。

またRubyでアプリを作成すると人によって記述がまちまちになってしまい、複数人での開発になると管理がとても大変になってきます。
ですがフレームワークを使えば基礎となる部分のコードは全て同じなので保守がとてもしやすくなるというメリットもあります。

デメリット
リンクをコピーしました

デメリットとしてはフレームワークの使い方を覚えなければならないことです。
フレームワークの学習はプログラミング言語の学習というより便利な道具の使い方を覚えるといったイメージです。

railsを使って新規アプリを作成すると下のようにフォルダとファイルが自動で作成されます。

ファイル構造

各フォルダの中身は下記の通りです。

フォルダ名 中身
assets 画像やjavascript、stylesheetsファイルなど
controllers コントローラーファイル
helpers ヘルパーファイル
mailers メイラーファイル
models モデルファイル
views ビューファイル

新しいファイルを作成するときには自分で自由にフォルダを作ってソースを書けるわけではなく、それぞれ決められたフォルダに応じてコードを書かないとアプリは動きません。
このようにどのフォルダに何のファイルを作成するかというのが大事なので、railsの使い方を覚える必要があります。

そのため、実際に使いこなすにはそれなりの時間がかかります。
またフレームワークは言語によって複数存在するので、自分が覚えたものが実際の開発現場で使われていなかったら、また別のフレームワークの使い方を学習しなければなりません。

また簡単にアプリを開発できるので、省略されている部分がたくさんあります。
なのでどうしてこういう動きになるのかはコードを見ただけでは把握することが難しいです。
特にRuby on Railsは他のフレームワークよりさらに簡潔にコードが書けるので、プログラミング初心者はファイルの関係性などが理解しづらいというデメリットがあります。

ただデメリットをはるかに超えるメリットがあるので、現在ではフレームワークを使ってアプリを作成することがほとんです。

Rubyだけでなくその他の言語にもフレームワークがあります。
有名なフレームワークとしてJavaならStrutsやSpring、PHPならCakePHPやLaravel、PythonならDjangoなどがあります。
Rubyだと一番多く使われていると言われているのが今回紹介するRuby on Railsです。

Rubyとの違いは何か
リンクをコピーしました

Rubyはプログラミング言語の一つです。
プログラミング言語とはコンピュータに命令を出すための言語で実際にプログラムを書いてファイルを作成します。

それに対しRuby on Railsは前述したフレームワークです。
アプリを作成する際はRuby on Railsを勉強しますが、その中でRubyを使うので結局はRubyとRuby on Railsどちらとも勉強をする必要があります。

ですがRubyはプログラミングの概念を学ぶのに対し、Ruby on Railsはフレームワークの使い方を勉強するという大きな違いがあります。

Ruby on Railsで作成されたサイト
リンクをコピーしました

Ruby on Railsを使って作られたサービスを紹介してみます。

価格.com
リンクをコピーしました

誰もが使ったことがあろう価格比較サイトです。

価格.com

クックパッド
リンクをコピーしました

国内最大級のレシピサイトです。

クックパッド

GitHub
リンクをコピーしました

エンジニアであれば誰もが使うであろうサービスです。

github

Gunosy
リンクをコピーしました

有名なキュレーションサイトです。

Gunosy

食べログ
リンクをコピーしました

日本最大級の口コミサイトです。

食べログ

このようにRuby on Railsは様々なサイトで利用されています。

Ruby on Railsの特徴
リンクをコピーしました

たくさんあるフレームワークの中でRuby on Railsが持っている特徴があります。

MVCアーキテクチャ
リンクをコピーしました

MVCとは、「Model、View、Controller」の3つの頭文字をとったものです。
ルーティング→コントローラー→モデル→ビューの順番に処理が行われるシステムのことをMVCアーキテクチャと言います。

クライアントがリクエストしてからレスポンスを受け取るまでの流れ

それぞれ担当するものを分けることで、コードの可読性が上がるというメリットがあります。
詳しくはMVCフレームワークの記事を参照してください。

DRY
リンクをコピーしました

DRYとは「Don’t Repeat Yourself」の頭文字を取ったものです。
railsは同じコードを重複して書くことを嫌います。
重複している部分はメソッドにしたり、ビューであれば部分テンプレートに切り分けるなどします。
こうすることにより何か変更があった時の作業が効率化されます。

例えば全く同じコードが10箇所で使われていたら、もしその部分に変更が生じたら10箇所全部修正する必要があります。
ですがこれをメソッドにしたりビューでは部分テンプレートにしておけば、メソッドを定義した部分だけ修正するだけで修正が終了します。

例えば下記のコードが5つのファイルで使われていたとします。

new.html

それを部分テンプレートにしてこのコードが書いてあった5つの場所には下記のようなコードを書きます。

renderメソッドを使った時

もし変更があった場合は5つのファイルではなくて部分テンプレートのファイルだけ変更すればいいので管理がとても楽ですよね。
コードの管理が非常にしやすくなるので、これは徹底しておきましょう。

CoC
リンクをコピーしました

CoC「Convention over Configuration」の頭文字を取ったものです。
これは設定より規約を重視することを意味します。
どういうことかというと自分で色々と決めて設定をするのではなく、railsで決められた規約に則ってコードを書くということです。

例えばアクションはrailsで最初から定義されている7つのアクション名を使うとか、コントローラー名は複数形、モデルは単数形、テーブル名は複数形と決まっています。
またルーティングを作成するresourcesメソッドがありますが、これを利用してルーティングを作成すると下記のようなルーティングが自動で作成されます。
※ルーティングの意味はわからなくても大丈夫です。

ターミナル
1
2
3
4
5
6
7
8
9
            Prefix    Verb        URI Pattern                            Controller#Action
          tweets    GET          /tweets(.:format)                tweets#index
                          POST       /tweets(.:format)                 tweets#create
   new_tweet    GET         /tweets/new(.:format)        tweets#new
   edit_tweet    GET         /tweets/:id/edit(.:format)   tweets#edit
            tweet    GET         /tweets/:id(.:format)            tweets#show
                          PATCH    /tweets/:id(.:format)            tweets#update
                          PUT         /tweets/:id(.:format)            tweets#update
                          DELETE   /tweets/:id(.:format)           tweets#destroy

これはrailsが自動で規約通りに決めるものなので、これに沿ってコードを書く必要があります。

規約があらかじめ決まっていることにより、開発者はコードを書くことに集中することができます。
また誰が書いても同じようなコードになるので大人数での開発にも向いています。

規約といったレールに則ってコードを書くことから「Ruby on Rails」という名がついたくらいです。

Railsチュートリアル
リンクをコピーしました

Railsチュートリアルとは書籍の「Ruby on Rails Tutorial」を日本語訳したサイトです。
無料で使うことができるので、railsのスキルをもっとあげたい方には最適です。

Railsチュートリアル
Railsチュートリアル

ただ内容的にはかなり難しいので、初心者がいきなりこれでrailsを勉強しようとすると挫折する確率が高いです。
ある程度railsの知識を身につけた上で挑戦してみるとかなりスキルアップすることができるでしょう。
企業によってはRailsチュートリアルをやっていることは必須であることも多いので一度はやっておくことをお勧めします。

Ruby on Railsの需要
リンクをコピーしました

Rubyだけの案件はあまりありませんがRuby on Railsの案件はたくさんあります。
ですのでRubyだけでなくRuby on Railsをマスターしないと仕事にはなりません。
Ruby on Railsで実務経験を積めば月50〜100万円越えの案件を取ってくることも可能です。

特にスタートアップ企業はRailsを使って開発をしている場合が多く、人材も不足しています。

他の言語と比較してもRubyは高い水準にあります。

言語の比較
参照:Stack Overflow

上の資料だと月収は80万円ほど見込めそうです。

ただRuby on Railsを独学で身に付けるのはとても大変なのでTECH::CAMPなどのプログラミングスクールに通うと効率よくマスターできるのでお勧めです。

Ruby on Rails以外のフレームワーク
リンクをコピーしました

RubyにはRuby on Rails以外にも下記のようなフレームワークがあります。

・Sinatra
・Padrino
・Ramaze
・HANAMI
・Cuba

ただ圧倒的にRuby on Railsのシェアが高いので、これから学習をするのであればRuby on Railsが良いでしょう。

まとめ
  • Rubyのフレームワークです
  • webアプリを簡単に作成することができます
  • 規約があるので大人数で作成がしやすいです