このディレクティブは、Ruby on Rails、PostgreSQL、Hotwire、および Tailwind CSS を使って開発する際に、ベストプラクティスに従うよう開発者を導くことを目的としています。以下の領域をカバーしています:
- コードスタイルと構造: Railsの規約に従い、適切なプログラミングパターンを使用し、コードの重複を避け、説明的な命名を採用し、Railsの規約に従ってファイル構造を整理した、クリーンで慣用的なRubyコードを書くことを重視します。
- 命名規則: Railsの命名規則に従って、ファイル、メソッド、変数、クラス、モジュールの名前の付け方を指定します。
- RubyとRailsの使用法: Ruby 3.xの新機能の使用を奨励し、Railsの組み込みヘルパーメソッドとActiveRecordの機能を最大限に活用する。
- 構文と書式: Rubyスタイルガイドに従い、Rubyの表現力豊かな構文機能を利用する。
- エラー処理と検証: 例外の正しい使用方法、エラーロギングの実装、ActiveModel の検証の使用方法、コントローラー内でのエラーの優雅な処理方法についてのガイダンス。
- UIとスタイリング: 動的なインタラクションにはHotwireを、レスポンシブデザインにはTailwind CSSを、コードを整頓するにはRailsビューヘルパーとパーシャルビューを使うことをお勧めします。
- パフォーマンスの最適化:データベースのインデックスを賢く使用し、キャッシュ戦略を実装し、N+1クエリ問題を回避し、データベースクエリを最適化することが推奨される。
- 主な規約:RESTfulなルーティング規約に従うこと、コンサートを使ってビヘイビアを共有すること、複雑なビジネス・ロジックを処理するためにサービス・オブジェクトを実装すること、時間のかかるオペレーションを処理するためにバックグラウンド・タスクを使うことに重点を置いている。
- テスト:包括的なテストを書き、TDD/BDDのプラクティスに従い、ファクトリーパターンを使ってテストデータを生成することを推奨する。
- セキュリティ:適切な認証と認可を実装する方法、強力なパラメータを使用する方法、一般的なWebセキュリティの脆弱性から保護する方法に関するガイダンス。
このディレクティブは、Ruby on Rails開発のあらゆる側面を包括的にカバーし、開発者が高品質で安全かつ効率的なコードを書けるように設計されています。
ルビー
Ruby on Rails、PostgreSQL、Hotwire(TurboおよびStimulus)、Tailwind CSSのエキスパート。
コードのスタイルと構造
- 簡潔で慣用的なRubyコードを、正確な例とともに書くこと。
- Railsの規約とベストプラクティスに従ってください。
- オブジェクト指向や関数型プログラミングのパターンを適宜使用する。
- コードの重複よりも反復とモジュール化を優先する。
- 説明的な変数名やメソッド名を使用する (例: user_signed_in?, calculate_total)。
- Railsの規約(MVC、懸念、ヘルパーなど)に従ってファイルを構造化する。
命名規則
- ファイル名、メソッド名、変数にはsnake_caseを使用する。
- クラス名とモジュール名にはキャメルケースを使用する。
- モデル、コントローラ、ビューにはRailsの命名規則に従ってください。
RubyとRailsの使用法
- 必要に応じてRuby 3.xの機能を使う(パターンマッチ、エンドレスメソッドなど)。
- Railsの組み込みヘルパーやメソッドを活用する。
- データベース操作にActiveRecordを効果的に使う。
構文と書式
- Ruby Style Guide (https://rubystyle.guide/) に従う。
- Rubyの表現力豊かな構文(unless、 ||=、&.など)を使いましょう。
- 補間が必要でない限り、文字列は単一引用符で囲む。
エラー処理と検証
- 例外は、制御フローではなく、例外的な場合に使いましょう。
- 適切なエラーログとユーザーフレンドリーなメッセージを実装する。
- モデルでは ActiveModel バリデーションを使用する。
- コントローラ内でエラーを優雅に処理し、適切なフラッシュメッセージを表示する。
UIとスタイリング
- Hotwire (Turbo と Stimulus) を使用して、SPA のような動的なインタラクションを実現する。
- Tailwind CSSを使ってレスポンシブデザインを実装しましょう。
- Railsのビューヘルパーとパーシャルを使って、ビューをDRYに保ちましょう。
パフォーマンスの最適化
- データベースのインデックスを効果的に使用する。
- キャッシュ戦略(フラグメントキャッシュ、ロシアンドールキャッシュ)を実装する。
- イーガーローディングを使用してN+1クエリを回避する。
- include、join、selectを使用してデータベースクエリを最適化する。
主な規約
- RESTfulルーティングの規約に従う。
- モデルやコントローラ間で共有される振る舞いには懸念を使用する。
- 複雑なビジネスロジックにはサービスオブジェクトを実装する。
- 時間のかかるタスクにはバックグラウンドジョブ(Sidekiqなど)を使用する。
複雑なビジネスロジック用にサービスオブジェクトを実装する。
- RSpecまたはMinitestを使用して包括的なテストを記述する。
- TDD/BDDプラクティスに従う。
- テストデータの生成にはファクトリー(FactoryBot)を使用する。
セキュリティ
- 適切な認証と認可を実装する(例:Devise、Pundit)。
- コントローラで強力なパラメータを使用する。
- 一般的なWebの脆弱性(XSS、CSRF、SQLインジェクション)から保護する。
ルーティング、コントローラ、モデル、ビュー、その他のRailsコンポーネントのベストプラクティスについては、Ruby on Railsの公式ガイドに従ってください。