1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsめも 三つの設計理念と処理の流れ

Posted at

はじめに

Railsの設計概念や処理の流れの基本的な部分を備忘録として残しておきます。

Rails3つの設計理念

CoC(Convention over Configuration)

「設定より規約」という意味。

従来のフレームワークのように設定を大量に記述するのではなく、ルールに則って開発することで、余計な設定を書かずに出来るだけ少ない労力でプログラミングをしよう!ということ。

ユーザークラスを「User」、データベースを「users」と複数形にすることでRailsは自動的にクラスとデータベースを繋ぐので設定などを書く必要はなくなる。

DRY(Don’t Repeat Yourself)

「同じことを繰り返さない」という意味。

情報は複数の場所に記載せず一箇所に記述をすることで、変更や修正をする場合もスムーズに行うことができる。

REST(Representational State Transfer)

RESTとはWebアプリケーションなどにおける設計概念の一つであり、
RDBMSのCRUD(create/read/update/delete)]
HTTPRequestの各メソッド(GET/POST/PUT/DELETE)
を利用して開発することで意味のつかみやすいURLを設計することができる。

mvcとそれぞれの役割

mvcとはmodel/view/controllerの頭文字であり、アプリケーションをモデル(データを扱う部分)、ビュー(ユーザーに見える部分)、コントローラ(ユーザーからのリクエストに対してモデルやビューと連携を取る部分)に分割するものである。

model

Railsアプリケーションの場合はデータベース毎にモデルが用意されており、利用者のリクエスト(url)で呼び出されたアクションは、モデルを介してSQL文を発行してデータベースとやりとりを行いデータを取得したり格納したりする。
データの保持はAction Recordというコンポーネントが担当。

view

ビューは変数を介して渡されたデータを用いてHTML文書を作成しコントローラへ返す。
アプリケーションの見た目を制御する役割を持つ。
Viewに当たるのがAction View。

controller

コントローラはユーザーからのリクエスト(url)を受けて、モデルに適切た動作を要求して、またviewを組み合わせる役割を持つ。
controllerに当たるのが。、Action Controllerとなる。

Rails処理の流れ(リクエストからレスポンスまで)

rails.png

上の図で説明すると

1:リクエストがHTTPサーバを通る
2:Railsアプリケーション内に入ると、コントローラのアクションを案内するルータがいる
3:ルータにリクエストを伝え、コントローラ・アクションに進む
4:アクションで、必要な場合はモデルに操作を要求する
5:モデルがDBで適切な動作をする、データの取り出し又は登録
6:データはアクションの中のインスタンス変数の中に渡される
7:ビューに変数が渡り、HTMLが生成される
8:生成されたHTMLが HTTPサーバを通ってレスポンスとして送られる

参考サイト

[Railsの処理の流れを理解しよう] (https://diveintocode.jp/tips/process_flow)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?