Ruby on Railsの基礎

■概要

RubyでのWebアプリ開発フレームワークであるRuby on Railsについて、
何も知らない状態から初心者までの導入を目的(0->30までのintro)として、
本記事を書くことにする。

①Railsの概要と環境構築

  • Ruby on Railsは、2004年に登場したwebアプリケーション・フレームワークです。
  • Webアプリケーションは、ブラウザなどのクライアントからの要求(リクエスト)に応じて、Webサーバーが応答(レスポンス)を生成して返す仕組みです。


RoRの特徴は、下記の三点です。
  1. MVCアーキテクチャ
  2. DRY(Don't Repeat Yourself):同じことを繰り返さない
  3. CoC(Convention over Configuration):設定より規約
環境構築はカットします。自前のWindowsへの環境構築は、

にて実施しているので、良ければご参照ください。


②コントローラー

■Railsアプリの開発手順
  1. リクエスト受け取るコントローラー(アクション)の定義
  2. 出力であるビューを作成する
  3. 共通デザインのレイアウトを適用
  4. データベースを作成して、アクセスするためのモデルを定義する

■アプリの作成
rails new "xxx"
■アプリの起動
rails s

■コントローラーの役割
コントローラーは、ユーザのリクエストを受け取り、
モデルやビューへその情報を渡す橋渡し役です。


■コントローラーの作成
rails g controller xxx

rails g controller users
実行で、コントローラーに対応するファイルが生成される

  • viewフォルダ     : app/views/users
  • テストコード      : test/controllers/user_controller_test.rb
  • ヘルパーメソッド: app/helpers/user_helper.rb
  • アセットファイル: app/assets/stylesheets/users.scss

Usersコントローラーへとメソッド(=アクション)を追加する
class UsersController < ApplicationController
  def index
    render plain: "Hello World!"
  end
end
■ルーティングの作成
ルーティングは、ユーザーが特定のURLにアクセスした場合に、
どのコントローラーのどのアクションに処理を振り分けるかを定義する仕組み
■ルーティングの追加
Rails.application.routes.draw do
 get "/users", to: "users#index"
end
■記述内容
  1. HTTPリクエストメソッド
  2. URLパターン
  3. コントローラー名#アクション

③ビュー
■コントローラーからビューを呼び出す
コントローラーには直接的に描画処理を記述することは可能である。しかし、それはMVCに則った設計ではない。コントローラーとビューを分離する、そしてコントローラーからビューを呼び出す関係性に作り直すことが良い設計である。

■renderメソッドの書き換え
class UsersController < ApplicationController
  def index
    render template: "user/index"
  end
end

renderは、呼び出し先がtemplateファイルならば(=xx.html.erb)省略可能
■対応するビューの新規作成
index.html.erbなどのビューファイルはテンプレートと呼ぶこともある。
index.html.erb
<div>Hello World</div>
■コントローラーから受け取った値をビューで表示する
ERBでは、
HTMLを記述するだけでなく、

  • コントローラーから受け取った値をインスタンス変数(@xxx)として使用できる。
  • 変数を表示するには<%= インスタンス変数 %>と囲む。
  • インスタンス変数は、クラスのオブジェクト(インスタンス)ごとに保持される変数

....
  @hello = "Hello World"
    render template: "user/index"
  end
end

<div><%= @hello World %></div>
■<%= %>と<% %>の違い
  • <% %>は、Rubyのコードの実行
  • <%= %>は、実行結果の戻り値の出力

<% if @hello.present? %>hello World<% end %>

■レイアウトで共通ファイルを定義

  • レイアウトは、Railsが提供する共通のデザインを管理する仕組み
  • app/views/layouts以下に配置する
  • Railsアプリのデザインはlayouts/application.html.erbを最初に読み込む
  • なので、当ファイルにヘッダー/フッターなどを書くことが可能
  • yieldメソッドは、ビューファイルの内容を表示する箇所を示すもの

 <body>
    <header>ヘッダー</header>
    <%= yield %>
    <footer>フッター</footer>
  </body>


■アセットファイルの確認
  • Sprocketという仕組みでCSS,JavaScriptは管理
  • CoffeeScript/SCSS=>JavaScript/CSSへ変換


④データベース
DBの概念
データを整理して格納する保存先
DBMS(DB Management System)の特徴

  • データにアクセスする言語
  • データが壊れないための管理
  • データへのアクセス制限
DBの種類
  • RDBMS
  • ODBMS
  • NoSQL
■RDB
  • データをテーブルという表形式で表し、複数テーブルを関連付けてデータを管理
  • データを操作する言語としてSQLを使用する
テーブル
  • テーブルの個々の列をカラム
  • テーブルの一行データをレコード
  • カラムの識別名としてカラム名
  • データ形式をしめすデータ型

リレーションについて
UserとCompanyの関連付けとid保持の例より


■SQLでテーブルの作成/削除
SQLは操作が3種類に大別

  1. DDL:DB,tableの作成/削除<--2番目に使う
  2. DCL:データ更新の確定/キャンセル
  3. DML:データの参照・作成・変更・削除<--ほぼこれ
DBの作成(SQLite3)
>sqlite3 db/sandbox sqlite3
Tableの作成
>create table users(id integer, name text);
Tableの削除
>drop table users

■SQLでのデータ操作
テーブルのレコード操作は4種類である
  • insert文 :Create : insert into users(id, name) values(1,山田太郎);
  • select文 :Read : select name from users; select * from users where id = 1;
  • update文 :Update : update users set name = '田中太郎' where id = 1;
  • delete文 :Delete : delete from users where id = 1;

⑤モデル
Railsが提供するモデルは、データベースのテーブルと対応しており、テーブルのデータを簡単に操作する機能を提供している。モデルを使えばSQLを直接記述することなく、分りやすいRubyのコードでデータを操作できる。
テーブルごとに一つのモデルが対応している。
■DBの設定
YAMLファイルにて記述。
config/database.yml
設定項目について
  • adapter :DBに接続するgem
  • pool :コネクションプーリングに使用するコネクションの上限
  • timeout :応答待ちの上限時間
  • database :データベース名
RailsコマンドでDB作成

>rails db:create

■O/Rマッピング

  • オブジェクト指向言語からRDBにアクセスする際の懸け橋になる仕組み
  • RoRにおいてはActiveRecordが相当する
ActiveRecordの特徴
  • SQLをかかずにCRUDを実現
  • RDBの関連付けをmodelクラスの関連付けで表現できること
  • データの検証機能
ActiveRecordでは、レコードを識別するカラム名は、デフォルトでidとなる。また、created_at,updated_atは自動的に追加される。

■モデルクラスの作成
rails g model Diary title:string body:text


■参考

なお、本稿は下記の書籍を底本として、投稿者が適宜リライトしたものである。
リライトの目的は、実務に照らして不要な点(環境構築など)をカットすることで、
Railsの要点を効率的にインプットするためである。

たった一日で基本が身に付く!Ruby on Rails


参考記事

■目次(書籍)

  1. Railsの概要と環境構築
  2. 新規作成とルーティングとアクセス手順
  3. コントローラからビューを作成、レイアウトの適用
  4. DBとSQLの操作
  5. モデルの役割、モデル経由のDB操作
  6. 日記アプリの作成、Scaffold
  7. データの登録、更新、削除
  8. 検証ルール
Next Post Previous Post
No Comment
Add Comment
comment url