Railsアプリケーションを作ってみる。作業の流れ編

Railsアプリケーションを作ってみる。作業の流れ編のイメージ
こんにちは。小川です。
定期的にブログを書いていると、ネタ探しが実に大変な作業だということに気づきます。
しかし最近はブログのネタを探すために作業するので、定期的に勉強や考察する時間を作るということになります。それをアウトプットするとなると、ある程度の理解が必要なので、調べているうちにまた勉強できる。そして勝手に復習できてる。いいことづくしですね。

さて今回も前回に引き続きRailsネタですが、アプリケーションをつくる前に作業の流れの確認をします。
新しい言語やフレームワークに取り組む際には、「どういう順番で何をすれば何ができるか」という流れを掴んでおくことがとても重要です。
逆に流れだけ覚えていれば、あとはどうにでもなってしまう気がします。
次から次に新しい技術が生まれるWeb業界にあっては、重要なスキルですね。

ruby-on-rails-logo

前回の記事ではscaffoldコマンドで、モデル・コントローラ・ビューが生成されるのを確認できましたので、今回は1からモデル・ビュー・コントローラを作るという前提で流れを確認します。

参考にしたのは、以下のWebサイトです。

ドットインストール – Ruby on Rails 4入門
Railsドキュメント

今回のような流れをつかむという点では、ドットインストールさんが一番ですね。
蛇足ですが、動画内でお話しされている田口さんには勝手に親近感を持っています。笑
いつもありがとうございます。

まだ環境等を設定していない方は前回の記事をご参照ください。
Railsアプリケーションを作ってみる。初歩編

さて、本題の「Railsで何かをつくる前の作業の流れ」ですが、おおまかに以下のようになります。

①モデル作成
②コントローラ作成
③ルーティング定義
④処理を記述
⑤ビュー作成

順に説明します。

①モデル作成
既製のアプリケーションの操作を行う際は、操作したいアプリケーションのディレクトリに移動しなければなりません。
移動したら、以下のコマンドを実行します。

rails generate model User name_first:string name_last:string email:string

railsの右のgenerateはgに略すことができると田口さんは言ってたので、gでもOKです。
それからデータの型はデフォルトでstringが指定されるので、stringは省略することも可能です。
そしてUserには、本来つくりたいモデルの名前が入るはずですが、命名規則として単語の最初は大文字で単数形というルールがあるようです。
好きなサイトだったらFavoriteSiteという風になります。

上記のコマンドでモデルを作成したらrakeコマンドでデータベースに反映させます。

rake db:migrate

データベースを覗いてみると、usersテーブルがつくられています。

mysql-users-table

最初小文字で複数形なのも命名規則ですね。



②コントローラ作成
コントローラを作成するには以下のコマンドを実行します。

rails generate controller Users

命名規則に従う必要があります。モデルと違う点は複数形ということですね。
これでコントローラとそれに紐づくビューディレクトリ・js/cssなどが作られました。

コントローラの場所は以下です。
app/controllers/users_controller.rb

コントローラのファイル名は最初が小文字で複数型ですね。
ではFavoriteSitesのように連なった単語のコントローラをつくるとどうでしょうか。

app/controllers/favorite_sites_controller.rb

単語の間が_(アンダースコア)で区切られてますね。
あまり細かい話をするとおおまかな作業の流れという本題を逸しますので、先に進めます。



③ルーティング定義
次にルーティングの定義を変更します。
ルーティングとは、URLとアプリケーションのパラメータを結びつける仕組みだそうです。
config/routes.rbを開き、さきほど追加したusersに関するurlを自動生成するためのソースを加えます。

resources : users

ルーティングを反映させるコマンドを実行します。

rake routes

すると、URIとパターン・ロジックが一覧となって表示されます。



④処理を記述
前回定義したルーティングとそれにまつわるURL等が生成されましたので、
usersの一覧を表示させるためのロジックをコントローラに記述します。
また、一覧は通常indexなので、usersのindexアクションに対応したロジックを書きます。

app/controllers/users_controller.rb
class UsersController < ApplicationController

  #アクションをメソッド名に使用する
  def index
    #@をつければviewの中で使用できる。
    @users = User.all
  end

end



⑤ビュー作成 users#indexに対応したビューを作成します。
前回コントローラを作成した際に、usersに対応したビューを置くディレクトリも同時に生成されましたね!
app/views/usersというディレクトリを確認したら、以下のようにビューのファイルを作成します。

アクション名.html.erb

今回はindexアクションなのでindex.html.erbです。
そしたら後は表示させるためのコードを記述します。
.html.erb内にrubyのコードを入れるには、<% %>または<%= %>と記述します。
<%=の方は実行結果を返してくれるとのことです。

User List

    <% @users.each do |user| %>
  • <%= user.name_last %> <%= user.name_first %>
  • <% end %>

あとはブラウザでhttp://example.com/users/にアクセスすればusersテーブルの一覧が取得できています。
もし表示されずにPermission deniedと注意されたら、tmp/cache/assetsのパーミッションを755か777に変更すれば表示されると思います。

userlist
作業の流れはだいたいこんな感じです。
実際のサービスではより複雑な処理や設定が必要と思いますが、
まずは練習がてら簡単なアプリケーションを作ってみるといいかもしれません。