MRが楽しい

MRやVRについて学習したことを書き残す

AWESOME-COPILOTのドキュメントを読む その114(Ruby on Rails)

本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つRuby on Railsについてです。

Ruby on Rails

Ruby on RailsはRuby on Rails開発時のコーディング規約・設計方針・テスト・API・フロントエンド開発のベストプラクティス集です。
Ruby on Rails(通称 Rails)はRuby言語でWebアプリケーションを高速開発するためのフレームワークです。
Webサービス、管理画面、APIサーバー、ECサイトなどを少ないコード量で素早く作れるのが特徴です。

以下のページからGenaiscriptのインストールボタンをクリックして取得します。
github.com

インストールボタンを押してRuby on Railsをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、CopilotはRailsベストプラクティスに沿ったコード生成するようになります。

以下の関連ファイルを対象に動作します。

  • '**/*.rb'

具体的にはCopilotは以下のような行動をとります。

Rails Way を最優先する

Copilot Convention over Configurationを重視し、Rails標準を優先します。
例えばルーティングには以下を使います。

resources :users

RuboCopスタイルになる

CopilotはRuboCop準拠コードを書きます。
例えばclass/moduleはPascalCaseで命名します。

メソッドを短くする

Copilotはsmall methodを好みます。
深いifを嫌います。

Controllerを小さくする

CopilotはFat Model, Skinny Controller思想でコード作成を行います。

良い例
def create
  OrderService.new(params).call
end
悪い例
class OrdersController
  def create
    # business logic 50 lines
  end
end

Service Objectを積極生成する

Copilotは複雑なロジックをapp/servicesへ切り出します。
例えば以下のようなファイルを生成します。

app/services/payment_service.rb

App Directoryを整理する

Copilot は以下のディレクトリを構成します。

Services

app/services

Forms

app/forms

Serializers

app/serializers

Policies

app/policies

Queries

app/queries

GraphQL

app/graphql