新米パパの育児留学

新米パパの育児留学

『育児留学』とは、育児を通して異なる視点を得たり新しいことに挑戦して自己成長に繋げること。育児奮闘中の新米パパが育児を通して得た気づきや感じたこと、育休中に習得したプログラミングに関する話題を発信していきます。

Ruby on Rails チュートリアル 完全攻略 概要と演習解答総まとめ

はじめに

Ruby on Railsを学習する方が必ずといってもよいほど活用する王道の学習ツール「Ruby on Rails チュートリアル」。私は「Ruby on Rails チュートリアル」のおかげでエンジニア未経験からエンジニアへ転身できたと言っても過言ではありません。素晴らしい学習ツールを無料で公開されていることに心から感謝しています。

感謝と敬意を込めて概要と演習解答をまとめました。これから学習を始める方が学習前に一読されると全体感が掴めるかと思います。

公式リンクはこちら

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

Ruby on Rails チュートリアルの概要

Ruby on Rails チュートリアルは、SNSTwitterのようなサンプルアプリケーション作成をテーマにした無料の大型チュートリアルです。

Ruby on Railsの専門知識のみではなく、以下を体系的に学べます。

・HTMLとCSS

Rubyの基礎

・データベース

・バージョン管理

・開発技法

チュートリアルを進めていくうちにアプリケーションができあがってくるので開発/学習のモチベーションが上がります。

Ruby on Rails チュートリアルを進める上での注意点

Ruby,Ruby on Railsの基礎知識を学習することを推奨(詳細は以下の記事参照)

Ruby(Ruby on Rails)学習方法~入門編~ - 新米パパの育児留学

・調べてもわからない点があっても読み飛ばしてドンドン進める(2周するつもりくらいで丁度よい)

・期間を空けずに定期的に学習する

Ruby on Rails チュートリアルの成果物

「第1章 ゼロからデプロイまで」

f:id:mochikichi321:20170604070658p:plain

https://serene-everglades-81078.herokuapp.com/

「第2章 Toyアプリケーション」

f:id:mochikichi321:20170604070710p:plain

https://hidden-forest-93840.herokuapp.com/

f:id:mochikichi321:20170604070739p:plain

https://hidden-forest-93840.herokuapp.com/microposts

「第3章 ほぼ静的なページの作成」~「第14章 ユーザーをフォローする」

f:id:mochikichi321:20170604160802p:plain

https://guarded-oasis-26795.herokuapp.com/

第1章 ゼロからデプロイまで

概要

難易度★☆☆☆☆(1)

必要なソフトウェアをインストールし、開発環境を整え、hello_appというRailsアプリの最初のサンプル作成に取りかかる。Gitを使ったバージョン管理を行う。最後には、作成したアプリを早々に本番(production)環境にデプロイして一般公開する。

<キーワード>

・Model-View-Controller (MVC)

・Hello, world!

・Gitによるバージョン管理

・デプロイ

演習問題と解答

mochikichi.hatenablog.com

第2章 Toyアプリケーション

概要

難易度★☆☆☆☆(1)

大量の機能を自動的に生成するscaffoldジェネレータというスクリプトを使ってアプリケーションをすばやく生成し、それを元に高度なRailsプログラミングとWebプログラミングの概要を学ぶ。

<キーワード>

・Scaffold

演習問題と解答

mochikichi.hatenablog.com

第3章 ほぼ静的なページの作成

概要

難易度★☆☆☆☆(1)

本格的なサンプルアプリケーションの開発を進めていく。静的なページの作成について学ぶ。「自動化テスト」の雰囲気を掴む。

<キーワード>

・ERB (埋め込みRuby: Embedded RuBy)

テスト駆動開発「red・green・REFACTOR」サイクル

演習問題と解答

mochikichi.hatenablog.com

第4章 Rails風味のRuby

概要

難易度★★☆☆☆(2)

Railsにおいて重要となるRubyhttp://mochikichi.hatenablog.com/entry/2017/02/09/200808のさまざまな要素について探っていく。「Rails風味のRuby」というものについての確固たる基盤を、皆さんのこれまでの言語経験に関わらず提供。

<キーワード>

・ヘルパー

Rails console

Ruby言語の基礎

演習問題と解答

mochikichi.hatenablog.com

第5章 レイアウトを作成する

概要

難易度★★☆☆☆(2)

アプリケーションにBootstrapフレームワークを組み込み、カスタムスタイルを追加。これまで作成したページ (HomeやAboutなど) へのリンクをレイアウトに追加。その途中で、パーシャル、Railsのルーティング、Asset Pipelineについて学び、さらにSassについても紹介する。

<キーワード>

・Bootstrapを用いてスタイルをカスタム

・Sass

・統合テスト

演習問題と解答

mochikichi.hatenablog.com

第6章 ユーザーのモデルを作成する

概要

難易度★★☆☆☆(2)

これから6つの章を通して、ユーザー登録ページを作っていく。本章では、一番重要なステップであるユーザー用のデータモデルの作成と、データを保存する手段の確保について学ぶ。

