Open15

Roo ClineのBest Practiceを見つける

Dai KawaiDai Kawai

Roo Clineがあまりにも良すぎるので、
エンジニア一人で超生産性上げられるようにしたい。
いじっている中で、便利にできる方法が試行錯誤しながらメモしていく。

  • NextJS(普通に起動)
  • Rails7 (docker containerで起動)

以下のスレッドから、気付きがあれば、いろいろ必要な情報を上のほうに更新する。

カスタムプロンプト

# 実装しているソフトウェアについて

- フリーランス向けの求人サイト
- バックエンド: Ruby on Rails : localhost:3000 で起動。docker containerで経由で最初から起動しています。 `docker-compose run --rm web`以下に実行したいコマンドを設定します。
例)`docker-compose run --rm web rspec'
- フロントエンド: NextJS: localhost:3001で起動中。/frontend ディレクトリに存在する。npm run dev で起動できます。

# 実装の方針について

## 実装する前に

- まず、実装する仕様について理解するため、関連するファイルを全て閲覧してください。その結果から網羅的にまとめ、ユーザーに仕様が正しいか確認を入れてください。
- 実装するスコープが広がりすぎないようにしてください。例えば、model, controller, viewの修正が必要な場合は、各ドメインモデルの一部のみを修正し、STEP by STEP で進めていく形にしてください。

## 実装後のチェックリスト

- もし, railsに依存する修正を行った場合:
    - [ ] `docker-compose run --rm web rspec`が通ること
    - [ ] `docker-compose run --rm web  rubocop -A`が通ること

- もし、nextjsに依存する修正を行った場合:
    - [ ] `cd frontend && npm run test` が通ること
    - [ ] 'cd frontend && npm run build` が通ること

追記)

もしこういう使い方便利だったよ〜みたいなのがあれば、
読者の方も共有してもらえると嬉しいっす

Dai KawaiDai Kawai

困ったこと:

  • NextJSとRails7のポート番号が理解できず、NextJSのデバッグをRailsのポートでやろうとする

原因:

  • ポート番号が暗黙的(NextJSに関しては、プロセスが一つ走っていると3001以降を開けてしまう)ため

解決策:

  • システムプロンプトにそれぞれのポート番号を記載しておく
Dai KawaiDai Kawai

困ったこと

  • API作ってフロント更新するタスクを任せた時、RailsとNextでエラー修正が循環してしまう

原因:

  • APIの仕様がどちらが正しいか判断できなくなってしまう

解決策:

  • イシューの粒度を下げる(RailsとNextのタスクを分離する)
Dai KawaiDai Kawai

仕様はかなり細かくまとめた方がいい。
Github Issueに仕様書書いて、それをそのまま渡すような運用にした。

実装ごとにテンプレート作っておいて、ストックしておくのがよいかも。
例えば

APIの実装の場合

  • 認証をモックしている場合のテストの処理

モデルの実装の場合、以下必須にする

  • i18nファイルの指定
  • FactoryBotの実装
  • Modelの単体テスト
Dai KawaiDai Kawai

上の学びの抽象化:

  • ソースコード見ても、どこかをよく注目しないとわからない暗黙的な情報は、直接的にカスタムインストラクションで明示した方がよい。
    • バックエンドサーバー、フロントエンドサーバーが起動しているポート番号
    • dockerの利用があるか。MakeFileなど。
Dai KawaiDai Kawai

例えば、model, controller, viewにまたがるイシューの場合、
イシューの粒度をmodelくらいのレイヤーに切り出した方がうまくいきやすい。
複数一気にやると、依存関係がめちゃくちゃになるので、
深い方から順番に実装していく方がよい。

なので、

  • modelの実装
  • controllerの実装
  • viewの実装

これらを別イシューでやったほうが指示は通りやすい。

Dai KawaiDai Kawai

ん〜、どうしてもmodelの実装とcontrollerの実装を並行して進めてしまってやりづらい。
プロンプトでどうにかならんのかこれ。

Dai KawaiDai Kawai

migrationファイルを作成させると、localのrails本体のmigrationファイルと番号ズレるので、
ここは手動で実行しないといけない。