ruby-rails について
Railsアプリケーションの開発・保守を行う開発者向けのRubyおよびRuby on Railsスキルです。規約、データアクセス、フロントエンド、安全性、テスト、性能、Rails 8の標準構成を扱います。
主な機能
- 01慣用的なRubyとRailsの規約
- 02ActiveRecordとデータベース性能のパターン
- 03Rails 8組み込みサービスの標準構成
- 04HotwireとレスポンシブUIの指針
- 05セキュリティと認可の実践
- 06MinitestとRSpecのテスト指針
活用シーン
- 01Railsの規約に沿ったファイル生成
- 02DB利用アプリでのN+1クエリ防止
- 03Rails 8のジョブとキャッシュの標準選択
- 04安全な機能とテスト範囲の計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill ruby-railsインストール後、Claude Code で/ruby-railsを入力して読み込まれたか確認します。
詳細
Ruby on Rails
このスキルでは、Rails の規約、ActiveRecord のパターン、フロントエンド連携、セキュリティ、テストなど、Ruby および Ruby on Rails の開発を扱います。
基本原則
- 簡潔で慣用的な Ruby コードを、正確な例とともに記述します
- Rails の規約(設定より規約)に従います
- 書式の一貫性を保つため、Ruby Style Guide に従います
- パターンマッチングやエンドレスメソッドなど、Ruby 3.x の機能を活用します
- 手書きの定型コードより、Rails のコマンドラインジェネレーター(
bin/rails generate ...)を優先します。ファイルをフレームワークの規約に沿った一貫したものに保ち、テストやルートも自動的に設定できます - ローカルの開発サーバーを実行するには
bin/devを使います(Web プロセスと設定済みのウォッチャーを起動します)。大幅な変更を加えた後はログを確認します
命名規則
- ファイル、メソッド、変数には snake_case を使います
- クラスとモジュールには CamelCase を使います
- モデル、コントローラー、ビューには Rails の命名規則に従います
アーキテクチャとパフォーマンス
- データベース操作には ActiveRecord を利用し、適切なインデックスを設定します
- 本番環境では PostgreSQL を使用し、適切なインデックス、コネクションプーリング、安全でロールバック可能なマイグレーションを設定します
- N+1 クエリ問題を防ぐため、Eager Loading を実装します
- フラグメントキャッシュとロシア人形キャッシュ戦略を適用します
- 複雑なビジネスロジックにはサービスオブジェクトを使います
- MVC アーキテクチャを厳守します
- コントローラーは RESTful に保ち、役割を絞ります
Rails 8 のデフォルト
Rails 8 には「PaaS 不要」のスタックが同梱されています。特別な理由がない限り、外部サービスを追加するより、これらの組み込み機能を優先します。
- Solid Queue — データベースを基盤とする ActiveJob アダプターです。ジョブ量や機能要件(例:Sidekiq Pro のバッチ処理)で必要な場合を除き、Redis/Sidekiq を別途用意する代わりに、バックグラウンドジョブのデフォルトのバックエンドとして使います
- Solid Cache — データベースを基盤とするキャッシュストアです。Redis/Memcached を別途デプロイせずに Rails.cache を使う場合の妥当なデフォルトです
- Solid Cable — Redis なしで WebSocket を利用できる、データベースを基盤とする Action Cable アダプターです
- Propshaft — デフォルトのアセットパイプラインです。Sprockets よりシンプルで、バンドル処理のステップを設けずにフィンガープリント付きファイルを配信します
- Kamal — コンテナ化した Rails アプリを自社サーバーにデプロイするためのデフォルトのデプロイツールです
フロントエンドと UI
- ページ全体を再読み込みせずに標準的な Rails のインタラクティブ機能や動的な操作を実現するには、Hotwire(Turbo と Stimulus)を使います
- npm で管理する JavaScript(React/Vue コンポーネントや複雑なバンドル処理)が本当に必要な場合に限り、Vite で管理する JS パイプライン(例:vite_rails)を使います。デフォルトでは追加しないでください
- Tailwind CSS でレスポンシブなデザインを実装します
- ヘルパーとパーシャルを使い、DRY なビューを保ちます
- 再利用可能な UI コンポーネントには ViewComponents を使います
セキュリティ
- Devise または Pundit を使って認証/認可を実装します
- マスアサインメントの脆弱性を防ぐため、コントローラーで Strong Parameters を使います
- ユーザー入力を適切にサニタイズします
- CSRF 保護トークンを使います
- 適切なセッション管理を実装します
テスト
- TDD の実践に従い、モデル、コントローラー、統合フローを対象とした包括的な Minitest または RSpec のカバレッジを作成します
- テストデータの生成にはフィクスチャではなく FactoryBot を使います
- 外部サービスをモックし、事前に定義した戻り値をスタブします
- 異なるコンテキストに共通する振る舞いには Shared Examples を使います
- 各テストが独立して実行できるようにし、テスト間で共有状態を使わないようにします
ベストプラクティス
- コントローラーは薄く、モデルは厚く保ちます(ただし、厚くしすぎないようにします)
- 共通の機能には Concerns を使います
- Sidekiq または ActiveJob でバックグラウンドジョブを実装します
- 適切なデータベースマイグレーションを使います
- RESTful なルーティング規約に従います
コメント
Markdown 対応