最近仕事で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を活用してください。
Profiler
Viewが遅い時にボトルネックを探すためのツールです。 速度改善をする場合はプロファイラーか、ログを取ってボトルネックを計測して実施して下さい。
- MiniProfiler/rack-mini-profiler - GitHub
- railsアプリでstackprofを使ってボトルネックを探す + JSON::Schema(2.2.1)の高速化 - CubicLouve
Ruby/Railsの細かいTips
- Ruby の定数は 書き換え可能です。immutable な場合はかならず、最後に .freeze をつけて下さい
- Timezoneもしっかり意識して実装すると後々はまらないと思います
- ActiveSupport::StringInquirerを使うとコードが読みやすくなります。適材適所で利用を検討してください。
参考書籍
その他読んでおくといいよって本です。
本当に初心者な人向けに
ちょっと上の内容がハードだなと思う人向けには拙著 『ぼくのかんがえたさいきょうのRailsファースト・ガイド - 酒と泪とRubyとRailsと』 をよかったら読んでみてください。