koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Railsガイド読みました

はじめに

私は今勤めている会社では研修期間中でして、シンプルなRailsアプリを開発してレビューをいただくという日々を送っています。
そのレビューをいただく中で、Railsについて「全く知らないことが多い」と感じました。
それはメソッドレベルの話だけではなく、「Railsではこの書き方が推奨されている」などということも含めてです。

そのような「全く知らないを少なくしたい」と思い、今回Railsガイド(日本語訳版)を読みました。

railsguides.jp

皆さんご存知の通りRailsガイドはものすごい量なので、全てを理解しようとはせずに以下の記事で紹介されているインデックスを作るという読み方を心がけました。
今は理解できないかも知れないけど、必要な時に参照できるくらいには頭に入れておこうという感じです。

blog.jnito.com

Railsガイドを読むということは、Railsプログラマーとしては当然のことで、わざわざブログに書くことではないかもしれません。
しかし、自分の中ではなんとか成し遂げたという感じがあるので、この気持ちを残しておきたいと思いこの記事を書きました。

ちなみに、少し前にDashでRailsガイドを検索したいと思いdocset欲しさに電子書籍版を購入していたので、今回は電子書籍版を読み進めました。

読んでみた感想

流石に全ての章に対して感想を書いていては埒があかないので特に勉強になった部分をピックアップして感想を書いていきたいと思います。

特に勉強になったところ

Active Record クエリインターフェイス

私はfindwhereくらいしか覚えていなかったのですが、find_eachrewheredefault_scopepluckなど知らないメソッドや機能を知ることができて良かったです。
また、楽観的ロックと悲観的ロックについては曖昧だったため、その部分にも言及されていて改めて理解できました。

正直な話、データベースへのアクセス・検索についてはあまり理解していなかったところでした。
しかし、とても重要なところだと思うのでこれを機にある程度学ぶことができて良かったです。

Action View フォームヘルパー

いつもViewを書いていて「こういうことをしたいんだけど、どんなヘルパーがあるかなぁ」と、あたりをつけることができずに都度調べて実装するという行き当たりばったりな感じがありました。
しかし、これを機にどんなヘルパーがあるのかが分かり、ヘルパーを調べるときのあたりをつけやすくなったと思います。

また、自分でFormBuilderクラスを定義し、その中でtext_fieldなどを再定義することで自分が使いやすいようにヘルパーをカスタマイズするということをやって良いのだと新しい発見がありました。

Railsセキュリティガイド

セキュリティ関連については本当に暗くて、SQLインジェクション・クロスサイトスクリプティングがなんとなく分かるというレベルでした。
ここでは、様々な攻撃方法があり、それに対してRailsがどのような対策をとっていて開発者はどのようなことをすれば良いのかということが明示されていてとても有り難かったです。

セキュリティについて、ほぼ意識せずともRailsがやってくれていると知り、改めて素晴らしいと感じました。
セキュリティ関連については、まだまだ知識がないのですが、少しは理解できるようになったかなという感じです。

全体的な感想

今回のRailsガイドを読む目的であった「Railsについて全く知らないことを少なくする」ことはある程度達成できたという感じがします。
大まかにRailsでできることがなんとなく理解でき、それらについて頭の中でインデックスを作ることができたような感じがしています。

一方で、理解できなかった部分も多いです。
zeitwerk・初期化プロセス・スレッドなどは理解できず、そういった部分に関しては本当に目を通すだけという感じで読み進めました。

ただ、そのような部分であっても必要になった時に参照できるくらいのインデックスを頭の中に作ることはできたと思います。

そのため、理解できた部分・理解できなかった部分共に、都度該当する部分を参照し直してRailsに対する理解を深めていければと思います。

最後に

今回はまとまった時間が取れたのでRailsガイドを読んでみましたが、総じてRailsでどんなことができるのかということが掴めて良かったです。

しかし、「Railsでこういうことができる」という知識があっても綺麗なコードを書けるようにはならないと思うので、コードを書く力は今後レビューを受けて徐々につけていきたいと思っています。

次は『パーフェクトRails』やAPIリファレンス を読もうかなーと思っています。