マイペースなRailsおじさん

Ruby、Ruby on Rails、オブジェクト指向設計を主なテーマとして扱います。だんだん大きくなっていくRuby on Rails製プロダクトのメンテナンス性を損なわない方法を考えたり考えなかったりしている人のブログです。

Ruby on Railsがわからないときに見る場所

RailsSQLからJavaScriptまで広い範囲を扱えるため、詰まりポイントが非常に多いです。私がRailsに慣れなかったころに確認していたことを振り返ってまとめてみます。

どこがつまりポイントになるか

Railsが扱う要素技術は非常に多いので、初心者にとってはそれら一つ一つがつまりポイントになります。よくよく調べてみると、意外とRails自体で詰まることは少ないかもしれません。Railsでは、主に下記の要素技術を扱います。

たぶんもっとありますが、これら一つ一つがそれぞれ奥深い技術です。うまく動かなくてもめげずに根気よく向き合って行きましょう。

Railsの使い方がわからないとき

あまりひねったことはせず、公式のガイドとリファレンスガイド、ソースコードを見るのがわかりやすいです。Qiitaや技術系ブログの記事もわかりやすくて良いのですが、私の場合は変なつまり方をしてしまうことがあったので、できるだけ確実な一次情報を当たるようにしていました。

慣れていない機能を使うときは、まずガイドで大まかな使い方を把握します。やりたいことができそうなことが確認できたら、使いたいメソッドについてリファレンスガイドで詳しい説明を確認します。引数の渡し方や、ガイドには書いていない便利な機能、あるいは制約が書いてあることがあるので、注意して確認します。

ソースコードの方は正直かなり巨大なので、細かく読むことはめったにありませんでした。RailsActionView、ActiveModel、ActiveRecordといったモジュールに分かれていて、それらをRailtieというモジュールでつなぎ合わせています。ソースコードでは、各モジュールのREADME.mdを読んで、モジュールの担当範囲を把握したり、主要なクラスの継承関係、依存関係を把握します。この構成がわかっているとリファレンスガイドから知りたい情報にたどり着くのが圧倒的に早くなります。

Rubyの使い方がわからないとき

Rubyの方も、同じような方法で調べます。ただし、体系立てて学べる資料がインターネット上で見つけられなかったので、私は書籍から入っていきました。

英語版のリファレンスマニュアルと、日本語版のリファレンスマニュアル(通称るりま)は微妙に書いてあることが違ったりするので、両方確認していました。

Railsが思うように動かないとき

Railsのコードが思うように動かないとき、Railsがわかっていないというよりは、Railsを構成する要素技術の理解が足りないためにうまくいかないというのがほとんどです。

何が悪いのか検討もつかない場合は、フロントエンドからサーバーサイドに向かって、順を追ってどこでうまく行っていないのか確認すると良いでしょう。

DOM要素を確認する

ブラウザの開発者ツールを立ち上げて、HTMLとCSSが意図した状態になっているか確認します。JavaScriptを使っている場合は、コンソールにエラーが出ていないかも確認します。

HTML、CSSJavaScriptについて、下記のことがはっきりわかっていないときは、MDNなどで知識を補いながら確認します。

  • 期待する動作をさせるためには、HTMLはどのようになってればよいか
  • CSSが意図した要素に対して有効か
  • CSSJavaScriptソースコードがページに読み込めているか

f:id:ytnk531:20201028001803p:plain

HTTPメッセージを確認する

こちらも開発者ツールでのネットワークタブから、HTTPメッセージを確認します。

下記、足りない知識があれば補いながら確認します。HTTPについてはMDNの解説がちょうどいい粒度です。

  • HTTPレスポンスボディ、HTTPリクエストボディに意図したデータが書き込まれているか
  • HTTPレスポンスヘッダ、HTTPリクエストボディに見慣れないヘッダが付与されていないか

f:id:ytnk531:20201028002136p:plain

Railsデバッグログを確認する

rails serverを実行したターミナルに、デバッグ用のログが出力されるので、ここから下記のようなことを確認します。

  • 意図したページにリクエストが投げられたか
  • 意図したコントローラーで処理が実行されたか
  • 意図したSQL分が実行されているか

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は覚えることが非常に多く、エディターの補完も効く範囲が限られているので、気を抜くとすぐに迷子になってしまします。 詰まったらまずは、「自分が理解できていないことは何か」を理解することを心がけましょう。