読者です 読者をやめる 読者になる 読者になる

Fire Engineering

化学の研究者→消防士→ITエンジニア(2016年11月〜)

Rails基礎のまとめ

 今回はRuby on Railsを始めるときに知っておいた方がよい基礎知識について書いていきます。もともと私が勉強用にEvernoteに書きためていたまとめノートを公開します。これからRuby on Railsを始める人や、すでに始めているけど基礎が整理できてないかもっていう人の役に少しでも立てればいいなと思います。

Ruby on Railsとは?

 Ruby on Rails(以下Rails)は、プログラミング言語Rubyで書かれたWebアプリケーションを開発するためのフレームワークの1つです。Webアプリケーションとは、Webを介して何らかのサービスをユーザーに提供するものです。ここで言う「サービス」とは、例えばメッセージが書き込める掲示板機能や、Amazonのようなショッピング機能などを指します。また、フレームワークとはアプリケーションを効率よく開発するためのツールやライブラリなどまとめた枠組みのことです。

 もちろん、Webアプリケーションはフレームワークなしでも作れますが、フレームワークを利用することで、実際のWebアプリケーションを作成するのに必要なデータベースへのアクセスや、HTMLの描画、セッションの管理などを少ないコードで実現することができるため、非常に価値のある存在です。

Railsの設計哲学

 Railsにはそれを語る上で非常に重要な設計哲学があります。これらはRailsのシンプルさと効率の良さを支えている大事な哲学です。

DRY(Don’t Repeat Yourself、繰り返しを避ける)

 Railsを使ったWebアプリケーションでは、同じことを繰り返し記述するのを避けなければなりません。これにより、コードの重複が減り品質の良いアプリケーションを効率よく開発することができます。また、アプリケーションに何かしらの変更が生じた際に、何箇所もコードを修正することがなくなるため、メンテナンス性も向上します。

設定より規約(Convention over Configuration:CoC)

 Railsでは設定より規約を重視します。ここで言う規約とは、言い換えれば「デフォルトの設定」のことです。例えば、Railsには厳格な命名規約があり、モデル名を「Member」とした場合、データベースのテーブル名は「members」(モデル名の複数形にする)といった規約に従って開発することが求められます。

 従来のフレームワークではこれらの規約はなく、開発者が自由に設定することができました。しかし、その設定内容は設定ファイルに記述していたため、膨大な設定ファイルが生まれることもしばしばありました。また、自由に設定できるが故、開発者ごとの差異を生むこととなり、複数人で進行するプロジェクト等では混乱を招くこともありました。

 Railsにおいて、開発者が規約に従うことで、以下のようなメリットが得られます。

・設定ファイルやコードの記述量を大幅に減らすことができる。

・他の開発者と共通のルールができ、コミュニケーションが円滑になる。

MVCパターン

 Railsアプリケーションは、MVCパターン(Model - View - Controller パターン)と呼ばれる構造を採用しています。MVCパターンとは、アプリケーションをModel(データを扱う部分)、View(表示を行う部分)、Controller(ユーザーからのリクエストを処理して結果を返す部分、ModelとViewの橋渡し役)という役割で分ける設計パターンのことを言います。MVCの相関図は以下のようなイメージです。

f:id:hirotsuru314:20160426143818p:plain Wikipedia:Model View Controllerより抜粋

 アプリケーションをMVCに分けることにより、複数人(例えばプログラマーやデザイナーなど)で並行して共同作業が行いやすくなります。また、デザインとロジックのそれぞれの修正が相互に影響しないため、保守作業も容易になるというメリットもあります。

 ちなみに、MVCパターンはRails固有の概念ではありません。JavaPHPなどのフレームワークでも広く取り入れられている概念です。

RESTfulなWebアプリケーション

 REST(Representational State Transfer)とはWebアプリケーションの設計概念の一つで、ネットワーク上に置かれたすべてのリソースを一意なURLで表現し、リソースに対するCRUD操作はすべてHTTPメソッド(GET, POST, PUT, DELETEなど)で表現する考え方のことを言います。RESTにもとづいて設計されたWebアプリケーションのことをRESTful なWebアプリケーションであるといい、Railsでは最低限のコードで上記のようなRESTfulな設計にもとづいたWebアプリケーションを作成できるようになっています。

Railsコンポーネント(構成要素)

 Railsの実体は、Rubyで書かれたライブラリの集合体です。ここで基本となる3つのコンポーネントを紹介します。

 Active Record・・・Model

 Action View・・・View

 Action Controller・・・Controller

これらはすべてGemパッケージとして提供されています。Gemパッケージとは、RubyのパッケージマネージャーであるRubyGemsが管理するライブラリのことです。これらのコンポーネントによって、Railsひとつをインストールするだけで、アプリケーション開発に必要な環境がすべて揃うため、Railsフルスタックフレームワークであると言われています。

 RailsそのものもRubyのGemパッケージとしてGitHub上でソースコードが公開されています。

github.com

Railsの特徴的な機能

ルーティング

 外部からのリクエストURLに応じて処理の受け渡し先を決定することをルーティングと呼びます。Railsでは、クライアントからの要求を受け取ると、まずはルーティングを利用して呼び出すべきコントローラ/アクションを決定します。

マイグレーション

 Railsではデータベースのテーブルの作成や修正にマイグレーションという機能を利用します。マイグレーションによって、SQL文を書くことなく、データベースのスキーマ(どのテーブルにどの形式のカラムが含まれているかの情報)を作成、更新することができます。

自動テスト

 Railsでは自動テストを行う文化を重要視しています。Railsのプロジェクトを作成するとひな形の一部としてテストを実行する環境も用意され、プロジェクト作成直後からテストが実行できるようになっています。デフォルトではMinitestが選択されていますが、よく利用されているRSpecを利用するように設定することもできます。

終わりに

 今回はRailsの概略をつかむための基礎知識に関してまとめましたが、きちんとした構成になっておらず箇条書きに近い形となっています。もともとは私個人の勉強用ノートなのでその点はご了承下さい。私は今回出てきた用語それぞれに対しても、より詳細をまとめたノートを作成していますので、それらも追い追い公開していきます。