このディレクティブは、Ruby on Rails、PostgreSQL、Hotwire、および Tailwind CSS を使って開発する際に、ベストプラクティスと仕様に従うよう開発者を導くことを目的としています。
主な要素は以下の通り:
- コードスタイルと構造: Railsのベストプラクティスに準拠し、オブジェクト指向と関数型のプログラミングパターンを合理的に利用した、クリーンで慣例的なRubyコードを書くことに重点を置く。
- 命名規則:ファイル、メソッド、変数、クラス、モジュールの命名規則の詳細。
- RubyとRailsの使用法:Ruby 3.xの新機能の使用を奨励し、Railsの組み込み機能とActiveRecordを最大限に活用する。
- 構文と書式: Rubyスタイルガイドに従い、Rubyの表現力豊かな構文機能を利用する。
- エラー処理と検証:例外処理、ロギング、ユーザーフレンドリーなエラーメッセージ、モデルの検証の重要性が強調されている。
- UIとスタイル:動的インタラクションにはHotwire、レスポンシブデザインにはTailwind CSSを推奨。
- パフォーマンスの最適化:データベースのインデックス作成、キャッシュ戦略、N+1クエリの回避など、最適化に関する推奨事項が提供されます。
- 主な規約:RESTfulルーティング、コンサートを使った動作の共有、複雑なビジネスロジックを扱うサービスオブジェクトなど。
- テスト:包括的なテストカバレッジを重視し、RSpecまたはMinitestを推奨し、TDD/BDDプラクティスに従う。
- セキュリティ:認証や認可、パラメータのホワイトリスト化、一般的なウェブの脆弱性に対する保護などのセキュリティ対策が含まれる。
このガイドラインは、開発者が高品質で保守性が高く、安全でパフォーマンスの高い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の公式ガイドに従ってください。