最近仕事でRailsのコードレビューをする時間が長くって、いろいろ指摘するんですが、
Railsって「Railsチュートリアル」には書いていないのに覚えないと仕事にならないこと多すぎだなと気付かされます。
どこでどんなふうにすれば、プロになろうとしている人が最短距離で知識を獲得できるかはわからないですが、
今思っている特に大事だなと思うことつらつらと書いていきます。
😀 プログラミングの重要な要素
まず、Railsの前にプログラミングで全般的に特に重要と思っている要素を紹介します。
- リーダブルなコード - ネーミングルールについて - 言語・フレームワークのルール - 変数のスコープについて - プロジェクトの設計思想 - オブジェクト指向・コードの再利用性 - 正しいテストケースを作る
プロジェクトによって変わるので、すべては書きませんが、ぜひ意識してどこを学ぶべきかを考えてみてください。
🚕 ネーミングルールについて
- 動詞・名詞を正しく使い分けてください(英語は慣れるまでたいへんですが、頑張ってください><)
- 名前は「ほかのチームメンバーにも意味が分かる英語の名前」にしてください
- プロジェクト内の周りのメソッド・変数がどんな意味を持っているか考えて見てください
🍮 コーディングガイドライン
Ruby/Railsの有名なコーディングガイドラインは世の中にたくさんあるので、ぜひ読んでください。
- The Ruby Style Guide (bbatsov)
- The Rails Style Guide (bbatsov)
- CookPad Ruby コーディング規準
- The Ruby Style Guide (fortissimo1997)
- The Rails Style Guide (satour)
🏀 変数のスコープについて
変数のスコープにおいてプログラムの読みやすさはすごく大切です。
ローカル変数、インスタンス変数、クラス変数のスコープを理解して使い分けてください。
スコープの広い変数をむやみに使うとほかの人がコードを読みにくくなり、バグの温床になります。
🗽 オブジェクト指向について
😸 そのほか必須で読んでほしい本・記事
書籍
記事
🚌 Rails/Ruby Tips
ここからは、細かめのTipsです。よく指摘するところを中心に書きます。
Active Record
- pluckを上手に活用してください(ARのオブジェクトを作らないのでSQLのコストが減ります)
- ログを見て、無駄なSQLがないかを常に考えてください
- indexが適切に効かないと、パフォーマンスが悪くなります。常にパフォーマンスを意識してください
Rails - View
- 共通的に使う可能性のあるものは、
Decorator(ActiveDecorator等を利用)
側に書いてください - Viewのロジックはできる限り減らしてください
- haml/slimは構造化しやすいという点で便利!
Rails - i18n
適材適所でi18nを活用してください。
N+1問題の対策 - Bullet
RailsのActive Record(findやwhere)は便利ですが、DB(SQL)の側から見ると
非効率的なクエリを発生させることがあります。
これを監視してくれるのが、『Gem Bullet』です。
このGemを入れておくと開発環境でN+1が発生した時に警告を出してくれます。
Profiler
Viewが遅い時にボトルネックを探すためのツールです。
速度改善をする場合はプロファイラか、ログを取ってボトルネックを計測して実施してください。
- MiniProfiler/rack-mini-profiler - GitHub
- railsアプリでstackprofを使ってボトルネックを探す + JSON::Schema(2.2.1)の高速化 - CubicLouve
Ruby/Railsの細かいTips
- Rubyの定数は書き換え可能です。immuテーブルな場合は必ず、最後に .freezeをつけてください
- Timezoneもしっかり意識して実装するとあとあとはまらないと思います
- Active Support::StringInquirerを使うとコードが読みやすくなります。適材適所で利用を検討してください。
🏈 参考書籍
そのほか読んでおくといいよって本です。
あとは『プログラマ歴12年の僕が選んだ「10年経っても役立つ技術書17選」 - give IT a try』
にプログラマーが基礎を身につける上で役に立ちそうな本が紹介されています。こちらも良かったら読んでみてください^^
🎂 本当に初心者な人向けに
ちょっと上の内容がハードだなと思う人向けには拙著
『ぼくのかんがえたさいきょうのRailsファースト・ガイド - 酒と泪とRubyとRailsと』
をよかったら読んでみてください。