Ruby on Railsがわからないときに見る場所
RailsはSQLからJavaScriptまで広い範囲を扱えるため、詰まりポイントが非常に多いです。私がRailsに慣れなかったころに確認していたことを振り返ってまとめてみます。
どこがつまりポイントになるか
Railsが扱う要素技術は非常に多いので、初心者にとってはそれら一つ一つがつまりポイントになります。よくよく調べてみると、意外とRails自体で詰まることは少ないかもしれません。Railsでは、主に下記の要素技術を扱います。
- Ruby
- データベース、SQL
- HTTP
- HTML
- CSS
- JavaScript
たぶんもっとありますが、これら一つ一つがそれぞれ奥深い技術です。うまく動かなくてもめげずに根気よく向き合って行きましょう。
Railsの使い方がわからないとき
あまりひねったことはせず、公式のガイドとリファレンスガイド、ソースコードを見るのがわかりやすいです。Qiitaや技術系ブログの記事もわかりやすくて良いのですが、私の場合は変なつまり方をしてしまうことがあったので、できるだけ確実な一次情報を当たるようにしていました。
慣れていない機能を使うときは、まずガイドで大まかな使い方を把握します。やりたいことができそうなことが確認できたら、使いたいメソッドについてリファレンスガイドで詳しい説明を確認します。引数の渡し方や、ガイドには書いていない便利な機能、あるいは制約が書いてあることがあるので、注意して確認します。
ソースコードの方は正直かなり巨大なので、細かく読むことはめったにありませんでした。RailsはActionView、ActiveModel、ActiveRecordといったモジュールに分かれていて、それらをRailtieというモジュールでつなぎ合わせています。ソースコードでは、各モジュールのREADME.mdを読んで、モジュールの担当範囲を把握したり、主要なクラスの継承関係、依存関係を把握します。この構成がわかっているとリファレンスガイドから知りたい情報にたどり着くのが圧倒的に早くなります。
Rubyの使い方がわからないとき
Rubyの方も、同じような方法で調べます。ただし、体系立てて学べる資料がインターネット上で見つけられなかったので、私は書籍から入っていきました。
- Introduction - Ruby Reference
- Index of Files, Classes & Methods in Ruby 2.7.2 (Ruby 2.7.2)
- オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.7.0 リファレンスマニュアル)
英語版のリファレンスマニュアルと、日本語版のリファレンスマニュアル(通称るりま)は微妙に書いてあることが違ったりするので、両方確認していました。
Railsが思うように動かないとき
Railsのコードが思うように動かないとき、Railsがわかっていないというよりは、Railsを構成する要素技術の理解が足りないためにうまくいかないというのがほとんどです。
何が悪いのか検討もつかない場合は、フロントエンドからサーバーサイドに向かって、順を追ってどこでうまく行っていないのか確認すると良いでしょう。
DOM要素を確認する
ブラウザの開発者ツールを立ち上げて、HTMLとCSSが意図した状態になっているか確認します。JavaScriptを使っている場合は、コンソールにエラーが出ていないかも確認します。
HTML、CSS、JavaScriptについて、下記のことがはっきりわかっていないときは、MDNなどで知識を補いながら確認します。
- 期待する動作をさせるためには、HTMLはどのようになってればよいか
- CSSが意図した要素に対して有効か
- CSS、JavaScriptのソースコードがページに読み込めているか
HTTPメッセージを確認する
こちらも開発者ツールでのネットワークタブから、HTTPメッセージを確認します。
下記、足りない知識があれば補いながら確認します。HTTPについてはMDNの解説がちょうどいい粒度です。
Railsのデバッグログを確認する
rails server
を実行したターミナルに、デバッグ用のログが出力されるので、ここから下記のようなことを確認します。
SQLについては、書籍も学習サイトも豊富にあるかと思いますので、お好きなもので学習してください。
Started GET "/" for ::1 at 2020-10-27 07:42:03 +0900 Processing by TopController#index as HTML Rendering top/index.html.erb within layouts/application Board Load (0.1ms) SELECT "boards".* FROM "boards" ↳ app/views/top/index.html.erb:25 Rendered top/index.html.erb within layouts/application (Duration: 3.7ms | Allocations: 870) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 15ms (Views: 13.5ms | ActiveRecord: 0.1ms | Allocations: 4993)
Railsのコントローラーを確認する
デバッガーを使って、Railsの動きを止めて、変数に意図した値が入っているか確認いしてみましょう。 デバッガーの使い方はこちらが詳しいです。
Rails アプリケーションのデバッグ - Railsガイド
以下を確認します
- 変数に意図した値が入っているか
- request, paramsに意図した値が入っているか
終わりに
Railsは覚えることが非常に多く、エディターの補完も効く範囲が限られているので、気を抜くとすぐに迷子になってしまします。 詰まったらまずは、「自分が理解できていないことは何か」を理解することを心がけましょう。