こんにちは、現在フリーランスのWeb制作者として活動していますしょーご(@samuraibrass)と申します。
この度デイトラのRailsコースを学びまして、そこで学べたこと、できるようになったことや感想を、実際にやった人の視点から書いていこうと思います。
このコースを走る上での私の前提スキルは以下のようになっております。
- HTML,CSS,Sass,jQuery,WordPressを仕事で触っている
- 少しのPHPとJavaScriptの知識
- RubyやRailsは経験なし
といった感じで、サーバーサイドの知識やプログラミング力もあまりあるとは言えない状態でした。
ちょうど自分自身「もっと技術力を上げたい」と思っており、今回リリースに合わせて「Railsを学習しよう」と思ったのでした。
デイトラとは
デイトラは「1日1題90日で
プロのWEBスキルを手に入れる」ことを目指したスクールで、業界最安級のスクールとなっております。「未経験でも迷わず、楽しく学べるオンラインスクール」として運営しています。
今回はRailsコースに照準を合わせたいので、詳細は以下記事に譲ろうかと思います。
デイトラRailsコースの概要

Railsコースで学べることは以下のようになっております。
デイトラRailsコースのカリキュラム
- Webサイト作成
- JavaScriptによるサイト改善
- Rubyによるプログラム作成
- Webの基本
- Git・GitHub
- RESTful
- Rails6によるWebアプリの作成
- RspecによるWebアプリのテスト(近日公開)
- デバッグ手法
- Ajaxによるアプリの改善
- メール送付
- Sidekiqによる非同期処理
カリキュラムは90日間で200時間の学習時間を目安にしています。

メンターに質問できる環境

デイトラ全体の特徴ですが
- カリキュラムは閲覧期限制限なし
- 一年間メンターに質問し放題
- 専用Slackコミュニティにて交流ができる
という特徴があります。Railsコースも例外ではありません。
特に「メンターに質問できる」というのは非常に重要です。私自身もフリーランスとして2年ほど働いており、Web制作系のメンターも行いますが、
「質問の仕方」はフリーランスでなくてもエンジニアを仕事としてやっていくのなら、必須のスキルになります(質問には作法があります)
これをカリキュラムをこなしながら練習できるというのは、非常に大きいわけですね。
もちろんメンターは現役のRailsエンジニアが行っています。
Railsコースの価格
¥99,800
となっております。個人的には内容が超充実しているので、そこまで高くなく良心的だなと思います。内容は後述しますが、
かなり実践的なところまで踏み込んでいるからです。ここは開発者のとださん(@cohki0305)の思いを聞くと、価格設定についてよくわかります。
こうやってYouTubeやTwitterで無料で発信して広告をあまり使っていないで集客できているからこその価格で提供できるというわけです。
Ruby on Railsコース初級編 WEBサイトとミニアプリを作れるようになろう

DAY01からDAY24まではデイトラWeb制作コースと同様であるため駆け足で説明します。
DAY01~DAY16 HTML,CSS,Bootstrap学習
HTML,CSSでこのようなサイトを作っていきます。


DAY17~DAY24 jQuery,JavaScript,Sassの学習

JavaScript,jQueryは本来「デイトラWeb制作コース」の中級編に搭載されている内容ですが、Railsコースでは初級編に組み込まれています。
Railsでアプリケーションを作る際、というかサーバーサイドエンジニアにももはやJavaScrptの知識は不可欠なもの、教養になっているので、こうなったのかなと思います。
DAY25~30 Rubyの基本を学ぶ

ここから本当のRuby/Railsコースのスタートです。
Rubyの基本からオブジェクト指向の書き方まで
個人的に、想像していた以上に中身が濃密で、特にクラス(オブジェクト指向)のパートがすごくよかったなと感じました。

Railsコース全般に言えることですが、動画の解説が大半を締めます。
これが最高にわかりやすいです!!
文字情報だけだと、難解な部分だと離脱率が高くなるかなと思いますが、動画ならリアルタイムで一緒に進めていける、これってすごくいいなと思いました!!
そして、最後にクラスを作らせるところがいいなと思いました。

私も仕事で使っているWordPressがオブジェクト指向でできており、クラスからインスタンスを作成してメソッドを呼び出しなど日常的に行っておりましたが、
その仕組みをよく理解しているかと言われると自信はありませんでした。
自分でクラスを作るとかはなく、WordPress既存のものを利用していただけなのです。
オブジェクト指向自体が難しく自分も雰囲気で利用していたのですが、このコースで自分で仕様に従ってクラスを作ってみて、理解が深まりました。
RubyやRails自体がオブジェクトの集まりであるため、このクラスの概念をしっかり理解するのは大切だと思います。
天気予報アプリの作成
初級編のラストではAPIを利用して明日の天気を取得する機能を作成します。

そして最後に、一度作成したコードをオブジェクト指向で書き直すパートがあるのですが、このようにRubyコースでは定期的に自分で考えて実装する課題が与えられるので、
かなり鍛えられるなと思います。
ここまでがRuby.Railsコースの初級編になります。
Ruby on Railsコース中級編 Webサービスを作れるようになろう

中級編ではいよいよRailsに入り、「ToDoアプリを自分で作成できるようになる」レベルまで達することができるようになります。
DAY1~DAY4 webの基本編

Railsに入る前に「Webの基本」を学んでいきます。それは
Webとは何なのかがわからないと、Railsが何をしているか全然理解できないから
ざっとこのパートで学ぶことを箇条書きにしてみますが、みなさんこの内容を大雑把にでも理解できているでしょうか。
もしわからなければ、Railsを学習しても
となります笑
- ブラウザとサーバとは
- HTTPとは
- IPアドレスとドメインの関係
- Git操作の基本
- GitHubの利用方法(プルリクと聞いてわかるか)
- UNIXコマンド(ls,cd,mkdir.touchなど使えるか)
- SQLでどのようにデータに変更を加えるか
このようなものはRailsを学習する前に理解しておくべきものです。

