試験に備えよう! ベーシック試験出題範囲「コントローラー開発」解説

Rails7ベーシック試験の実施に向けて、「試験に備えよう!」というこのコラム。
これまでに、Railsアプリケーション開発で特に抑えておきたい3つの要素のうち「ビュー」「モデル」の2つを取り上げました。
第5回目となる今回では、最後のひとつ「コントローラー」について試験内容の概要、抑えておきたいことを解説します。

この記事はベータ試験の内容を扱っています。ベータ試験の結果、試験内容が調整され、それに伴いこの記事が更新される可能性もあります。予めご承知おきください。(2024年7月31日)

目次

コントローラー開発

出題範囲「コントローラー開発」では、リクエストおよびレスポンスの取扱い、状態管理の方法について全体の15%の割合で出題されます。
MVCアーキテクチャにおけるコントローラーは、リクエストに従って適切なモデルを呼び出し、その結果をビューに結びつけ、レスポンスを生成します。
その名前の通り、データの入力から出力までの一連の流れをコントロールし、Webアプリケーションを実現する重要な要素です。

Railsアプリケーションでは、規約に従うことで多くのソースコードを記述すること無く、この機能を実現することができます。

規約に沿った処理の流れ、データの扱い方について抑えておきましょう。

処理の流れ

まずは「Ruby on Railsの基本」を振り返り、処理の流れをおさらいしましょう。

アクションとフィルター

コントローラーに定義されるpublicメソッドは「アクション」として扱われ、原則として規約に応じた名前のアクションが呼び出されることを思い出してください。
このアクションの呼び出しの前後に処理を実行する仕組みが「フィルター」です。
それぞれのフィルターの実行タイミング、使い方を確認しておきましょう。

  • before
  • after
  • around
  • skip

クロスサイトリクエストフォージェリ対策

Railsのコントローラーには、クロスサイトリクエストフォージェリ(CSRF)を防ぐための仕組みが用意されています。
まず、CSRFについて抑えましょう。その上で、CSRF対策を制御するメソッドの使い方を確認しましょう。

  • protect_from_forgery
  • skip_forgery_protection

リクエスト

Webアプリケーションでは、データの入力としてリクエストを扱います。
コントローラーでは、いくつかのメソッド、アクセサを通してリクエストの情報を扱うことができるオブジェクトを操作することができます。
それぞれのオブジェクトによってどのような種類の情報を得られるのか、違いと使い方を把握しておきましょう。

  • request
  • headers
  • params

Strong Parameters

マスアサインメント脆弱性を防ぐために利用できる仕組みが、Strong Parametersです。
そもそもマスアサインメント脆弱性とは何なのかを理解した上で、Strong Parametersの使い方を抑えておきましょう。

レスポンス

リクエストのデータをモデルで処理した後は、レスポンスを生成することになります。
レスポンスの種類によって、いくつかのメソッドを使い分けます。

  • ビューを利用する render メソッド
  • HTML以外の応答を返すための respond_to メソッド
  • コンテンツでは無く、ヘッダーで応答するための head メソッド
  • 別のアクションなどへ移動するための redirect_to メソッド
  • ファイルを送信する send_file メソッド
  • バイナリデータを送信する send_data メソッド

状態管理

Webアプリケーションにおいて、複数のページ間で情報を維持、管理するために用いられる仕組みが「セッション」です。
まずは、Railsから離れてこの「セッション」について学習しましょう。
コントローラーでは、セッションを扱うために以下のようなメソッドを利用できます。

  • session メソッド
  • cookies メソッド
  • flash メソッド

まとめ

ベーシック試験の試験範囲「コントローラー開発」について解説しました。
規約に従うことが重要なRailsアプリケーション開発ですが、コントローラーは特にその性質が強く表れる要素です。
規約に従うことで、シンプルで見通しがよく、脆弱性を持たないコントローラーを実現することができます。
そのためには、Railsアプリケーション固有ではないWebアプリケーションの仕組み、処理の流れ、代表的な脆弱性についても把握しておく必要があります。
この試験の範囲外になる部分もありますが、是非体系立てて知識を身につけ、実践的なWebアプリケーションをRailsを使って開発できるようになりましょう。

具体的な学習については、Ruby on Rails チュートリアルをお薦めしています。
Ruby on Rails チュートリアル
https://railstutorial.jp/

また、今後公式問題集の発売も予定しておりますのでお待ちください。

著者/文責: 泉 隼人
・Rails技術者認定試験運営委員会 テクニカルアドバイザー
・神奈川工科大学 情報工学科 客員研究員
・鹿児島県 喜界島出身。10歳の頃N88-BASICに触り、コンピューティングにのめり込む
・興味の赴くまま様々なプラットフォーム、言語を楽しみつつ10数年来に渡りRuby on Railsでの開発業務に従事する
・Webサイト https://9uelle.jp/

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次