近年、Ruby on Railsの求人情報は上昇傾向にあり、この3年間で4倍に増加しています。(2025年7月時点)この背景にあるのはコロナ禍によって非対面営業に注目が集まり、アフターコロナではWebを活用したビジネスの効率化を進める企業が増えたことを表しています。またDXはデジタルを活用したビジネスの変革になるため、顧客が最初に訪問する可能性が高いWebサイトからマーケティングオートメーションシステム、社内基幹システムまでを全て効率的なデータ連携・活用と分析が必要になるため、DXを進める企業が増えるとともにRailsを含むWeb系エンジニアの求人数が増加していると考えられています。この急激な二―ズ増加に対応するべく、最新のRailsバージョンに対応したRails 7 技術者認定ベーシック試験を実施し、Railsエンジニアの育成における学習のメジャメントとして提供することといたしました。
Rails 7 技術者認定ベーシック試験概要
名称:Rails 7 技術者認定ベーシック試験
通称:Rails7ベーシック試験
資格名:Rails7認定ベーシック技術者
試験概要:Ruby on Railsの基本文法を問う試験
対応バージョン:Rails 7.1
受験料金:ベーシック試験10,000円/回(税抜)
※学割・教員割価格:5,000円(税抜)
試験会場:全国のオデッセイ コミュニケーションズ認定試験会場(CBT)
設問数:40問
試験時間:60分
合格基準:7割正解
主教材:Rails7技術者認定べーシック試験公式教科書(ベータ版)
参考教材
・Ruby on Rails チュートリアル https://railstutorial.jp
・Railsガイド https://railsguides.jp
出題形式:選択式(単一または複数選択)

