Ruby on RailsのControllerの使い方【初心者向け】
Railsでアプリケーションを作る上で大事なController。初心者向けのControllerの使い方を解説しています。どんなコマンドを使うのか、どのような表示になるのか実際に使いながら理解していきましょう。
TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。
RailsのControllerの使い方についての記事です。
Controllerとは、Ruby on Railsでアプリケーションを作成する上で非常に重要な用語です。
この記事では、Controllerという用語と実際にどのように使うのか解説していきます。
なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

今回はRubyのコントローラーについて解説しよう。

田島メンター!!コントローラーは何をするんですか〜?

そうだね、まずはRailsにおいてユーザーから送られてきたリクエストに対してどのようにデータが返されるかという手順から見てみよう。

お願いします!
Controllerとは
Controllerの役割を説明するために、ユーザーがrailsアプリケーションで作られたサービスにアクセスしてきたときのリクエストの流れを説明したいと思います。
ユーザーがブラウザ経由でrailsアプリケーションにリクエストを送ると、そのリクエストがControllerに渡されます。
すると、Controllerはリクエストの内容に応じてモデルにデータを取ってくるように命令したり、データを作成・更新するように命令します。
その後、モデルが実行したデータに関する処理結果を受け取ってビューに渡して画面が表示されるのです。
このようにControllerとはモデルとビューの仲介をする役割を担っており、railsアプリケーションの中核をなすともいえます。
もう少し具体的な例で説明します。
例えば、ユーザーがあるSNSで「Ruby on Rails」についての投稿を検索するとします。
そうすると次のような流れで処理が実行されていきます。
- Controllerに「Ruby on Rails」についての投稿を検索したいというリクエストが来る
- Controllerはモデルに対して「Ruby on Rails」についての投稿のデータを取るように命令する
- モデルが取ってきたデータをControllerが受け取り、ビューに渡す
- ビューは受け取ったデータを画面上に表示する

コントローラーに関する一連の流れはこんな感じかな。

モデルがデータベースと情報をやり取りするためのもので、ビューがユーザーに見える部分でしたね。

そしてモデルから受け取ったデータをビューに渡すのがコントローラーなんだ。次は実際にコントローラーを作成してみよう。
実際にControllerを作ってみよう
これから実際にControllerを作成していきます。
サンプルとして「Hello, World!!」と表示するControllerを作ってみます。
まずは、サンプルアプリケーションを作成していくので、次のコマンドを実行してください。
rails new sample_app cd sample_app
これでサンプルアプリケーションの準備が整いました。
Controllerファイルを作ろう
Controllerの作成をするコマンドの書式は次の通りです。
rails generate controller コントローラー名
今回はhello_controllerを作成したいと思います。コマンドは次のようになります。
rails generate controller hello
実行結果をみると「app/controllers/hello_controller.rb」が作成されています。
これでControllerを作成することができたので、次にHelloControllerに「Hello, World!!」と表示する処理を書いていきます。
テキストエディタで「app/controllers/hello_controller.rb」を開いて以下のコードを記述しましょう。
class HelloController < ApplicationController def index render text: 'Hello, World!!' end end
「index」アクションを追加して、renderメソッドで「Hello, World!!」を出力するようにしています。
これでHelloControllerのindexアクションにリクエストが来たら、「Hello, World!!」がブラウザ上に表示されるようになります。
ルーティングの設定をしよう
Controllerを作るだけではちゃんと動作をしません。どんなURLでアクセスが来たらHelloControllerのindexアクションを使うのかを設定する必要があります。
これをルーティングの設定といいます。
「config/routes.rb」ファイルに次のコードを追加してください。
Rails.application.routes.draw do get 'hello' => 'hello#index' end
これで「http://ドメイン/hello」というurlでリクエストが来たときはHelloControllerのindexアクションを使いますという設定をしています。
実際にブラウザで表示してみよう
作ってみたサンプルアプリケーションを起動してブラウザで開いたときに「Hello, World!!」と表示されるのか確認してみましょう。
次のコマンドでサンプルアプリケーションを起動させます。
rails server
起動したら「http://localhost:3000/hello」にアクセスしてみてください。
ちゃんと「Hello, World!!」と表示されているのがわかると思います。
今回はControllerの説明だったのでモデルを作成しないサンプルでしたが、このようにControllerとは、アプリケーションの処理の中核をなす役割を担っていることがわかったと思います。
以上、Railsで使うControllerの説明でした。

コントローラーがビューに値を渡す仕組みは分かったかな?

rails generateでコントローラーを作成、それによって作られたrbファイルに処理を記述してから最後にルーティングの設定ですね。

これはコントローラー以外にも当てはまることだけれど、コマンドで作成を行ったときにはどこに何のファイルが生成されたかをコンソールでよく見ておこう。

今回のように、編集するファイルの場所を確認するためにも必要ですね。心がけます!
[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。