ホームに戻る

Ruby on Rails コース

Ruby on Railsの基本的なWebアプリケーション開発を学びましょう

初級

無料で学習可能

初級Rails基礎
問題1: rails new - 新しいアプリケーション作成
Ruby on Railsで新しいWebアプリケーションを作成する基本的なコマンドを学習します。 📝 タスク 1: 新しいRailsアプリケーションの作成 - 「blog_app」という名前の新しいRailsアプリケーションを作成してください 📝 タスク 2: Railsバージョンの確認 - インストールされているRailsのバージョンを確認してください 📝 タスク 3: ディレクトリの移動 - 作成したアプリケーションのディレクトリに移動してください 📝 タスク 4: ファイル構造の確認 - 生成されたファイルとディレクトリを表示してください
初級Rails基礎
問題2: rails server - サーバー起動・停止
Railsアプリケーションの開発サーバーを起動する方法を学習します。 📝 タスク 1: 基本的なサーバー起動 - Railsサーバーを起動するコマンドを入力してください 📝 タスク 2: 省略形でのサーバー起動 - サーバー起動コマンドの省略形を使用してください 📝 タスク 3: ポート番号を指定して起動 - ポート3001でサーバーを起動してください 📝 タスク 4: IPアドレスを指定して起動 - 全てのIPアドレスからアクセス可能にしてサーバーを起動してください
初級Rails基礎
問題3: bundle install - Gem依存関係管理
RailsアプリケーションのGem(ライブラリ)依存関係を管理するBundlerの使い方を学習します。 📝 タスク 1: Gemのインストール - Gemfileに記載されたGemをインストールするコマンドを入力してください 📝 タスク 2: Gemの更新 - インストール済みのGemを最新バージョンに更新するコマンドを入力してください 📝 タスク 3: 依存関係の確認 - 必要なGemがすべてインストールされているか確認するコマンドを入力してください 📝 タスク 4: インストール済みGemの一覧表示 - インストールされているGemの一覧を表示するコマンドを入力してください
初級Rails基礎
問題4: rails generate controller - コントローラー生成
Railsのジェネレーターを使ってコントローラーを生成する方法を学習します。 📝 タスク 1: 基本的なコントローラー生成 - Postsコントローラーをindexとshowアクション付きで生成してください 📝 タスク 2: 省略形での生成 - Usersコントローラーを省略形コマンドで生成してください 📝 タスク 3: 名前空間付きコントローラー - Admin名前空間にArticlesコントローラーをindexアクション付きで生成してください 📝 タスク 4: コントローラーの削除 - Postsコントローラーを削除するコマンドを入力してください
初級Rails基礎
問題5: rails generate model - モデル生成
Railsのジェネレーターを使ってモデルとマイグレーションファイルを生成する方法を学習します。 📝 タスク 1: 基本的なモデル生成 - Userモデルをname(文字列)とemail(文字列)属性付きで生成してください 📝 タスク 2: 省略形での生成 - Postモデルをtitle(文字列)とcontent(テキスト)属性付きで省略形コマンドで生成してください 📝 タスク 3: インデックス付きモデル - Articleモデルをtitle属性にインデックスを付けて生成してください 📝 タスク 4: モデルの削除 - Userモデルを削除するコマンドを入力してください
初級Rails基礎
問題6: rails console - コンソール操作
Railsコンソールを使ってアプリケーションと対話的に操作する方法を学習します。 📝 タスク 1: 基本的なコンソール起動 - Railsコンソールを起動するコマンドを入力してください 📝 タスク 2: 省略形での起動 - コンソール起動コマンドの省略形を使用してください 📝 タスク 3: サンドボックスモード - データベースの変更をロールバックするサンドボックスモードでコンソールを起動してください 📝 タスク 4: 本番環境でのコンソール - production環境でコンソールを起動するコマンドを入力してください
初級Rails基礎
問題7: rails routes - ルート一覧確認
Railsアプリケーションのルーティング情報を確認する方法を学習します。 📝 タスク 1: 基本的なルート表示 - すべてのルートを表示するコマンドを入力してください 📝 タスク 2: 特定のルートを検索 - postsに関連するルートのみを検索して表示してください 📝 タスク 3: コントローラー指定 - postsコントローラーのルートのみを表示してください 📝 タスク 4: 展開形式での表示 - ルート情報を展開形式(詳細表示)で表示してください
初級Rails基礎
問題8: 基本ルーティング - get/post/put/delete
Railsアプリケーションで基本的なHTTPメソッドに対応するルーティングを定義する方法を学習します。 📝 タスク 1: GETルート - /homeへのGETリクエストをhome#indexにルーティングしてください 📝 タスク 2: POSTルート - /usersへのPOSTリクエストをusers#createにルーティングしてください 📝 タスク 3: PUTルート - /users/:idへのPUTリクエストをusers#updateにルーティングしてください 📝 タスク 4: DELETEルート - /posts/:idへのDELETEリクエストをposts#destroyにルーティングしてください
初級Rails基礎
問題9: RESTfulルート - resources設定
RailsでRESTfulなルーティングを簡単に設定するresourcesメソッドの使い方を学習します。 📝 タスク 1: 基本的なresources - postsリソースのルートをすべて生成してください 📝 タスク 2: 特定のアクションのみ - usersリソースでindexとshowアクションのみを生成してください 📝 タスク 3: 特定のアクションを除外 - articlesリソースでdestroyアクション以外を生成してください 📝 タスク 4: ネストしたリソース - postsリソースの中にcommentsリソースをネストしてください
初級Rails基礎
問題10: コントローラーアクション - index/show/new/create
RailsのMVCパターンでコントローラーの基本的なアクションメソッドの実装方法を学習します。 📝 タスク 1: indexアクション - すべての投稿を表示するindexアクションを定義してください 📝 タスク 2: showアクション - 特定の投稿を表示するshowアクションを定義してください 📝 タスク 3: newアクション - 新規投稿フォーム用のnewアクションを定義してください 📝 タスク 4: createアクション - 投稿を作成するcreateアクションを定義してください
初級Rails基礎
問題11: コントローラーアクション - edit/update/destroy
RailsコントローラーでCRUD操作の更新と削除を行うアクションメソッドの実装を学習します。 📝 タスク 1: editアクション - 投稿編集フォーム用のeditアクションを定義してください 📝 タスク 2: updateアクション - 投稿を更新するupdateアクションを定義してください 📝 タスク 3: destroyアクション - 投稿を削除するdestroyアクションを定義してください 📝 タスク 4: 削除後のリダイレクト - 削除後に投稿一覧へリダイレクトしてください
初級Rails基礎
問題12: ビューファイル - ERBテンプレート作成
RailsのERB(Embedded Ruby)テンプレートを使ってHTMLにRubyコードを埋め込む方法を学習します。 📝 タスク 1: ERBタグの基本 - 繰り返し処理を行うERBタグを完成させてください 📝 タスク 2: 出力タグ - 変数の値を出力するERBタグを完成させてください 📝 タスク 3: 条件分岐 - 条件分岐を行うERBタグを完成させてください 📝 タスク 4: ループ処理 - eachメソッドを使ったループ処理を完成させてください
初級Rails基礎
問題13: レイアウトファイル - application.html.erb
Railsアプリケーション全体で共通して使用されるレイアウトファイルの構造と重要なヘルパーメソッドを学習します。 📝 タスク 1: CSPメタタグ - Content Security Policy用のメタタグを追加してください 📝 タスク 2: コンテンツの挿入 - 各ビューのコンテンツを挿入する場所を指定してください 📝 タスク 3: スタイルシートの読み込み - CSSファイルを読み込むヘルパーメソッドを入力してください 📝 タスク 4: JavaScriptの読み込み - JavaScriptファイルを読み込むヘルパーメソッドを入力してください
初級Rails基礎
問題14: パーシャル - render partial基本
Railsのパーシャル(部分テンプレート)を使ってビューの再利用可能な部品を作成する方法を学習します。 📝 タスク 1: 基本的なパーシャル - shared/headerパーシャルをレンダリングしてください 📝 タスク 2: ローカル変数付きパーシャル - postパーシャルにローカル変数を渡してください 📝 タスク 3: コレクションのレンダリング - 複数の投稿をパーシャルでレンダリングしてください 📝 タスク 4: パーシャル内の変数 - パーシャル内でローカル変数を使用してください
初級Rails基礎
問題15: ヘルパーメソッド - link_to/button_to/image_tag
RailsビューでよくHTMLタグを生成するための便利なヘルパーメソッドの使い方を学習します。 📝 タスク 1: link_toヘルパー - リンクを生成するヘルパーメソッドを入力してください 📝 タスク 2: button_toヘルパー - 削除ボタンを生成するヘルパーメソッドを入力してください 📝 タスク 3: image_tagヘルパー - 画像タグを生成するヘルパーメソッドを入力してください 📝 タスク 4: CSSクラス付きリンク - ホームへのリンクにCSSクラスを追加してください
初級Rails基礎
問題16: フォーム基礎 - form_withでのCRUD
Railsのform_withヘルパーを使ってCRUD操作用のフォームを作成する方法を学習します。 📝 タスク 1: モデルベースのフォーム - 投稿モデルに基づくフォームを作成してください 📝 タスク 2: URLベースのフォーム - 特定のURLに送信するフォームを作成してください 📝 タスク 3: テキストエリア - 複数行入力用のテキストエリアを追加してください 📝 タスク 4: 送信ボタン - フォームの送信ボタンを追加してください
初級Rails基礎
問題17: Strong Parameters - パラメータ許可
Railsのセキュリティ機能であるStrong Parametersを使って、安全にパラメータを処理する方法を学習します。 📝 タスク 1: Strong Parametersメソッド - 投稿用のStrong Parametersメソッドを定義してください 📝 タスク 2: requireメソッド - 必須パラメータを指定するメソッドを入力してください 📝 タスク 3: permitメソッド - 許可する属性を指定するメソッドを入力してください 📝 タスク 4: Strong Parametersの使用 - createアクションでStrong Parametersを使用してください
初級Rails基礎
問題18: フラッシュメッセージ - flash通知
Railsのフラッシュメッセージを使って、ユーザーに一時的な通知を表示する方法を学習します。 📝 タスク 1: 成功メッセージ - 作成成功時のフラッシュメッセージを設定してください 📝 タスク 2: エラーメッセージ - エラー時のフラッシュメッセージを設定してください 📝 タスク 3: 即時表示 - 現在のリクエストで即座に表示するフラッシュを設定してください 📝 タスク 4: フラッシュの表示 - ビューでフラッシュメッセージを表示してください
初級Rails基礎
問題19: バリデーション基礎 - presence/length/format
Railsモデルでデータの妥当性を検証するバリデーションの基本的な使い方を学習します。 📝 タスク 1: 必須検証 - nameフィールドを必須にするバリデーションを追加してください 📝 タスク 2: 長さ検証 - titleフィールドの最小文字数を検証してください 📝 タスク 3: 形式検証 - emailフィールドの形式を検証してください 📝 タスク 4: 複数のバリデーション - passwordフィールドに複数のバリデーションを適用してください
初級Rails基礎
問題20: エラーハンドリング - バリデーションエラー表示
Railsでバリデーションエラーを適切に表示し、ユーザーにフィードバックする方法を学習します。 📝 タスク 1: エラーの確認 - エラーが存在するかチェックしてください 📝 タスク 2: エラーの表示 - すべてのエラーメッセージを表示してください 📝 タスク 3: フィールドのスタイル - エラーのあるフィールドにCSSクラスを追加してください 📝 タスク 4: 個別エラー表示 - 特定フィールドのエラーを表示してください
初級Rails基礎
問題21: rails db:create/migrate - データベース作成・マイグレーション
Railsアプリケーションのデータベースを作成し、マイグレーションを実行する基本的なコマンドを学習します。 📝 タスク 1: データベース作成 - データベースを作成するコマンドを入力してください 📝 タスク 2: マイグレーション実行 - マイグレーションを実行するコマンドを入力してください 📝 タスク 3: マイグレーションのロールバック - 最後のマイグレーションを取り消すコマンドを入力してください 📝 タスク 4: マイグレーション状態確認 - マイグレーションの実行状態を確認するコマンドを入力してください
初級Rails基礎
問題22: Active Record基礎 - find/where/all
Active Recordのクエリメソッドを使ってデータベースからレコードを取得する基本的な方法を学習します。 📝 タスク 1: IDで検索 - IDを使って特定のレコードを取得してください 📝 タスク 2: 属性で検索 - 特定の属性値でレコードを検索してください 📝 タスク 3: 条件検索 - 条件に一致する複数のレコードを取得してください 📝 タスク 4: 全レコード取得 - すべてのレコードを取得してください
初級Rails基礎
問題23: マイグレーション - カラム追加・削除・変更
既存のデータベーステーブルに対してカラムの追加、削除、変更を行うマイグレーションの書き方を学習します。 📝 タスク 1: カラム追加 - usersテーブルにageカラムを追加してください 📝 タスク 2: カラム削除 - postsテーブルからviewsカラムを削除してください 📝 タスク 3: カラム変更 - usersテーブルのemailカラムの型を変更してください 📝 タスク 4: カラム名変更 - postsテーブルのtitleカラムをheadlineに変更してください
初級Rails基礎
問題24: 関連付け基礎 - has_many/belongs_to
Active Recordの関連付け(アソシエーション)を使って、モデル間のリレーションシップを定義する方法を学習します。 📝 タスク 1: 1対多の関連(親側) - Userが複数のPostを持つ関連を定義してください 📝 タスク 2: 1対多の関連(子側) - PostがUserに属する関連を定義してください 📝 タスク 3: 多対多の関連 - Doctorが複数のPatientを持つ関連をthroughで定義してください 📝 タスク 4: 1対1の関連 - Userが1つのProfileを持つ関連を定義してください
初級Rails基礎
問題25: シードデータ - db/seeds.rb
開発やテスト用の初期データ(シードデータ)を作成する方法を学習します。 📝 タスク 1: 基本的なデータ作成 - Userレコードを作成するメソッドを入力してください 📝 タスク 2: 複数レコードの作成 - 10件のPostレコードを作成するループを完成させてください 📝 タスク 3: 重複を避ける作成 - 既存レコードがない場合のみ作成するメソッドを入力してください 📝 タスク 4: シードの実行 - シードデータを実行するコマンドを入力してください