<キーワード>

・Userモデル作成

・有効性の検証(バリデーション)

・セキュアなパスワードを追加する

演習問題と解答

mochikichi.hatenablog.com

第7章 ユーザー登録

概要

難易度★★★☆☆(3) (このあたりから難易度UPします)

Userモデルができあがったので、いよいよユーザー登録機能を追加する。

<キーワード>

デバッグ

・form_forを使用してユーザー登録フォームを作成

・エラーメッセージ表示

・サクセスメッセージ表示

演習問題と解答

mochikichi.hatenablog.com

第8章 基本的なログイン機構

概要

難易度★★★☆☆(3)

第7章でWebサイトでの新規ユーザー登録が行えるようになったので、今度はユーザーがログインやログアウトを行えるようにする。

<キーワード>

・sessionsコントローラー作成

・log_inメソッド

・log_outメソッド

演習問題と解答

mochikichi.hatenablog.com

第9章 発展的なログイン機構

概要

難易度★★★☆☆(3)

第8章では、基本的なログイン機構を実装した。しかし最近のウェブサービスでは、(任意で) ユーザーのログイン情報を記憶しておき、ブラウザを再起動した後でもすぐにログインできる機能 (remember me) を備えていることも一般的になってきた。そこで本章では、永続クッキー (permanent cookies) を使ってこの機能を実現していく。

※第9章を飛ばして第10章に進むことも可能。

<キーワード>

・永続的cookiesを利用してログイン状態の保持(Remember me 機能)

・永続的cookiesを削除してユーザーを忘れる

演習問題と解答

mochikichi.hatenablog.com

第10章 ユーザーの更新・表示・削除

概要

難易度★★★★☆(4)

Usersリソース用のRESTアクションのうち、これまで未実装だったedit、update、index、destroyアクションを加え、RESTアクションを完成させる。本章ではまず、ユーザーが自分のプロフィールを自分で更新できるようにする。次に、すべてのユーザーを一覧できるようにする。最後に、ユーザーを削除し、データベースから完全に消去する機能を追加する。

<キーワード>

・フレンドリーフォワーディング

・ページネーションを利用した一覧表示

・管理ユーザー権限設定

演習問題と解答

mochikichi.hatenablog.com

第11章 アカウントの有効化

概要

難易度★★★★☆(4)

アカウントを有効化するステップを新規登録の途中に差し込むことで、本当にそのメールアドレスの持ち主なのかどうかを確認できるようにする。大まかな流れは、(1) 有効化トークンやダイジェストを関連付けておいた状態で、(2) 有効化トークンを含めたリンクをユーザーにメールで送信し、(3) ユーザーがそのリンクをクリックすると有効化できるようにする。

<キーワード>

・AccountActivationsリソース

・アカウント有効化のメール送信

演習問題と解答

mochikichi.hatenablog.com

第12章 パスワードの再設定

概要

難易度★★★☆☆(3) ※第11章の内容と似ているため理解しやすい

パスワード再設定を実装する。ログインフォームに「forgot password」リンクを追加し、そのリンクをクリックするとフォームが表示され、そこにメールアドレスを入力してメールを送信すると、そのメールにパスワード再設定用のリンクが記載されている。この再設定用のリンクをクリックすると、ユーザーのパスワードを再設定してよいか確認を求めるフォームが表示される。

<キーワード>

・PasswordResetsリソース

・パスワード再設定のメール送信

演習問題と解答

mochikichi.hatenablog.com

第13章 ユーザーのマイクロポスト

概要

難易度★★★★☆(4)

ユーザーが短いメッセージを投稿できるようにするためのリソース「マイクロポスト」を追加する。Micropostデータモデルを作成し、Userモデルとhas_manyおよびbelongs_toメソッドを使って関連付けを行い、さらに、結果を処理し表示するために必要なフォームとその部品を作成する。

<キーワード>

・has_manyやbelongs_toを利用した関連付け

・CarrierWaveを利用した画像アップロードや画像リサイズ

演習問題と解答

mochikichi.hatenablog.com

第14章 ユーザーをフォローする

概要

難易度★★★★★(5)

他のユーザーをフォロー/解除できるソーシャルな仕組みの追加と、フォローしているユーザーの投稿をステータスフィードに表示する機能を追加。ユーザー間の関係性のモデリング方法を学び、 モデリング結果に対応するWebインターフェースを実装する。最後に、ステータスフィードの完成版を実装する。

<キーワード>

・has_many :throughを利用したモデリング

Ajaxを利用したwebインターフェイス構築

演習問題と解答

mochikichi.hatenablog.com

第14.4章 サンプルアプリケーションの機能拡張

概要

難易度 ー (取組む内容による)

チュートリアルで作成したサンプルアプリケーションに機能を拡張する。自分で調べて実装していくためこれまでに比べるとかなり難易度は上がるが、より実践的な部分を学べる。

機能拡張のサンプル#1 検索機能拡張

mochikichi.hatenablog.com

機能拡張のサンプル#2 いいね(like)機能拡張

mochikichi.hatenablog.com