Roo ClineのBest Practiceを見つける
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` が通ること
追記)
もしこういう使い方便利だったよ〜みたいなのがあれば、
読者の方も共有してもらえると嬉しいっす
困ったこと:
- NextJSとRails7のポート番号が理解できず、NextJSのデバッグをRailsのポートでやろうとする
原因:
- ポート番号が暗黙的(NextJSに関しては、プロセスが一つ走っていると3001以降を開けてしまう)ため
解決策:
- システムプロンプトにそれぞれのポート番号を記載しておく
困ったこと
- API作ってフロント更新するタスクを任せた時、RailsとNextでエラー修正が循環してしまう
原因:
- APIの仕様がどちらが正しいか判断できなくなってしまう
解決策:
- イシューの粒度を下げる(RailsとNextのタスクを分離する)
仕様はかなり細かくまとめた方がいい。
Github Issueに仕様書書いて、それをそのまま渡すような運用にした。
実装ごとにテンプレート作っておいて、ストックしておくのがよいかも。
例えば
APIの実装の場合
- 認証をモックしている場合のテストの処理
モデルの実装の場合、以下必須にする
- i18nファイルの指定
- FactoryBotの実装
- Modelの単体テスト
上の学びの抽象化:
- ソースコード見ても、どこかをよく注目しないとわからない暗黙的な情報は、直接的にカスタムインストラクションで明示した方がよい。
- バックエンドサーバー、フロントエンドサーバーが起動しているポート番号
- dockerの利用があるか。MakeFileなど。
例えば、model, controller, viewにまたがるイシューの場合、
イシューの粒度をmodelくらいのレイヤーに切り出した方がうまくいきやすい。
複数一気にやると、依存関係がめちゃくちゃになるので、
深い方から順番に実装していく方がよい。
なので、
- modelの実装
- controllerの実装
- viewの実装
これらを別イシューでやったほうが指示は通りやすい。
ん〜、どうしてもmodelの実装とcontrollerの実装を並行して進めてしまってやりづらい。
プロンプトでどうにかならんのかこれ。
ユースケースごとに、プロンプトをディレクトリ構成に入れるという素晴らしい方法参考になる
PRまで入れる指示。これも参考になる。
migrationファイルを作成させると、localのrails本体のmigrationファイルと番号ズレるので、
ここは手動で実行しないといけない。
自然言語だけでプログラミングできるなら、スマホでも完結するかもしれない。
codespaces入れておいて、外出時に指示出しながらコーディングでもいけるかも。
少なくとも仮のPR出すくらいまではいけそう。
この辺も非常に参考になった
ブルジョワなので、Devinも契約した。
比較しつつ、ユースケースもろもろ考えたい。
参考になる。