- 更新日: 2018年10月12日
- 公開日: 2016年03月17日
Ruby on Railsとは?初心者にもわかりやすく解説!

Railsで作れるものって?Webアプリケーションとは
Webアプリケーションとは、一言で表すと「Webブラウザを介して利用するアプリケーション」のことです。
Webアプリケーションと聞くと、ブラウザやスマートフォンのゲームを思い浮かべる方もいると思いますが、本稿で学ぶWebアプリケーションとは、GoogleやYahoo!等の検索エンジンや、通販サイト、SNSのようにユーザーの要求に対して、サーバーが結果を返すような仕組みのことを指します。
図の左側のように、ユーザーがブラウザ上で行った要求( リクエスト )に対して図の右側のように、サーバーが結果を返却( レスポンス )します。
サーバーから返却された情報を、ユーザーはブラウザを介して閲覧することができます。
また、ブラウザとサーバー間はhttp( hypertext transfer protcol )という決まり事に従って通信を行います。
このようなものをWebアプリケーションと呼び、本カリキュラムではRuby on Railsというフレームワーク(後述)を使って制作していきます。
そもそもRuby on Railsとは?
Ruby on Railsとは、Rubyで構築された、Webアプリケーション開発のための「フレームワーク」です。
■Webアプリケーション開発のための「フレームワーク」とは Webアプリケーション開発を行う際の、汎用的に使用する機能や、基本的な構造を提供する”骨組み”や”骨格"のようなものです。開発者は、フレームワークで定められた制約に従って、必要とする機能や処理を追加するだけで、一つのWebアプリケーションを制作することができます。各言語ごとに多数のフレームワークが用意されていますがRubyでは現在、Ruby on Railsを利用した開発が主流です。 |
フレームワークを利用するメリット(Ruby on Railsに限らず )
①生産性の向上
汎用的に使用する機能や、基本的な構造がすでに仕上がっているため、フレームワークを使用するのとしないのでは、記述量に差が生まれます。
②メンテナンス性
フレームワークにはそれぞれルールがあり、作業者はそれに従ってコーディングするため、コードの一貫性が維持しやすく、不具合や仕様変更があった際に、どこに問題があるかの特定がしやすくなります。
③品質の維持
みなさんが利用するフレームワークは、基本的にはオープンソースだと思います。オープンソースというのは多くの人の手により利用実績が積み上げられ、テストも実施されています。その分、信頼性は高いといえます。
■オープンソースとは Githubなどにソースコードが公開されており、誰にでもソースコードを閲覧、編集できる状況にあることを指します。 |
Ruby on Railsにはたくさんの制約(ルール)が定義されており、開発自体を単純化しております。
例えば、http://xxx.com/users
というURLにはusersというuserの複数形が使用されていますが、この画面を開くと、ユーザーの一覧を表示し、http://xxx.com/users/777
というURLではIDが777番であるユーザー情報を表示します。
このように、単純な命名ですらルール化しています。従来は、そういった制約もエンジニアが自由に定義し、それぞれのエンジニアがそれぞれ作りやすいように開発を行ってきました。
これはエンジニアを束縛することのように感じますが、実際はルール化することでRuby on Railsの開発手法を知っているエンジニアであれば、Userというクラスが、ユーザー情報を格納するModelであり、それを表示するURLを推測できます。
このように、Ruby on Railsは制約により開発作業自体を単純化しているのです。
他にも、Rubyには強力なgemという機能が備わっており、これに関しては後述しますが、この機能により画像のアップロードや、ページネーション、ログイン機能までを簡単に実装することができます。
以上のように、Ruby on Railsを学ぶことで、より簡単で効率的にWebアプリケーションを製作することができます。
■その他 Ruby on Railsにはテスト(デバッグ)を自動化し、Webアプリケーションの品質を一定に保つといった技術的特徴もありますが、これは本カリキュラムでは行わずにWebアプリケーションを作り上げるといったことに重点を置きます。 |
RubyonRailsに触れる前に知っておきたい3つの考え
①Model View Controller (MVCアーキテクチャ)
②Don't Repeat Yourself (同じ記述を繰り返さない)
③Convention over Configuration (設定よりも規約)
①Model View Controller ( MVC )
Ruby on Railsによって作られるWebアプリケーションはMVCという設計に沿っていなければなりません。MVCとは、Model View Controllerの頭文字をとってそう呼ばれています。簡単に説明すると、下記のように分けられます。
・Model(モデル)
データを扱う部分になります。データベース(後述)に対してデータの登録・取得・更新・削除などを行うことができます。
・View(ビュー)
ユーザーの見ることができる部分の作り込みを行います。つまり、ブラウザに描画されているHTMLを作り込む部分になります。
・Controller(コントローラー)
ユーザーからの要求に対して、Modelとの連携やどの画面を表示するのかといった処理行う部分になります。
※MVCの関連図
上の図のように、MVCそれぞれが関連しあって、ユーザーの要求に応じた結果を返すようになっています。
■MVCに関しての論争 MVCのそれぞれの役割や振る舞いに関しては様々な論争がありますが、初めてフレームワークに触れる方は、基本的には下記のように理解していただいて問題ありません。 Model … データを取り扱う部分 View … htmlの作り込み Controller … Modelとの連携やViewの出し分けを行う |
MVCという概念は、Ruby on Railsに限ったことではなく、いろいろなフレームワークに採用されています。
②Don't Repeat Yourself ( DRY )
簡単に表現すると前述の通り、「同じ記述を繰り返さない」ということになるのですが、
同じもしくは似たようなコードがあちらこちらに散らばると、後々のメンテナンスや修正が行いづらくなります。
例えば消費税の計算処理が複数の箇所に記述されていた場合、修正漏れにより、計算結果が異なるといった問題が生じてしまいます。似たようなコードは一箇所にまとめ、そこを参照することで、修正が必要になった場合でも一箇所のみの修正で済ませることができます。
DRYの原則に従い、無駄のないコーディングを心がけましょう。
③Convention over Configuration ( CoC )
Configuration(設定)よりConvention(規約)とは、開発者が考慮・決定するべきことをできるだけ少なくし、ロジックにできるだけ集中させるという思想です。
アプリケーションの設定を行うファイルや項目は、増えれば増えるほど仕組みが複雑化していきます。この思想を徹底することで「Ruby on Railsらしい」シンプルなアプリケーションとなるでしょう。
Ruby on Railsは上記のような設計思想の下で、開発者の余計な手間暇を削減し、保守しやすいWebアプリケーション開発へと導いてくれます。
\Rubyでのサービス開発スキルが身に付く/
Railsの基本的なファイル構成
[code gutter="false"] $ rails new xxx [/code]
上記コマンドの実行後に生成されるファイル群の一覧とその概要になります。
CodeCampのRuby on Railsカリキュラムで今後よく利用することになるファイルもしくはディレクトリは赤字になっていますので、併せてご確認下さい。
①/app | ... アプリケーション開発中にメインで使用するディレクトリ |
/assets | … 画像・.js・cssファイルなどを格納する |
/images | … 画像ファイルを格納 |
/JavaScripts | ... Js を格納 |
/stylesheets | ... CSSを格納 |
/controllers | ... Controller クラスを格納する |
/concerns | … 各Controllerクラスに対して共通の処理を実装する場合に利用する ※本カリキュラムでは触れない |
/application_controller.rb | ... アプリケーション共通のControllerクラス |
/helpers | ... ヘルパークラスを格納する |
/application_helper.rb | ... アプリケーション共通で利用するヘルパークラス |
/mailers | ... メール送信に関するクラスを格納する |
/models | ... Modelクラスを格納する |
/concerns | ... Modelクラスに対して共通の処理を実装する場合に利用する ※本カリキュラムでは触れない |
/views | ... View クラスを格納する |
/layouts | ... レイアウトを格納する |
/application.html.erbb | ... アプリケーション共通のレイアウト |
②/bin | ... コード生成等のコマンド実行ファイルを格納する |
③/config | ... アプリケーションの設定情報を格納する |
/environments | ... 本番環境・テスト環境等、環境毎の設定ファイルを格納する |
/initializers | ... アプリケーション起動時に読み込まれるファイルを格納する |
/locales | ... 辞書ファイル(グローバル対応等) ※本カリキュラムでは触れない |
/application.rb | ... アプリケーション全体の設定を行う |
/boot.rb | ... bundlerの読み込みと設定を行う ※本カリキュラムでは触れない |
/database.yml | ... データベースへの接続設定を行う |
/environment.rb | ... サーバーを起動する際に使用されるファイル |
/routes.rb | ... ルーティングの設定を行う |
/secrets.yml | … 外部APIのKEYなどの設定を行う ※本カリキュラムでは触れない |
④/db | ... マイグレーションファイル等、データベースに関わるファイルを格納 |
⑤/lib | ... 自作のライブラリ等を格納 ※本カリキュラムでは触れない |
⑥/log | ... ログの出力先 |
⑦/public | ... アプリケーションを介さない静的なファイルを格納 |
⑧/test | ... テストスクリプト等を格納 |
⑨tmp | ... キャッシュ等の一時的なファイルを格納 ※本カリキュラムでは触れない |
⑩/vendor | ... サードパーティーのコード ※本カリキュラムでは触れない |
⑪ /config.ru | ... アプリケーションのエントリポイント ※本カリキュラムでは触れない |
⑫ /Gemfile | … 必要なgemファイルを定義する |
⑬ /Rakefile | ... rakeタスクの実行管理ファイル ※本カリキュラムでは触れない |
⑭ /REDME | ... readmeファイル ※本カリキュラムでは触れない |
上の図でもわかる通り、Ruby on Railsのアプリケーションを作成すると、多くのファイルやディレクトリが生成されます。しかし、実際に開発に利用する箇所は限られているので、本カリキュラムではwebアプリケーション開発に最低限必要な部分のみ学んでいきます。
特に、appディレクトリ配下や、config/routes.rb 、Gemfileはよく利用するものになります。
クラスとは
前項で、ControllerクラスやViewクラス、Modelクラスと記述していますが、クラスとは何かということを本項では説明します。
Rubyのカリキュラムで、配列やハッシュについて学びましたが、これらの配列やハッシュは、実際は「Arrayクラスのオブジェクト」です。ダブルクォーテーションで囲った文字列と読んできたオブジェクトは、実はStringクラスのオブジェクトです。
このように表現すると若干分かりづらいかもしれませんが、クラスとは「雛形」を指します。
基本的に、オブジェクトを生成する際は new メソッドを利用します。
例えば、下記のようにArray.newを使用してオブジェクトを生成します。
array = Array.new p array |
※ p メソッドは rubyカリキュラムで学習した、puts メソッドと同じような実行結果となります。異なる点としては、文字列なのか数値なのかを出力結果から判断できるところです。
以後、Ruby on Railsカリキュラムでは結果を表示する際は p メソッドを利用します。
■配列やハッシュは組み込みクラスである Rubyのカリキュラムで使用してきた、配列や文字列は組み込みクラス( 文法に組み込まれた記法 )であるため、[ 1, 2, 3 ]や、”ABC”のように記述することでオブジェクトが生成されます。 |
Ruby on RailsではMVCのModelやView、Controller等はクラスとしてあらかじめ提供されており、それらのクラスを拡張しながらWebアプリケーションを開発していくことになります。
NEXT LESSON ☛ これでバッチリcloud9!Railsが使える環境設定をしよう!
PREV LESSON ☛ Rubyとは?いま熱いRuby言語を徹底解説!
目次 - Ruby & Ruby on Rails テキスト目次 -

- この記事を書いた人
- CodeCampus編集部