【Rails6】初めての「Hello World」
ローカルサーバーも立ち上がったところで、Railsで「Hello World」を表示していきましょう!
RailsはMVCモデルという仕組みにしたがって動いています。
MVCモデルについては後ほど詳細をお話するので、今回は少しだけ仕組みを解説します。
MVCにおいて重要な役割
・モデル(Model)
・ビュー(View)
・コントローラー(Controller)
Model-View-Controllerの頭文字でMVCモデルとなっています
以上に加えてルーティングが関連しあってWebアプリケーションは機能しています。(ルーティングはMVCモデル以外でも機能している共通機能のため含まれていません)
イメージとしてはこんな感じです。
よって、RailsにおいてWebアプリケーションを機能させていくためには
・コントローラー(Controller)
・ルーティング(Routing)
・モデル(Model)
・ビュー(View)
以上、4つの要素に関しての挙動を記述していきます。(MVCに関しては、記述しないこともあるので、必ず記述する必要ないことを覚えておきましょう)
重複になりますが、「機能実装は4つの記述によって成立します(ただし、MVCに関しては記述しないこともある)」と覚えておいてください。
今回は「Hello World」を表示するだけのプログラムを作成します。
この機能実装のために必要な記述は以下になります
Hello Worldを表示するまでの流れ
( i ) コントローラーの作成
( ii ) ルーティングの作成
( iii ) ビューの作成
※今回の「Hello World」の表示では、モデルに対する記述が必要ありません。
まずは、コントローラーを作成していきましょう。
( i )コントローラーの作成
コントローラーは以下のコマンドで作成できます。
$ rails g controller static_pages
【コマンド解説】
# rails...railsコマンドであることを示す
# g...generateの略。何かを作成するときのrailsコマンド
# controller...gに対する目的語。controllerをgenerateする指示をしている
# static_pages...controllerの名称。◆◆◆慣習として「複数形」での作成が一般的◆◆◆
注意点としては、railsのエンジニアの慣習として、controllerの名称を「複数形(sをつける)」ということです。
先ほどのコマンドを入力すると以下のように表示されたのではないでしょうか?
Running via Spring preloader in process 7795
create app/controllers/static_pages_controller.rb
invoke erb
create app/views/static_pages
invoke test_unit
create test/controllers/static_pages_controller_test.rb
invoke helper
create app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/static_pages.scss
先ほどのコマンド1つでコントローラーに関するファイルが自動で生成されました。
そもそもコントローラーって?
コントローラーではアクションを定義して、アプリケーションに命令を送ります。
※自分の知る限りでは、何かしらの指令をアプリケーションに送る場合、コントローラーの記述は必ず行います。WEBアプリケーションにおける中心的な存在と考えていいかと思います。モデル(Model)やビュー(View)は使わないこともあります。
まずはコントローラーにビュー(View)を開くためのアクションを定義しましょう。
まずは以下のパスにあるstatic_pages_controller.rbを開いてみましょう。
/hello_app/app/controllers/static_pages_controller.rb
開いたら下のコードを貼り付けて、保存(command + s)してください。
class StaticPagesController < ApplicationController
#ここから記述
def hello
end
#ここまで記述
end
#【コード解説】
# StaticPagesControllerを呼び出して
# その中のhelloアクションを実行すると
# hello.html.erbが生成されて、レスポンスとしてユーザーに送り返されます。
# helloアクションには何も記述されていませんが、デフォルト設定で↑が実行されます。
# アクションの定義の方法
# def (アクション名)
# (ここにアクションの内容が記述される)
# end
これでコントローラーはビュー(View)を開くためのアクションを実行してくれます。
ここでもう一度MVCモデルのイメージを確認してみましょう。
コントローラーのアクションの定義は完了しましたが、現状では、ルーティングが定義できていないので、「ユーザーからのリクエスト(①)」がコントローラーにたどり着く(②)ことができません。
ということでルーティングの作成をしていきましょう。
( ii )ルーティングの作成
それでは以下のパスのファイルにてルーティングを定義していきます。
/hello_app/config/routes.rb
ルーティングには以下のコードを書き込んでください。
Rails.application.routes.draw do
#ここから追加
get "static_pages/hello" => "static_pages#hello"
#ここまで追加
end
#【コード解説】
# "static_pages/hello"というurlリンクからのリクエストをgetした(受け取った)時
# static_pagesコントローラーの#helloアクションを実行
# このルーティングの記述によってユーザーからのリクエストが適切にコントローラーに届きます。
記述後は保存(command + s)してください。
以上のコードでユーザーからのリクエストがコントローラーへと適切に送信されます。
次は、コントローラーのアクションが生成するビューファイルを作成していきましょう。
( iii )ビューの作成
まず、以下のコマンドでコントローラーのアクションによって開けるビューファイル(hello.html.erb)を作成しましょう。
touch app/views/static_pages/hello.html.erb
#【コマンド解説】
# touchコマンドはファイルを作成してくれるコマンド
# パスを指定してファイル名を記述するとそのパスにファイルが生成される。
# ファイル名だけ指定すると、今いるディレクトリでファイルが生成されます。
それでは、以下のコードをビューファイルに記述してください。
<p>Hello World</p>
記述後は保存(command + s)してください。
それでは、いったんサーバーを落として(ctrl + c)以下のコードで再起動してください。
$ rails s
ブラウザのルートにルーティングの前半部分で指定したパスを続けて更新してください。
下のように「Hello World」が表示されているはずです
まとめ
お疲れ様です。
ここまでで【Rails6】初めての「Hello World」は完了です。
次章ではここまでのRailsプロジェクトの履歴(バージョン)をgitで保存していきます
gitでのバージョン管理はエンジニアにとって必須スキルですので、、時間をかけて理解することをおすすめします。
最初は何が起こっているのかわかりにくいかもしれませんが、丁寧に解説していくので頑張っていきましょう。
それでは下のブログリンクからGitの使い方【git pushまでの流れ】に挑戦しましょう。