🦾

AIエージェントを使ったら2時間でPRを作れた ~vibe contributingやろう~

に公開

「vibe codingをしたらOSSに簡単に貢献できるんじゃないか?」と思いついて実際にVS CodeのCopilot Chatを使ったら、git cloneから2時間でPR立てられたという記事です(完)。

実際に出したPR: feat: support copying from local file protocol #228

(このPRは、gigetというscaffoldingツール[1]にローカルファイルをテンプレートとして扱う機能を追加したもの)

Copilot Chatを使ってPRを出すまでの流れ

今回やった作業の概略はこんな感じです↓

  1. git cloneしてくる
  2. 動作確認する方法をVS CodeのCopilot Chatで聞いて動かしてみる
  3. 実際の動作とそれがどこに書かれているのか教えてもらう
  4. メインの処理をしている関数の大まかな処理方針について解説してもらう
  5. 解説された処理内容について、Copilotに当該箇所へコメントを入れてもらう
  6. 自力でコードを修正する
  7. テストをCopilotに書いてもらう
  8. リポジトリをforkしてきてpushする
  9. PRを立てる

cloneからPRを立てるまでだいたい 2時間くらい でした。知識ゼロのリポジトリの修正を行ったと考えると、驚異的な速さだと思います。

感想: コードの把握がすごく簡単だが、コーディングはそこまで簡単ではない

今回AIエージェントには主に コードリーディングの補助 をしてもらい、コードは自力で書いて修正しました。

コードリーディングにおいてはAIエージェントはとにかく役立ちました。 大まかな全体感、実装箇所がものの5分くらいで把握できました。 「実際にローカルで動かすにはどうしたらいい?」「registryって何?」「このオプションを渡すとどう動作が変化する?」みたいな質問が一瞬で解決していくのが最高でした。

ただ、コーディングに関しては そこまで簡単にいきませんでした。 というのも、今回の実装が実質的に新機能の追加のようなもので、どう修正したら作者の意図に沿うのかを自力で考える必要があったから です。既存実装では「オンラインにあるtarファイルをダウンロードしてきて展開する」を前提に書かれていましたが、今回の修正ではtarファイルのダウンロードも展開もしません。なので、既存の実装の延長線上では実装できませんでした。そうなると作者のコーディングスタイル、設計思想を考えながらコーディングしなきゃいけなくなり、これが一筋縄ではいきませんでした…

もちろん、今回の修正がたまたま自力で方針を考えなくちゃいけなくなっただけで、修正の種類によってはAIエージェントに投げるだけで終わるパターンもあると思います。そうなったら30分くらいでPR出せるんじゃないかな…?

まとめ: vibe contributing で君もコントリビュートしよう

リポジトリのクローンから始めて2時間でPRというのはやはり 驚異的スピード だったと思います。これを読んでる方も是非vibe contributingでOSS貢献してみましょう。

脚注
  1. オンライン上にあるテンプレートをダウンロードして、それをもとにディレクトリを構築するツール ↩︎

Discussion