Ruby on Rails5速習実践ガイドを読んだ感想
タイトルの本を読んだので学習した内容、感想をまとめたいと思います。
Chapter1
Rubyの基本的な構文について学習しました。
Rubyについては学習済みでRailsの学習目的で本を読んでいる人にとっては復習的な内容になるかと思います。
Chapter2
環境構築(rbenv,bundler等)からRailsの簡単な動作確認について学習しました。
内容としてこの二点だけでしたが一つ一つ丁寧に説明されており、rbenvを導入することでrubyのバージョン管理ができるようになることやRails generate scaffold後のCRUD動作、自動生成されたフォルダ構成についてもイメージをつかむことができました。
Chapter3
最低限のCRUD機能を持ったTODOアプリケーションを作成しました。
最小限の機能に絞られていたため簡単に一通りの機能を作ることができてよかったです。
slimというものを初めて知りましたがerbファイルで記述するよりも簡略化されており非常に効率的にコーディングができると感じた半面、目が慣れず呪文のようにも見える点が戸惑いました。
また、Railsに用意されたヘルパーメソッドが活用されていますが、このあたりも慣れていない自分にとっては呪文感が強く難しく感じました。
Chapter4
マイグレーション、バリデーション、ログイン機能を作成しました。
マイグレーションはロールバックすることもあるのでバージョンを下げることも意識しておくことが重要です。
ログイン機能についてはSessionを利用することで以外と簡単に作れてしまうことをしりました。
機能を作成していく中で共通化も取り組んでおりコールバック、フィルタ等を活用し重複を取り除きました(DRY)。こういった点はプログラミンを行っていくうえで常に大事な部分かと思うので意識していきたいです。
Chapter5
Rspecを利用してテストを実施しました。
ブラウザの挙動を自動テストで確認を行うことができる点は非常に強力だと思いました。
実際に進めている中で難しかった点としてはやはりエラー発生時に原因を特定するのが難しかったです。
学習の中では、Railsコンソールやスクリーンショットで処理内容を確認することでエラー原因を特定するテクニックを活用しました。このあたりは慣れ、経験がでるポイントになると思いました。
Chapter6
ルート、国際化対応、ログ、セキュリティ、アセットパイプライン、production環境、暗号化、等々幅広く学習しました。
一つ一つなんとなくイメージを掴むことはできましたが、実践で扱うのはなかなか難しそうです。
セキュリティに関する箇所は特に重要になってくると思います。
基本的にはRailsがセキュリティに対してもいい感じにしてくれるようですが、受け取った値を元に処理を行う等の動作時には特に意識することが重要だと思いました。
Chapter7
これまで作成してきたもの機能追加を行いました。
- 登録前の確認画面
- 検索機能
- ソート機能
- メール送信機能
- ファイルのアップロード機能
- CSVのインポート/エクスポート
- ページネーション
- jobスケジュール
盛りだくさんの内容で少し大変でした。
ただ、実際にやってみるとgemの活用などで思っていたよりも簡単に実装できてしまいました。
gemが非常に強力で便利なことがだんだん実感として沸いてきました。よく使われるようなgemは最低限知っておいて必要なタイミングで活用できるようにしておきたいです。
Chapter8
JavaScriptについて簡単に学習しました。
範囲としてはほんの触りだけでしたが、ブラウザに動きがつけられるのはやはりおもしろいですね。
Chapter9
チーム開発の進め方について学習しました。
特に重要だと感じた点は以下のようなものがありました。
- Gitで管理するファイル、管理しないファイルを選択する。
- Git push -fは危険!
- 環境構築は誰でも簡単にできるようにしておくことが大事!
- マイグレーションはロールバックや今後、モデルの状態が変化していくことを意識する。
ここで内容を確認しただけではさすがに身につきませんが、こういった作業をするタイミングが来た時には内容を思い出して、考えながら作業できるようにしたいです。
Chapter10
バージョンアップに関わることや設計に関して学習しました。
小さなバージョンアップは小まめに対応することで一度の負担は比較的軽く済みます。逆に長い間全くアップロードの対応を行っていないと問題が発生した際に切り分け等が難しくなります。
コードがどんどん複雑になっていくことに伴って、どのようにコードを設計していくか様々な共通化の手法が紹介されていました。
複雑さに挑む時に大事なのは共通化を行うということよりも、まずはコードが適切な場所に記載されているのかが大事だと感じました。
本来あるべきでない場所にコードがある状態で共通化等を行っても、あまり効果を発揮しないように感じました。
Discussion