はじめに
現場で使えるRuby on Rails5速習実践ガイドを読んだので、感想などをまとめてみました。
良かったところ
実際にアプリを作成しながら機能の実装についてしっかり解説してあるので、非常にわかりやすかったです。またチーム開発の流れも書いてあって、未経験の方は実務の流れがイメージしやすいので、とても良いと思いました。
学んだこと
MVC
Railsでは、アプリケーションの構造や名前付けを、M(モデル)、V(ビュー)、C(コントローラ)の3つの要素に従ってます。
モデルとは、データとデータに関わるビジネスロック(アプリケーション特有の処理)をオブジェクトとして実装したもです。データベースの保存や読み込みもモデルが担当する。
ビューとは、ブラウザに表示する画面、HTMLなどのHTTPレスポンスの中身を実際に組み立てる部分です。必要に応じてコントローラからモデルのオブジェクトなどを受け取り、画面表示に利用します。
コントローラは、ユーザーが操作するブラウザなどのクライアントからのリクエストを受け、適切なレスポンスを作成するための制御を行う部分です。
マイグレーション
データベースのテーブル構造の変更の1つ1つを、Rubyのプログラムとして実現し、開発の沿って順番に実行することで最新のテーブル構造の状態にできるようにする。マイグレーションは、最新の状態から戻す機能も備えている
リクエストパラメータ
Webアプリケーションでは、リクエストにデータを添えることができる。このデータを「リクエストパラメータ」と呼ぶ
リクエストパラメータの送り方は、HTTPの仕組みの上で、2通りに分かれます。
- POSTで送る。基本的にはHTMLのform要素をsubmitすることで送れる。
- GETで送る。基本的にはURLの?以降に情報を含めることで送る。普通に?の付いたURLにブラウザからアクセスするほか、form要素のmethod属性にgetを指定して、form要素のsubmitを通じてそのようなリクエストを送ることもできる。
これらの2つの方式は送り方が違うため、本来は受け取り方も異なりますが、Railsは両者をなるべく区別しなくて済むようにしてくれます。具体的には、コントローラにおいてparamsというメソッドを利用することで、POSTかGETかに関係なく、送られてきたリクエストパラメータをHashのような感覚で取得できます。
モデルの検証
Railsでは、「モデルオブジェクト(レコード)をデータベースに登録、更新する前に検証を行い、エラーがあれば登録、更新をしないで差し戻す」という仕組みになっています。この仕組みに対応する登録、更新のためのメソッドがsaveです。
saveメソッドは、データベースの登録、更新を行う前に自動的に検証を行い、検証エラーがあればfalseを返します。検証エラーがなければ、データベースの登録、更新を行なってtrueを返します。このとき、検証以外のエラーがあれば、例外を発生させます。
ルーティング
「どのようなURLへどのようなHTTPメソッドでアクセスされたら、どのコントローラのどのアクションを呼び出したか」をconfig/routes.rbに定義します。アクセスを受けて適切なアクションへと案内する仕組みを、ルーティングと呼びます。
Storong Parameters
コントローラでリクエストパラメータを受け取る際に、パラメータのどの属性を許可してどの属性を弾くのかを制御する機能です。
難しかったところ
Rails5の内容なので、実際に手を動かしながら進めるのはエラーで詰まるので、かなり大変だと感じました。