
RUNTEQのカリキュラムを一部ご紹介

「RUNTEQのカリキュラムってどのくらい難しいの?」 「内容を事前に見せてもらえませんか?」 といったお問い合わせをいただくことが多いので、今回はカリキュラム内容をご紹介いたします!
カリキュラムの構成
カリキュラムは下記2つのパートで構成されています。
- 基礎編
- 応用編
今日は基礎編と応用編についてご紹介しますね!
基礎編
基礎編の課題は26個の課題で構成されています。
難易度はRailsチュートリアルよりも数段難しいです。答えはなく、自分で考えGit flowで実装していく課題となっています。
その中の1つだけ課題を抜粋してお見せしますね↓↓
課題9 掲示板の一覧機能の作成
課題概要
- 掲示板一覧機能を実装してください。
課題詳細
- Seedで登録した掲示板のデータを一覧画面で表示できるようにしてください。
- 登録データがない場合は、その旨を文言で表示してください。
- Boardモデルを作成してください。
- 「title」「body」「userと紐づけるための外部キー」が保存できるようにカラムを用意してください。なお、必須項目であることを意味するバリデーションを付与してください。
- 「title」は255字、 「body」は、65535字でバリデーションをかけてください。
seeds.rb
ファイルを作成してBoardモデルのダミーデータを10個作り、事前にDBにインサートしておきましょう。ダミーデータにはFaker
を利用してください。- UserモデルとBoardモデルの間にアソシエーションを定義してください。
_header.html.erb
から掲示板一覧ページに遷移できるリンクを作成しましょう。- boards#indexにアクセスすると、views/boards/index.html.erbがレンダリングされるよう、ルーティングファイルやコントローラーファイルに適切な設定を施して下さい。
views/boards
配下に、単一の掲示板を表示するパーシャルを作成してください。 boards#indexからはこのパーシャルを繰り返し呼び出して掲示板一覧を表示するようにしてください。
- 掲示板が存在しない場合は、「掲示板がありません」と表示させるようにしてください。
- ログイン時のリダイレクト先を掲示板一覧画面に変更してください。
- ただし、n+1問題が起きないよう注意して実装してください。
- 時刻のフォーマットはi18nを使って整形してください。
- 未ログイン状態で掲示板一覧画面を閲覧しようとした場合、「ログインしてください」というフラッシュメッセージとともにログインフォームにリダイレクトするよう設定してください。トップページ、ユーザー新規登録画面、ログイン画面に関しては、未ログイン状態でも使用できるようにしてください。
- ログインの判定には sorceryで提供しているメソッドの
require_login
やnot_authenticated
を使用してください。- 掲示板の作成日時に日本時間が登録されるように、アプリケーションの設定を変更してください。
学習内容
- アソシエーション(has_many, belongs_to)
- dependent: :destroy
- seedファイル
- Faker, gimei
- バリデーション
- DB側の制約(not null制約、外部キー制約)
- ルーティング
- resources
- includes(N+1問題)
いかがでしょうか?やりがいを少しでも感じ取ってもらえば嬉しいです! ただし、こちらはまだ基礎編です。
応用編
応用編の課題は16個で構成されています。基礎編と違って、複雑な既存のコードを解析して、バグ修正と機能追加をしてもらいます。また、テストコードも実装していただきます。
課題5 記事ステータスの追加
現状
記事のステータスは、「下書き」「公開」の2種類。改修後
- ステータスに「公開待ち」を追加する
- 下記の要件で記事の更新、公開ボタンを押した際の挙動を変更する
※ modelのコールバックは使わないでください- 記事編集画面から「公開する」を押した際に、公開日時が未来の日付に設定された場合 --> ステータスを「公開待ち」に変更して「記事を公開待ちにしました」とフラッシュメッセージを表示 - 記事編集画面から「公開する」を押した際に、公開日時が過去の日付に設定された場合 --> ステータスを「公開」に変更して「記事を公開しました」とフラッシュメッセージを表示 - 記事編集画面から「更新する」を押した際に、ステータスが下書き状態以外かつ公開日時が未来の日付に設定された場合 --> ステータスを「公開待ち」に変更して「更新しました」とフラッシュメッセージを表示 - 記事編集画面から「更新する」を押した際に、ステータスが下書き状態以外かつ公開日時が過去の日付に設定された場合 --> ステータスを「公開」に変更して「更新しました」とフラッシュメッセージを表示 - 記事編集画面から「更新する」を押した際に、ステータスが下書き状態の場合 --> ステータスは「下書き」のまま「更新しました」とフラッシュメッセージを表示
- 更に、公開待ち状態で公開日時が過去になっているものがあれば、rakeタスクをライブラリ「whenever」により1時間ごとに走らせ、ステータスを「公開」に変更されるようにする
(※ 公開日時が過去で公開待ち状態となっているデータを画面上で更新しなくても、自動でステータスを公開に変更するようにしたい)- 現状、管理画面から1分単位で公開日時を指定できるようになっているが、1時間ごとに指定できるように変更する
- cron実行時のログは
#{Rails.root}/log/cron.log
に出力する- 実装した機能の動作を保証するテストコードを実装してください
学習事項
- rakeタスクとは
- cron・whenever
- find_each
- FatControllerの解消
- Rspec
いかがでしたか?RUNTEQのカリキュラムは開発現場の声を参考にして作られています。独学だけでは難しい課題も多いのではないでしょうか。
さらなるスキルアップを目指したい方は、RUNTEQで一緒に勉強しましょう!