ベーシック試験出題範囲
| 項目 | 出題割合 |
| Ruby on Railsの基本 | 5% |
| Scaffolding機能によるRails開発の基礎 | 5% |
| ビュー開発 | 20% |
| モデル開発 | 20% |
| コントローラ開発 | 15% |
| ルーティング | 5% |
| テスト | 5% |
| クライアントサイド開発 | 15% |
| その他のコンポーネント | 5% |
| Railsの高度な機能 | 5% |
<補足>
・gem install rails –version=’~>7.1′ でインストールされる範囲のみを出題する。プラグイン、rubygemsは出題範囲には含めない。
・前提OSはUnix系だが、基本的にはOSに依存しない出題とする。
・本試験では実行環境については問わない。
詳細とお申し込み
詳細とお申し込みは以下を参照ください。
https://cbt.odyssey-com.co.jp/railsce/rails7.html
主教材概要
ベータ版を発売中です。お買い求めは以下よりお願いします。
充実の471ぺージの教科書です。演習問題付です。
Rails 7 技術者認定ベーシック試験公式教科書ベータ版
著者:小澤昌樹 発行:Rails技術者認定試験運営委員会
価格(税込):ペーパーバック版 2,497円 Kindle版 1250円
ページ数:471ページ
https://www.amazon.co.jp/dp/B0FZFYLRZ2/
目次は以下を参照ください。
発行によせて P,3
試験について P,4
Chapter 1 Ruby on Railsの基本 P,24
1.1 MVCアーキテクチャ P,25
1.2 Rails プロジェクトの作成 P,27
1.3 Active Record(ORM) P,28
1.4 ルーティング P,29
1.5 ビューとテンプレートエンジン P,30
1.6 練習問題 P,31
問題 1-1 P,31
問題 1-2 P,32
Chapter 2 Scaffold機能によるRails開発の基礎 P,33
2.1 Scaffoldのメリット P,34
2.1.1 開発スピードの向上 P,34
2.1.2 一貫性のあるコード生成 P,34
2.1.3 簡単なカスタマイズ P,35
2.2 Scaffoldのデメリット P,36
2.2.1 本番環境での使用は推奨されない P,36
2.2.2 不要なアセットの生成 P,36
2.3 Scaffoldの基本的な使い方 P,38
2.4 Scaffold の発展的な使い方 P,40
2.4.1 Scaffold でのカスタムアクションの追加 P,40
2.4.2 API 専用 Scaffold の利用 P,41
2.4.3 Scaffold のカスタムテンプレートを利用 P,42
2.4.4 Scaffold で生成されたコードの削除 P,44
2.4.5 Scaffold で生成されるテスト P,44
2.5 Scaffoldコマンドのオプション確認方法 P,47
2.6 練習問題 P,48
問題 2-1 P,48
問題 2-2 P,50
問題 2-3 P,52
問題 2-4 P,53
Chapter 3 ビュー開発 P,54
3.1 ERBテンプレート P,55
3.1.1 ERB の基本的な使い方 P,55
3.1.2 ERB の基本構文 P,55
3.1.3 ERB での制御構造 P,57
3.1.4 ビューで使用できる変数 P,58
3.1.5 改行をHTMLに反映させる方法 P,60
3.2 レイアウトとレンダリング P,63
3.2.1 レイアウトの基本 P,63
3.2.2 レイアウトの変更 P,64
3.2.3 ビューの部分レンダリング P,64
3.3. ビューパスの変更 P,65
3.3.1 prepend_view_pathとappend_view_path の基本 P,65
3.3.2 マルチテナントアプリケーション P,67
3.3.3 管理画面(Admin)の独自ビュー P,68
3.4. パーシャル(Partial) P,70
3.4.1 パーシャルの基本と作成方法 P,70
3.4.2 パーシャルのレンダリング P,71
3.4.3 コレクションのレンダリング P,71
3.4.4 パーシャルにデフォルト値を設定する P,72
3.4.5 パーシャルのネスト P,73
3.4.6 パーシャルを利用する際の注意点 P,73
3.5 ヘルパーメソッド P,75
3.5.1 文字列操作 P,75
3.5.2 リンク生成 P,75
3.5.3 画像とメディアの埋め込み P,78
3.5.4 JavaScript ファイルの読み込み P,79
3.5.5 その他の便利なヘルパーメソッド P,80
3.6 フォーム P,81
3.6.1 form_with ヘルパー P,81
3.6.2 form_tag の活用 P,82
3.6.3 form_for について P,82
3.6.4 その他の入力ヘルパー P,83
3.6.5 フォーム送信時のボタン操作 P,84
3.6.6 ファイルアップロードフォーム P,85
3.6.7 フォームのバリデーションとエラーメッセージの表示 P,85
3.7 国際化(I18n) P,87
3.7.1 ロケールファイルの設定 P,87
3.7.2 翻訳の呼び出し P,88
3.7.3 ネスト構造の翻訳データ P,88
3.7.4 モデルのバリデーションメッセージの翻訳 P,89
3.7.5 デフォルトの言語設定の変更 P,90
3.7.6 ユーザーごとの言語設定 P,90
3.8 テンプレートエンジンの選択 P,92
3.8.1 ERB の例 P,92
3.8.2 Slim の例 P,92
3.8.3 HAML の例 P,92
3.8.4 Jbuilder:JSON の生成 P,93
3.8.5 .builder テンプレート:XML の生成 P,96
3.8.6 Vue.js や React との統合 P,97
3.9 ビューにおけるベストプラクティス P,100
3.9.1 ビューの肥大化を防ぐ P,100
3.9.2 キャッシュの利用 P,101
3.10 練習問題 P,102
問題 3-1 P,102
問題 3-2 P,103
問題 3-3 P,104
問題 3-4 P,105
問題 3-5 P,107
問題 3-6 P,109
問題 3-7 P,111
問題 3-8 P,112
問題 3-9 P,113
問題 3-10 P,114
Chapter 4 アセット管理 P,116
4.1 アセットパイプラインとは P,117
4.2 Propshaft の導入と設定方法 P,118
4.2.1 基本設定 P,118
4.2.2 連携について P,118
4.2.3 キャッシュ戦略 P,119
4.3 アセットの配置場所 P,120
4.4 CSSの読み込み方法 P,122
4.4.1 アセットパイプラインを通じたCSSの読み込み P,122
4.4.2 外部CSSフレームワーク(Tailwind CSS, Bootstrap)の使用 P,122
4.4.3 CSS圧縮ツール P,127
4.4.4 CSSの事前コンパイルと最適化 P,127
4.5 JavaScriptの読み込み方法 P,129
4.5.1 Webpacker の廃止と Import mapsの導入 P,129
4.5.2 外部CDNのJavaScriptを利用 P,131
4.5.3 jsbundling-rails の使用 P,132
4.5.4 importmap-rails と jsbundling-rails の使い分け P,132
4.5.5 トラブルシューティング P,133
4.6 画像の管理 P,134
4.6.1 アセットの画像ディレクトリの設定方法 P,134
4.6.2 WebP 画像のサポート P,135
4.7 アセットのコンパイル(本番環境) P,136
4.8 よくあるエラーと対策 P,137
4.8.1 アセットが読み込まれない場合 P,137
4.8.2 CSSやJavaScriptが反映されない場合 P,137
4.9 練習問題 P,138
問題 4-1 P,138
問題 4-2 P,139
問題 4-3 P,140
問題 4-4 P,141
問題 4-5 P,142
問題 4-6 P,143
問題 4-7 P,144
Chapter 5 クライアントサイド開発 P,145
5.1 Turbo & Stimulus の活用 P,146
5.1.1 Turbo の特徴と機能 P,146
5.1.2 Turbo Frames P,146
5.1.3 Turbo Streams P,147
5.1.4 Turbo Drive P,148
5.1.5 Stimulus P,148
5.2 練習問題 P,150
問題 5-1 P,150
問題 5-2 P,151
問題 5-3 P,152
問題 5-4 P,153
問題 5-5 P,154
Chapter 6 モデル開発 P,155
6.1 Active Record の基本 P,156
6.1.1 モデルの作成 P,156
6.1.2 モデルの基本構造 P,157
6.1.3 基本的な操作 P,158
6.2 マイグレーション P,160
6.2.1 マイグレーションの作成 P,160
6.2.2 マイグレーションのロールバック P,162
6.3 バリデーション P,163
6.3.1 基本的なバリデーション P,163
6.3.2 カスタムバリデーション P,164
6.4 コールバック P,166
6.4.1 基本的なコールバック P,166
6.5 アソシエーション P,168
6.5.1 一対多(has_many) P,168
6.5.2 多対多(has_many :through) P,169
6.6 クエリの実行 P,172
6.6.1 基本的なクエリ P,172
6.6.2 高度なクエリ P,173
6.6.3 非同期クエリの追加 P,173
6.6.4 その他の便利なクエリメソッド P,174
6.7 その他のデータベースのサポート P,176
6.7.1 PostgreSQL のサポート P,176
6.7.2 MySQL のサポート P,177
6.8 複数データベース P,178
6.9 データ暗号化 P,179
6.9.1 データ暗号化 P,179
6.9.2 データシリアライズ P,179
6.10 複合主キー P,181
6.10.1 複合主キーの概要 P,181
6.10.2 実装方法 P,182
6.10.3 注意点 P,182
6.11 Active Model P,184
6.12 練習問題 P,186
問題 6-1 P,186
問題 6-2 P,187
問題 6-3 P,188
問題 6-4 P,189
問題 6-5 P,190
問題 6-6 P,191
問題 6-7 P,192
問題 6-8 P,193
問題 6-9 P,194
問題 6-10 P,195
問題 6-11 P,198
問題 6-12 P,199
問題 6-13 P,200
Chapter 7 コントローラ開発 P,201
7.1 MVC アーキテクチャにおけるコントローラの役割 P,202
7.1.1 リクエストからレスポンスまでの流れ P,202
7.1.2 P,コントローラの命名規約 P,203
7.2 メソッドとアクション P,205
7.2.1 アクションの基本 P,205
7.2.2 アクションの種類 P,205
7.2.3 カスタムアクション P,207
7.2.4 カスタムレイアウトの適用 P,208
7.3 パラメータの取り扱い P,211
7.3.1 ハッシュと配列のパラメータ P,211
7.3.2 Strong Parameters(ストロングパラメータ) P,212
7.4 フィルタの活用 P,214
7.4.1 before_action P,214
7.4.2 around_action と after_action P,215
7.4.3 skip_before_action と skip_after_action P,217
7.4.4 フィルタ利用時の注意点 P,217
7.5 Concerns の活用 P,219
7.5.1 共通処理のモジュール化 P,219
7.5.2 Concerns の利用 P,220
7.5.3 Concerns のメリット P,221
7.6 セッションとFlash P,222
7.6.1 ユーザーのIPアドレスの取得 P,222
7.6.2 Cookie の利用 P,223
7.6.3 セッションと Cookie の違い P,224
7.7 レンダリング P,225
7.7.1 特定のビューをレンダリング P,225
7.7.2 リダイレクトの使用 P,226
7.7.3 バイナリデータの送信 P,226
7.7.4 リクエストされたフォーマットに応じたレスポンス P,227
7.7.5 404 Not Found ステータスコードを返す P,227
7.7.6 CSRF対策の無効化 P,228
7.7.7 リソースの新旧チェック P,229
7.8 例外処理とエラーハンドリング P,230
7.8.1 rescue_from を使った例外処理 P,230
7.8.2 rescue_from を使用するメリット P,231
7.8.3 複数の例外を処理する P,231
7.8.4 rescue_from の注意点 P,232
7.8.5 その他の例外処理 P,233
7.8.6 エラーハンドリングのベストプラクティス P,234
7.9 練習問題 P,236
問題7-1 P,236
問題7-2 P,238
問題7-3 P,240
問題7-4 P,242
問題7-5 P,243
問題7-6 P,244
問題7-7 P,245
問題7-8 P,246
問題7-9 P,247
問題7-10 P,248
Chapter 8 ルーティング P,249
8.1 ルーティングの基本 P,250
8.1.1 ルーティングの構文 P,250
8.1.2 HTTPメソッドと役割 P,250
8.2. RESTful ルーティング P,252
8.2.1 resource と resources の違い P,253
8.2.2 resources のカスタマイズ P,253
8.3 カスタムルーティング P,259
8.3.1 match を使ったカスタムルーティング P,259
8.3.2 名前空間(namespace)を使ったルーティング整理 P,260
8.3.3 scope を使ったカスタマイズ P,262
8.3.4 controller オプションを使ったルートの変更 P,262
8.4. ルーティングの変更 P,264
8.4.1 ルートの追加と変更 P,264
8.4.2 ルートの削除 P,264
8.4.3 ルートの変更を確認する P,265
8.4.4 ルートの変更を適用する際の注意点 P,265
8.5. ルーティング設計のポイント P,266
8.5.1 RESTful 設計を優先する P,266
8.5.2 DRY 原則(Don’t Repeat Yourself)を意識する P,266
8.5.3 直感的な URL を設計する P,267
8.5.4 match や get の適切な使用 P,267
8.5.5 名前空間(namespace)を活用する P,268
8.5.6 constraints を活用したルーティングの制限 P,268
8.5.7 SEO を考慮したルーティング P,269
8.5.8 パフォーマンスを意識したルーティング設計 P,270
8.6 練習問題 P,272
問題 8-1 P,272
問題 8-2 P,274
問題 8-3 P,275
問題 8-4 P,277
問題 8-5 P,279
Chapter 9 テスト P,281
9.1 Rails におけるテストの基本 P,282
9.1.1 アサーションメソッドの使い方 P,282
9.1.2 コントローラテスト P,286
9.1.3 モデルテスト P,287
9.1.4 統合テスト P,288
9.1.5 APIテスト P,290
9.1.6 システムテスト P,292
9.2 ヘッドレスモード P,297
9.2.1 Rails におけるシステムテストの設定 P,297
9.2.2 ヘッドレスモードを無効にする方法 P,298
9.2.3 ヘッドレスモードの適用例 P,298
9.2.4 ヘッドレスブラウザの活用 P,299
9.3 テストデータの準備 P,300
9.3.1 Fixtures を使う P,300
9.3.2 Factory Bot を使う P,301
9.4 ファイルアップロードのテスト P,304
9.4.1 ファイルアップロードのテスト例 P,304
9.4.2 ファイルアップロード時の注意点 P,305
9.5 テスト駆動開発(TDD) P,309
9.5.1 TDD の流れ P,309
9.5.2 Rails における TDD の実践 P,311
9.6 CI/CD(継続的インテグレーション)の活用 P,312
9.7 Rails 7.1 のテストに関する新機能 P,314
9.7.1 Turbo Streams のテスト P,314
9.7.2 assert_changes ヘルパー P,314
9.7.3 Active Job のテスト改善 P,315
9.7.4 assert_enqueued_with での Active Job テスト P,315
9.8 練習問題 P,316
問題 9-1 P,316
問題 9-2 P,317
問題 9-3 P,318
問題 9-4 P,319
問題 9-5 P,320
Chapter 10 その他のコンポーネント P,321
10.1 Action Mailer P,322
10.1.1 メール送信の流れと設定 P,322
10.1.2 メールの作成と送信 P,323
10.1.3 ビュー(メールテンプレート)の作成 P,325
10.1.4 メールのプレビュー P,326
10.1.5 メールのカスタマイズ P,327
10.1.6 送信ログとエラーハンドリング P,328
10.2 Action Mailbox P,331
10.2.1 仕組み P,331
10.2.2 セットアップとルーティング設定 P,332
10.2.3 受信メールの処理 P,333
10.2.4 メール処理のテスト P,334
10.3 Action Text P,337
10.3.1 セットアップ P,338
10.3.2 モデルへの適用 P,338
10.3.3 フォームの作成と表示 P,339
10.3.4 画像とファイルのアップロードおよび表示 P,341
10.3.5 アクセス制御とセキュリティ P,341
10.3.6 Action Text のカスタマイズ P,342
10.3.7 Action Text のテスト P,342
10.4 Active Job P,345
10.4.1 セットアップ P,346
10.4.2 ジョブの作成と実行 P,347
10.4.3 ジョブのリトライとエラーハンドリング P,348
10.4.4 ジョブの遅延実行とスケジューリング P,349
10.4.5 ジョブの管理と監視 P,350
10.4.6 Active Job のテスト P,351
10.5 Active Storage P,353
10.5.1 ストレージの設定 P,353
10.5.2 モデルへの適用 P,355
10.5.3 フォームの作成と表示 P,356
10.5.4 セキュリティとアクセス制御 P,358
10.5.5 Active Storage のテスト P,360
10.6 Action Cable P,362
10.6.1 セットアップ P,363
10.6.2 チャンネルの作成と実装 P,364
10.6.3 フロントエンドとの連携 P,366
10.6.5 ブロードキャストと非同期通信 P,368
10.6.6 認証とセキュリティ P,369
10.7 練習問題 P,371
問題 10-1 P,371
問題 10-2 P,372
問題 10-3 P,373
問題 10-4 P,374
問題 10-5 P,375
問題 10-6 P,376
問題 10-7 P,377
問題 10-8 P,378
Chapter 11 Rails 7.1の主な新機能と改善点 P,379
11.1 Dockerfileの自動生成 P,380
11.1.1 実装方法 P,380
11.1.2 Dockerfileの詳細 P,381
11.1.3 Docker Composeとの連携 P,382
11.1.4 メリット P,383
11.1.5 注意点 P,384
11.2 Zeitwerkによるオートローディング P,385
11.2.1 実装方法 P,386
11.2.2 Zeitwerkの設定 P,387
11.2.3 メリット P,388
11.2.4 注意点 P,388
11.3 並列テストの実行 P,390
11.3.1 使い方 P,390
11.3.2 メリット P,391
11.3.3 データベースの分離 P,391
11.3.4 並列テスト時の注意点 P,392
11.3.5 並列テストのデバッグ P,393
11.4 Active Recordで複合主キーのサポート P,394
11.4.1 実装方法 P,394
11.4.2 メリット P,396
11.4.3 注意点 P,397
11.5. ActiveRecord::Base.normalizes の追加 P,398
11.5.1 正規化(Normalization)とは P,398
11.5.2 メールアドレスを小文字&トリム P,398
11.5.3 電話番号のフォーマットを統一 P,399
11.5.4 カスタム正規化メソッドの使用 P,400
11.5.5 メリット P,401
11.5.6 注意点 P,402
11.6 ActiveRecord::Base.generates_token_for の追加 P,403
11.6.1 これまでのトークン生成方法 P,403
11.6.2 Rails 7.1でのトークン生成 P,404
11.6.3 実用例 P,406
11.6.4 メリット P,407
11.7 非同期クエリの導入 P,409
11.7.1 従来の同期クエリ P,409
11.7.2 非同期クエリの書き方 P,409
11.7.3 処理の流れ P,410
11.7.4 メリット P,410
11.7.5 非同期クエリの具体的な使用例 P,411
11.7.6 非同期クエリの制約 P,412
11.8 マイグレーション時の主キー設定 P,414
11.8.1 これまでの問題点 P,414
11.8.2 Rails 7.1 の改善 P,415
11.8.3 実装方法 P,415
11.8.4 メリット P,417
11.8.5 P,注意点 P,418
11.9 response.parsed_body の強化 P,419
11.9.1 JSON のパターンマッチング P,419
11.9.2 HTML の Nokogiri 解析 P,420
11.10 ActionView::TestCase.register_parser の導入 P,421
11.10.1 背景と目的 P,421
11.10.2 基本的な使い方 P,421
11.10.3 テストケースの例 P,422
11.10.4 メリット P,422
11.11 ActiveJobにperform_all_later の追加 P,424
11.11.1 従来のジョブ実行方法 P,424
11.11.2 perform_all_later の導入 P,424
11.11.3 メリット P,425
11.11.4 具体的な使用例 P,425
11.11.5 制約・注意点 P,426
11.12 ActiveJob::Base にafter_discard コールバックの追加 P,429
11.12.1 従来の問題点 P,429
11.12.2 具体的な使用例 P,429
11.12.3 メリット P,431
11.12.4 注意点 P,431
11.13. ジョブのエンキュー元のログ記録 P,433
11.13.1 従来の問題 P,433
11.13.2 実装方法 P,433
11.13.3 活用例 P,434
11.13.4注意点 P,435
11.14. delivery_method_options で動的な SMTP 設定 P,436
11.14.1 従来のメール送信設定の課題 P,436
11.14.2 基本的な使い方 P,436
11.14.3 利用シーン P,437
11.14.4 メリット P,437
11.15 Action Mailboxにbounce_now_with を追加 P,438
11.15.1 従来の課題 P,438
11.15.2 基本的な使い方 P,439
11.15.3 バウンス通知の仕組み P,440
11.15.4 bounce_now_with を導入するメリット P,441
11.15.5 注意点 P,442
11.16 UTF-8 でないメールの処理 P,444
11.16.1 従来の課題 P,444
11.16.2 改善点 P,445
11.16.3 実装方法 P,446
11.16.4 メリット P,447
11.16.5 注意点 P,448
11.17. X-Forwarded-To の受信者リスト対応 P,449
11.17.1 これまでの問題点 P,449
11.17.2 改善点 P,450
11.17.3 実装方法 P,450
11.17.4 メリット P,451
11.17.5 注意点 P,451
11.18 バリアントの削除機能追加 P,453
11.18.1 これまでの課題 P,453
11.18.2 改善点 P,453
11.18.3 purge_variant を使うべきケース P,454
11.19 CSRF 保護の強化 P,455
11.19.1 CSRF 保護の基本 P,455
11.19.2 CSRF 保護の強化ポイント P,455
11.19.3 メリット P,456
11.20 Rails 7.1 における削除・非推奨の機能 P,458
11.20.1 削除された機能 P,458
11.20.2 非推奨となった機能 P,459
11.21 練習問題 P,461
問題 11-1 P,461
問題 11-2 P,462
問題 11-3 P,463
問題 11-4 P,464
問題 11-5 P,465
問題 11-6 P,466
問題 11-7 P,467
問題 11-8 P,468
問題 11-9 P,469
問題 11-10 P,470