中級

無料で学習可能

中級高度なルーティング
問題26: ネストしたルート - nested resources
Railsでブログの投稿とコメントのためのネストしたリソースルーティングを設定する方法を学習します。ネストしたルートは/posts/1/comments/2のような階層的なURLを作成し、親リソースと子リソースの関係を明確に表現します。この仕組みは、投稿に対するコメントやプロジェクト内のタスクなど、他のリソースに属するリソースでよく使用されます。
中級高度なルーティング
問題27: 名前空間 - namespaceルーティング
Railsで名前空間を使ってルートを整理する方法を学習します。名前空間は、管理画面やAPIエンドポイントなど関連する機能をグループ化することで、大規模アプリケーションの構造化に不可欠です。これにより/admin/productsのようなきれいなURLが作成され、コントローラーが論理的なモジュールに整理されるため、アプリケーションの保守性と拡張性が向上します。
中級高度なルーティング
問題28: カスタムルート - member/collection
Railsでmemberとcollectionを使ってRESTfulルートにカスタムアクションを追加する方法を学習します。memberルートは特定のリソースに対して作用し(/posts/1/publishなど)、collectionルートはコレクション全体に作用します(/posts/searchなど)。これらは標準の7つのRESTfulアクションを超えて、ドメイン固有の機能を追加するために不可欠です。
中級コントローラー応用
問題29: before_action - コントローラーフィルタ
Railsでbefore_actionフィルタを使ってコントローラーアクションの前にコードを実行する方法を学習します。フィルタはDRY(Don't Repeat Yourself)の原則に不可欠で、認証チェック、データ読み込み、認可などの共通機能を抽出できます。onlyとexceptオプションを使って、すべてのアクションまたは特定のアクションにフィルタを適用できます。
中級コントローラー応用
問題30: セッション管理 - セッションの操作
Railsでセッションを使ってユーザーの状態を管理する方法を学習します。セッションを使用すると、HTTPリクエスト間でユーザー固有のデータを保存でき、ユーザー認証、ショッピングカート、ユーザー設定などの機能に不可欠です。Railsはセッションデータを安全に読み書きするためのハッシュのようなシンプルなインターフェースを提供します。
中級コントローラー応用
問題31: クッキー操作 - クッキーの使い方
Railsでクッキーを使ってクライアント側にデータを保存する方法を学習します。クッキーはユーザー設定の記憶、追跡情報、セッション間の状態維持に便利です。Railsは署名付きや暗号化クッキーなどのセキュアなオプションを提供し、機密データの改ざんや露出から保護します。
中級コントローラー応用
問題32: 例外処理 - rescue_from
Railsコントローラーでrescue_fromを使って例外を適切に処理する方法を学習します。この機能により、コントローラー全体で特定の例外をキャッチし、一元的に処理できます。ユーザーフレンドリーなエラーページの提供や適切なAPIエラーレスポンスに不可欠です。
中級コントローラー応用
問題33: APIレスポンス - render json
Railsでrender jsonを使ってJSON APIを構築する方法を学習します。これはRESTful API、AJAXエンドポイント、モバイルアプリのバックエンド作成に不可欠です。RailsはActiveRecordオブジェクトをJSONに変換する組み込みシリアライゼーションを提供し、従来のHTMLビューと並行してAPIエンドポイントを簡単に作成できます。
中級高度なデータベース
問題34: バリデーション応用 - uniquenessとカスタムバリデーション
Railsの高度なバリデーション技術、特にuniqueness制約とカスタムバリデーションメソッドを学習します。これらのバリデーションはモデルレベルでデータの整合性を保証し、重複レコードを防ぎ、単純なpresenceやformatチェックを超えた複雑なビジネスルールを実装します。
中級高度なデータベース
問題35: 関連付け応用 - has_many :through
Railsでhas_many :through関連を使ってモデル間の間接的な関係を作成する方法を学習します。この強力な関連タイプは、結合モデルに追加属性を持つ多対多の関係を設定でき、チームへのユーザーメンバーシップのような複雑なドメインモデリングに最適です。
中級高度なデータベース
問題36: 多対多関連 - has_and_belongs_to_many
Railsでhas_and_belongs_to_many (HABTM)を使ってシンプルな多対多の関係を作成する方法を学習します。この関連タイプは、投稿のタグや製品のカテゴリのように、結合テーブルに追加属性が不要なシンプルな多対多の関係に最適です。
中級高度なデータベース
問題37: 外部キー制約 - references設定
Railsマイグレーションでreferencesを使って外部キー制約を追加する方法を学習します。外部キー制約はデータベースレベルで参照整合性を保証し、孤立したレコードを防ぎ、データの一貫性を維持します。これは信頼性の高いデータ関係を持つ堅牢なアプリケーション構築に不可欠です。
中級高度なデータベース
問題38: データベースインデックス - add_index
Railsでデータベースインデックスを追加してクエリパフォーマンスを改善する方法を学習します。インデックスはWHERE句、JOIN条件、ORDER BY文で使用されるカラムのデータ取得操作を大幅に高速化します。いつ、どのようにインデックスを追加するかを理解することは、アプリケーションのパフォーマンスに不可欠です。
中級高度なデータベース
問題39: enum - 列挙型の使用
Railsのenumを使って属性に名前付き値のセットを定義する方法を学習します。Enumはステータス、ロール、タイプなどの固定値のセットを扱うクリーンな方法を提供します。便利なクエリメソッドやスコープを自動的に作成し、コードをより読みやすく保守しやすくします。
中級高度なデータベース
問題40: スコープ - scope定義
Railsのスコープを使って再利用可能なクエリインターフェースを定義する方法を学習します。スコープを使うと、よく使うクエリをモデルのメソッド呼び出しとして指定でき、コードをより読みやすくDRYにします。スコープはチェーンできるため、クリーンで構成可能な方法で複雑なクエリを作成できます。
中級高度なデータベース
問題41: コールバック - before_save/after_create
Railsのコールバックを使ってオブジェクトのライフサイクルの特定のポイントでコードを実行する方法を学習します。before_save、after_create、before_destroyなどのコールバックを使うと、データの正規化、通知の送信、関連レコードのクリーンアップなどのタスクを自動化できます。
中級高度なデータベース
問題42: 集計クエリ - count/sum/average
Railsの集計クエリメソッドを使ってデータの計算を実行する方法を学習します。count、sum、average、minimum、maximumなどのメソッドを使うと、すべてのレコードをメモリに読み込むことなく、データベースで直接統計を効率的に計算できます。
中級高度なデータベース
問題43: JOIN操作 - joins/includes
Railsのjoinsとincludesの違いを学習します。joinsはフィルタリングやクエリのためにSQL JOINを実行し、includesはN+1クエリを防ぐために関連をeager loadします。それぞれをいつ使うかを理解することは、効率的なデータベースクエリを書くために重要です。
中級高度なデータベース
問題44: N+1問題 - includesで解決
RailsでN+1クエリ問題を特定して解決する方法を学習します。この一般的なパフォーマンス問題は、コレクションを読み込んでから各アイテムの関連にアクセスするときに発生し、コレクション用に1つ、関連用にN個のクエリが実行されます。includesを使うとeager loadingでこれを防げます。
中級高度なデータベース
問題45: トランザクション - transactionブロック
Railsでデータベーストランザクションを使ってデータの一貫性を保証する方法を学習します。トランザクションは複数のデータベース操作をグループ化し、すべての操作が成功するか、いずれかが失敗した場合はすべてロールバックされることを保証します。これは複数の関連する変更を伴う操作でデータ整合性を維持するために重要です。
中級ビューとアセット
問題46: アセット管理 - CSS/JavaScript基本
Railsがアセットパイプラインを通じてCSSとJavaScriptアセットをどのように扱うかを学習します。RailsはJavaScriptとCSSアセットを連結、最小化、圧縮するフレームワークを提供します。また、SassやCoffeeScriptのような高水準言語でこれらのアセットを書くこともできます。
中級ビューとアセット
問題47: Ajax操作 - remote: true
Railsでremote: trueを使ってAjax機能を実装する方法を学習します。この機能により、フォームやリンクがページ全体をリロードせずに非同期リクエストを送信でき、よりスムーズなユーザー体験を提供します。RailsがJavaScriptを自動的に処理するため、Ajaxの実装が簡単になります。
中級ビューとアセット
問題48: Turbo - Hotwire基礎
RailsのHotwireの中核であるTurboの基礎を学習します。Turboを使うと、カスタムJavaScriptを書かずに高速でモダンなウェブアプリケーションを構築できます。リンクのクリックやフォーム送信をインターセプトし、AJAXリクエストに変換して変更されたページの一部だけを更新します。
中級ビューとアセット
問題49: Stimulus - JavaScriptフレームワーク基礎
Rails用の控えめなJavaScriptフレームワーク、Stimulusの基礎を学習します。Stimulusはシンプルな規約を使ってJavaScriptオブジェクトをHTML要素に接続します。HTMLにちょうど良い量の振る舞いを追加して動的にし、コードを整理された保守しやすい状態に保つよう設計されています。
中級ビューとアセット
問題50: Rails Scaffold - 基本CRUD生成
rails generate scaffoldを使って完全なCRUDインターフェースを素早く作成する方法を学習します。Scaffoldはリソースのモデル、コントローラー、ビュー、ルートを生成し、カスタマイズ可能な出発点を提供します。Scaffoldを理解することで、Railsの規約が実際にどう動作するかを見ることができます。

上級

無料で学習可能

上級認証・認可
問題51: 認証システム - Devise gem
Railsで最も人気のある認証ソリューションであるDeviseを使って、完全な認証システムを実装する方法を学習します。Deviseはユーザー登録、ログイン、パスワードリカバリーなどのためのコントローラーとビューを提供し、セキュリティのベストプラクティスに従っています。
上級認証・認可
問題52: 認可システム - Pundit
シンプルでスケーラブルな認可ライブラリであるPunditを使って認可を実装する方法を学習します。認証がユーザーが誰かを確認するのに対し、認可はユーザーが何ができるかを決定します。Punditはポリシーと呼ばれる純粋なRubyクラスを使って認可ロジックを整理します。
上級認証・認可
問題53: パスワード管理 - has_secure_password
Railsの組み込み機能であるhas_secure_passwordを使って安全なパスワード処理を実装する方法を学習します。この機能はbcryptベースのパスワードハッシュ化、認証メソッド、パスワード確認検証を提供し、外部依存なしでセキュリティのベストプラクティスに従います。
上級認証・認可
問題54: ロール管理 - 権限システム設計
柔軟なロールベースアクセス制御(RBAC)システムを設計・実装する方法を学習します。このパターンでは、管理者、編集者、閲覧者などのロールを定義し、ユーザーに割り当て、アプリケーション全体で権限をチェックしてきめ細かいアクセス制御を実現します。
上級ファイル処理と検索
問題55: ファイルアップロード - Active Storage
Rails内蔵のActive Storageを使ったファイルアップロードの実装方法を学習します。このモダンなソリューションは、クラウドストレージサービスへの直接アップロード、画像バリアント、ファイル添付を追加gemなしで処理し、Railsアプリケーションでのファイル処理をシームレスにします。
上級ファイル処理と検索
問題56: 画像処理 - ImageMagick/libvips連携
ImageMagickまたはlibvipsを使用してActive Storageで画像を処理する方法を学習します。サムネイルの作成、画像のリサイズ、フォーマット変換、変換の適用をオンザフライで行います。これは様々なサイズで最適化された画像を配信する必要がある最新のWebアプリケーションに不可欠です。
上級ファイル処理と検索
問題57: 検索機能 - Ransack gem
Rails用の強力な検索フォームビルダーであるRansackを使用して高度な検索機能を実装する方法を学習します。Ransackは複雑なSQLを書かずに、関連付けやカスタム述語をサポートしながら、複雑なクエリでデータを検索・ソートするシンプルな方法を提供します。
上級ファイル処理と検索
問題58: ページネーション - Kaminari gem
Railsで最も人気のあるページネーションライブラリの1つであるKaminariを使用してページネーションを実装する方法を学習します。Kaminariは、ActiveRecordコレクションのページネーション、ページサイズのカスタマイズ、最小限の設定でページネーションリンクの作成を行うクリーンでシンプルなAPIを提供します。
上級高度なデータベース
問題59: ポリモーフィック関連
Railsでポリモーフィック関連を実装する方法を学習します。これにより、一つのモデルが単一の関連付けを使用して複数の他のモデルに属することができます。この強力なパターンは、異なるタイプのコンテンツに添付できるコメント、タグ、いいねなどの機能で一般的に使用されます。
上級高度なデータベース
問題60: STI - 単一テーブル継承
Railsで単一テーブル継承(STI)を実装する方法を学習します。これにより、複数のモデルが単一のデータベーステーブルを共有できます。STIは、異なるユーザータイプや製品カテゴリのように、ほとんど共通の属性を持ちながら一部の動作が異なるオブジェクトがある場合に便利です。
上級高度なデータベース
問題61: 自己結合 - self-referential associations
モデルが自分自身と関係を持つ自己参照関連を作成する方法を学習します。このパターンは、従業員とマネージャーの関係、ソーシャルネットワークの友人関係、親子関係を持つカテゴリツリーなどの階層データで一般的に使用されます。
上級高度なデータベース
問題62: データベースビュー - view作成
Railsでデータベースビューを作成して使用する方法を学習します。ビューは一つ以上のテーブルからデータを構造化された方法で提示する仮想テーブルです。複雑なクエリ、非正規化データアクセス、レポートや分析用の読み取り専用モデルの作成に便利です。
上級APIとリアルタイム
問題63: JSON API - API設計とシリアライザー
シリアライザーを使用してRailsでよく構造化されたJSON APIを構築する方法を学習します。APIバージョニング、適切なHTTPステータスコード、JSONレスポンスのフォーマット、Active Model SerializersやJBuilderなどのツールを使用してJSON出力構造を制御する方法をマスターします。
上級APIとリアルタイム
問題64: WebSocket - Action Cable
Railsの統合WebSocketフレームワークであるAction Cableを使用してリアルタイム機能を実装する方法を学習します。ライブチャット、通知、共同編集、ページ更新なしで接続されたクライアントにデータをプッシュするリアルタイム更新などの機能を構築します。
上級APIとリアルタイム
問題65: CORS設定 - クロスオリジン対応
異なるドメインからのJavaScriptアプリケーションがAPIにアクセスできるように、Rails APIでクロスオリジンリソース共有(CORS)を設定する方法を学習します。これは、Railsバックエンドと通信する必要がある最新のシングルページアプリケーションやモバイルアプリに不可欠です。
上級バックグラウンドと通知
問題66: バックグラウンドジョブ - Active Job/Sidekiq
Active JobとSidekiqを使用してバックグラウンドジョブ処理を実装する方法を学習します。メール送信、画像処理、APIコールなどの時間のかかるタスクをバックグラウンドワーカーに移動し、アプリケーションの応答時間とユーザーエクスペリエンスを改善します。
上級バックグラウンドと通知
問題67: メール送信 - Action Mailer
RailsでAction Mailerを使用してメールを送信する方法を学習します。メール配信設定を構成し、テンプレート付きのメーラークラスを作成し、プレーンテキストとHTMLメールの両方を送信し、非同期配信のためのバックグラウンドジョブと統合します。
上級バックグラウンドと通知
問題68: スケジュール処理 - whenever gem
cronジョブを書くためのRuby構文を提供するwhenever gemを使用して定期的なタスクをスケジュールする方法を学習します。日次レポート、データベースクリーンアップ、キャッシュの有効期限切れ、定期的なデータ同期などの自動化されたタスクを設定します。
上級パフォーマンスと本番環境
問題69: キャッシュ戦略 - Redis/Memcached
RedisまたはMemcachedを使用してキャッシュ戦略を実装し、アプリケーションのパフォーマンスを向上させる方法を学習します。データベースクエリ、計算値、APIレスポンス、レンダリングされたビューをキャッシュして、負荷を軽減し応答時間を短縮します。
上級パフォーマンスと本番環境
問題70: セキュリティ - CSRF/XSS/SQLインジェクション対策
一般的なセキュリティ脆弱性からRailsアプリケーションを保護する方法を学習します。CSRF保護を実装し、適切な出力エスケープでXSS攻撃を防ぎ、パラメータ化されたクエリでSQLインジェクションを回避し、セキュリティのベストプラクティスに従います。