Kiroを並列で動かして開発がしたい
Kiroのspec開発に感動してずっと触っていましたが、少し時間が経過しました。KiroはすばらしいIDEなのですが、だんだん、Kiroを並列で実行して開発が出来れば、もっと早く開発ができるだろうなと思うようになってきました。
kiro-cliも今後spec作成をcliで行う機能を予定しているようですが、現在はありません。また、Kiroのタスクの実行が一つのworkspace内で作業をするので、並列で開発してPRを出すということが出来ません。
いくつか考えたkiroを並列実行して開発する方法は以下でした。
- docker containerを立ち上げて、開発してPRまで行うところを1サイクルとして終わったらコンテナが終了する方法
- remoteのmicroVMにタスクを投げて開発からPRまでを行う方法
- git worktreeを作成して、その中でブランチを作成し、開発してPRまで行う方法
docker containerを立ち上げて、開発してPRまで行うところを1サイクルとして終わったらコンテナが終了する方法
docker containerは環境を分離しやすいという点では良いのですが、portなどを含めたコンテナの管理が複雑になりそうでした。
remoteのmicroVMにタスクを投げて開発からPRまでを行う方法
remoteのmicroVMにタスクを投げて開発からPRまでを行う方法は完全に環境が分離できますが、日頃の小さくインクリメントする開発にはオーバースペック感がありました。
フロントとapiを合わせて大規模なタスクを一気に開発するなどには向いていると思います。今回はコストもかかるので、やらないことにしました。
git worktreeを作成して、その中でブランチを作成し、開発してPRまで行う方法
git worktreeはかなりよく現在も使っている方法です。git worktree単体だと.envなどのコミットしていないファイルが引き継げないのですが、wtp を使えば可能になります。これでかなり使いやすくはなったのですが、やはりgit worktreeの作成しPRまでをシームレスに実行したくなったり、worktreeの管理も簡単にしたくなってきました。
結論:CLIツールを自作しています
現在はkiroでspecを作成した後はcliで完結できるようなツールを開発中です。
このツールの構想は以下の通りです:
- Specを書く: いつも通りKiroでSpecファイルを作成
- コマンド実行: ツールにSpecを渡す
- 自動オーケストレーション
- 裏でGit Worktreeを自動作成(
wtpの機構を活用して.envも同期) - 依存関係(node_modulesなど)のリンクまたは高速セットアップ
- Kiroを実行してコード生成
- テストが通れば
gh pr createでPRを作成 - 完了後、Worktreeをお掃除
おわりに
Kiroは今でも非常に完成度が高く、素晴らしいIDEだと感じています。
一方で、Specを書いたあとに発生する生成・テスト・PR作成といった工程では、どうしても手持ち無沙汰になる時間があり、もっと効率よく開発ができる余地があるのではないかと考えるようになりました。
まだ開発途中ですが、Spec駆動の開発をどうスケールさせるかを考える中で、ひとつの実践例として形にできたらと思っています。