【初学者支援】RailTutorialで唯一暗記したほうがいいところ


どうも、くぼはるです。

僕は普段初学者にプログラミングを教えるときに、

「丸暗記は絶対するな!」と声を大にして言います。

ですが、今回はあえて言いましょう。

「ここだけは暗記してでも押さえておけ!」と。

ここってどこなんだって話ですよね。

それは、「MVCアーキテクチャの概念図」です。

うわーめっちゃ読み飛ばしたいわー横文字つらいわーって思ったそこのあなた!

まぁ否定はしません。僕も同じこと思いました。

ですが、RailsTutorialでここを読み飛ばして先に行ってしまうのと、

しっかりと暗記して、先へ進むのとでは、少なくとも100倍以上理解度が違います。

なぜかと言うと、この先何100回と、この図を使うときがくるからです。

頭の中でこの図を思い浮かべながら、「今、僕は④の流れをコードで書いている」と思いながら書くのと、

「魔法の呪文だぁ」「なんか知らないけど動いたぁ」「次いこー」って感じでコード書くのとでは、理解度が段違いです。

これを機に「MVCアーキテクチャの概念図」を頭に叩き込んでソラでかけるようになっておいてください。

以下、具体的な使い方です。参考になれば幸いです。
ユーザーの一覧画面を表示する際の例です。

①リクエスト(ブラウザ)からルーティングへ情報が送られる

routes.rb
# ルーティング
# リクエストから情報が詰まったカプセルが届きました
# どのコントローラーのどのアクションにそのボールを渡すかという情報がそこには入っています
# その情報を元にどこに仕事を渡すか、ルーティングが判断してカプセルを渡します
resources :users, only: :index

②ルーティングからコントローラーのアクションへ情報が送られる

users_controller.rb
class UsersController < ApplicationController
  # この段階で、indexさんに仕事を任せた状態
  # これからindexおじさんは仕事をしていきます
  def index
    # ③ ページ表示に必要なユーザ一覧データの貰い方を知っているUserモデルにデータ提供を依頼します
    # ④ 依頼を受けたモデルはallメソッドを使ってデータベースに「ユーザ一覧データくれ」と命令します
    # ⑤ データベースはモデルからきた命令に応じてデータを渡します
    # ⑥ Userモデルは依頼を達成するべく、ユーザ一覧をコントローラーに渡します(結果が@usersの中身
    @users = User.all
  end
end

⑦Usersビューおばさんに必要なデータを全部渡して、「完成されたページをください」と依頼する

views/users/index.html.erb
<%= @users.each do |user| %>
  <%= user.name %> | <%= user.email %>
<% end %>

⑧Users#indexビューおばさんはindex.html.erbテンプレートと渡されたデータを使って完成されたページを作成し、それをindexおじさんに渡します

⑨indexおじさんはそれをレスポンス(ブラウザに返すこと)しましたとさ。

ちゃんちゃん。