すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

Rails

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

ぴっかちゃん
ぴっかちゃん

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

ruby on rails

フレームワークとはアプリケーションを作成するための骨組みがあらかじめ用意されている便利なものといったイメージです。

アプリを作るとき、誰が作っても同じようなコードになるものをあらかじめ用意しておけば開発効率がかなり上がります。

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

Ruby on Railsとは

この章では、フレームワークからRuby on Railsについて1つ1つ解説します。

フレームワーク

フレームワークとは、アプリケーションを作成するための骨組みがあらかじめ用意されている便利なものといったイメージでした。それでは、フレームワークを使ったメリットとデメリットについて確認していきましょう。

メリット

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は前述したフレームワークです。
Webアプリケーションを作成する際は「Ruby on Rails」を勉強しますが、その中でRailsで使用される構文はRubyの構文が大半です。

Rubyは触りだけでRailsの扱い方に学習時間を費やす、もしくはRailsから学習している方もいますが、いずれにしても並行してRubyを学ぶと良いでしょう。

Rubyに関しては、こちらの「プロを目指す人のためのRuby入門」でRubyの特徴から例外処理、デバック技法など実務で必要となる知識を一通り学ぶことができます。

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

言語仕様からテスト駆動開発・デバッグ技法まで

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 5速習実践ガイド」で一通り学習すると効果的です。

初学者にはやや難しい内容も含まれていますが、わかりやすい図と噛み砕いた文章で解説しています。

何よりも実際に手を動かしてアプリケーションを開発しながら学べるので、より知識を吸収することができます!

現場で使える Ruby on Rails 5速習実践ガイド
現場で使える Ruby on Rails 5速習実践ガイド

Ruby on 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 on Railsとは、Rubyのフレームワークのこと
  • webアプリを簡単に作成することができる
  • 規約があるので大人数で作成がしやすい!