DAY5~8 Railsの基礎編

こちらのセクションではRails環境の構築と超基本的な操作を学んでいきます。
いよいよと言った感じです。
このパートでいろいろダウンロードしました。
- iTerm2(エンジニアが好んで使うターミナル)
- rbenv(Rubyのバージョン管理ツール)
- nvm,yarn,bundler,Railsのインストール

またこのパートから、変更内容を都度Git(SourceTree、GitHub)で管理するようになります。
これが最高に鍛えられていい感じです。
- 学習で追加する機能毎にローカルでブランチを作成
- そのブランチで機能開発が終わったらコミット
- その後GitHubリモートリポジトリにプッシュしプルリクを出す
- マージしてブランチを閉じて、ローカルでプルして反映させ一連の流れ終了
プルリクベースでの作業が実践的でいい

私もWeb制作で稀にGitHubを使うことがありますが、開発する機能毎にブランチを切って作業し、
その後プルリクを出してマージしてもらうGitHub Flowで開発することがあるので、
それが学習中からできるのは非常に実践的だと思いました。
Gitでのソースコードバージョン管理は、日常的に行わないと習慣化しないので、カリキュラムでもちょくちょく「プルリク出しましょう」と言ってくれます。
また、メンターへの質問も「プルリクベース」です。

実務ではソースコードの共有は基本的にGitHubなどで行われます。そう言ったツールを使って質問するのは非常に実践的と言うことです。
DAY9~DAY15 CRUDアプリ編

Railsの基本動作を覚えるパート
Webアプリケーションを構成する4つの要素(CRUD)があります。
- Create(作成)
- Read(詳細)
- Update(更新)
- Delete(削除)
いずれのアプリケーションもCRUDの機能を持っていると言われます。
このパートではこのCRUD作成を通して、Railsでの開発を学んでいきます。
現時点で作れたもの
トップページの一覧画面。

投稿画面

ちなみにバリデーションを設定しており、なにも入力せずに投稿しようとすると、

このようにエラーメッセージが表示されるようにしています。
詳細画面

詳細画面からは編集と削除を行うことができます。
編集画面

編集画面では、当たり前ですが最初から編集する記事の内容がフォームに表示されています(当たり前なんですが、実装すると意外に苦戦するポイント笑)
学んだRailsの重要な概念たち
- gemの使い方と管理
- Rails式リンクの貼り方、ID参照
- Rails式フォームの作成方
- Strong Parameter
- Validation(検証)
- 変数の受け渡し
- flashメッセージ
- Rails日本語化
- before_action
- 日付表示とフォーマット
- Partial Template
などなど。いづれもRailsの基本的な部分だと思います。
DAY16-18 Railsの重要概念

開発しやすい環境を作ろう + Railsの思想を学ぼう
このパートでは実際のRails環境に近づけるためのツール(gem)の導入と思考を学びます。
- デバッグはエラーメッセージと変数を確認すること
- pry-byebugでデバッグ
- hamlテンプレート
- annotateでDBの構造をモデルに記録
- rubocop(lintツール、めっさ文法指摘してくるgem)
- エラーメッセージとログの見方
- Railsの思想
個人的に重要だと思った二点をかいつまんで。
- エラーメッセージとログの見方
- Railsの3つの思想
デイトラRailsコースでは開発者のとださんの考える効率の良いプログラミング学習法の考えが色こく反映されており、特に
真っ先にぐぐらないで!!エラー文見て!!そこに答えあるから!!
ということで、エラー文の見方や見やすくするgemの導入をしていきました。

また、Railsの3つの考えも学びました。
- CoC(設定より規約)
→決められた通りにコーディングすることで、オレオレがなくなり保守性が高くなる→Railsにルールが多い理由 - DRY(Don’t Repeat Yourself)
→同じ処理はまとめて書いておく→共通処理はメソッドにまとめて書いておくとか - REST
リソースに一意の識別子(URI)をつけ、そのリソースに対して動作を決める↓画像参照

ActiveRecordの機能を知ろう
RailsではSQLを書く機会はほぼなく、ActiveRecordがいい感じにクエリを発行してくれます。

Article.all.order(id: :desc).limit(3)
これは「Articleモデル内のデータから、idが後ろから三件のレコードを取得する」と言う処理ですが、SQLでは
SELECT "articles".* FROM "articles" ORDER BY "articles"."id" DESC LIMIT ? [["LIMIT", 3]]
と本来書かなければならない処理です。ActiveRecordのおかげでとても簡単になっているのがわかりますね!
- findとfind_by
- first, second, third とlast
- all, order, limit
- where, count
- create, save
- update, assign_attributes
- destroy
言語化すると盛り沢山ですが、直感的なのでSQLに比べてすぐに使えそうです。
Validationについて
Validation(検証)は具体例を見た方がわかりやすいかもしれません。Webアプリケーションでは必須の機能です。
- タイトルは100文字以内で
- 文章とタイトル合わせて500文字以上書かないとだめ
- 文章の先頭が@から始まってないけない
- Emailが正しい形式か検証
- そもそも入力されてるかチェック
など、こう言った機能を追加します。

DAY19 ユーザー認証の実装編

ユーザー認証機能を作ってみよう
Deviseと言うgemを使ってユーザー認証機能を作成しました。ログイン画面やパス、ユーザー情報編集、ログアウトなど様々なコントローラーやView ファイルが作成されます。

