2
2

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 1 year has passed since last update.

MVCを擬人化してみた

Last updated at Posted at 2023-07-17

ルーティング、コントローラー、モデル、マイグレーション、ビューの擬人化

| 思考整理 |

新しいアプリケーションの構造を考える際、どことどこにコントローラーが必要なんだ?
必要なモデルは?と混乱したため、擬人化してみた。

| 場面設定 | 市役所(アプリケーション)

ルーティング:総合受付

役割:リクエストに対応する最適な窓口を案内する
説明:ルーティングは、今日はいかがなさいましたか?とそれぞれのリクエストに対応する最適なコントローラーの窓口(アクション)を案内します。総合受付のような役割を果たしています。
総合受付なので、市役所(アプリケーション)には1つだけで十分です。

コントローラー:窓口受付

役割:リクエストに対応する最適な処理を案内する
説明:コントローラーは、受け取ったリクエストに基づいて適切な処理を行います。今日はいかがなさいましたか?とリクエストに応じた書類(ビュー)を渡します。
new/create:住民登録届 edit/update:住所変更届 destroy:転居届 show:住民票の写し発行 など
内容ごとにやることがことなるので、取り扱う内容ごとに複数必要です。
※同じnew/createでも住民登録と保育所利用者登録は違う窓口(コントローラー)

ビュー:申込用紙、案内チラシ

説明:ビューは、市民が見る情報そのものです。申込用紙(form)に記入したり、情報を閲覧できるようにします。

モデル:窓口の人

役割:記入内容のチェックを行う
説明:モデルは申込用紙の記入内容のチェック(バリデーション)を行います。
扱うデータベースごとに必要なので、市役所(アプリケーション)内の各窓口に専属の人がいます。

マイグレーション:書類やデータ管理の人

説明:マイグレーションは窓口の先輩(モデル)に言われたとおりに適切な場所にデータをファイリングしたり、データベースにデータを入れたりします。
データベースごとに専属の係が必要です。住民登録(user)の係が投書(comment)の管理はしません。縦割りです。

読んでいただいてありがとうございました。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?