TL;DR
- CodeRabbitAIというコードレビューしてくれるAIを導入した話
- 結構的確な指摘をしてくれるので、不慣れな言語での開発において便利
- 自分では辿りつけなかった機能や、考え方を教えてくれる
- 一人だけど、独りじゃなかった!(個人開発でこのConversationの数!!)
ことの始まり
普段、業務ではJavaかTypeScriptで開発を行なっており、個人開発では違う言語を使ってみたいと考えていました。
そこでイケてる(主観)言語であるGo言語を用いて個人開発をすることに…
作りたいもののイメージを固め、Issue管理も行い、実装を進めていき…
コードレビューどうしよう…となったわけです。
なぜコードレビューはありがたく、必要なのか
セルフレビュー含めコードレビューをする・してもらうことの目的は
品質とスキルの向上だと考えています。
具体的には下記三つの利点から上記目的を達成できる考えています。
- より良い実装を提案してもらえる
- しょうもないミスを防げる
- 上記を通して理解を深められる
一つ目については、「こんな書き方した方が綺麗じゃない?」という指摘はきっと誰しもが受けたことあるはず…品質もスキルも向上する幸せな提案…
二つ目については、人間誰しもミスをします。セルフレビューで全て気づければベストですが、人間です。見落とすものです。特に実装している先入観から、単純なミスほど見落としやすいものです。純粋な品質向上に繋がります。
三つ目は、上記二つのレビュー(コミュニケーション)を通して言語やフレームワークへの理解を深められる点です。
「なるほど、そんな機能もあるのか」「なぜその実装の方が良いのか」等々、レビューから得られる情報というのはとても多いと思います。
相手がいることで、自分では知り得なかった情報を獲得したり、議論を通して理解を深められることこそ、レビューの大きな利点だと思います。
一人一人のスキルが上がれば、プロジェクトや組織全体の品質が底上げされると筆者は考えています。
立ちはだかる個人開発の壁
当たり前ですが、個人(孤人)開発ではセルフレビューしかできません。
一日目はIssue #1
の実装とそのセルフレビュー(PR作成前の確認)を、
次の日はIssue #2
の実装とIssue #1
のセルフレビュー(本格レビュー)を…
と、実装する日とレビューする日を変える、かつ、別機能の実装をすることで、できるだけフレッシュな気持ちでレビューできるよう工夫して対応していました。
が!!!、いかんせん自分の知らない機能やより良い実装方法に関する指摘はなかなかできません。(指摘できるなら始めからそう書いているはず…)
調べたり、コードリーディングしたりで日々知識をアップデートしようと努めるものの、一日程度では的確な指摘ができるほどの知識は獲得できず、気づくのは細かいミスばかり…
救世主登場
ふと、最近流行りの生成AIを使っている時に「コードレビューしてくれたらなぁ…」と思いました。
調べるといくつかサービスはあるものの、GitHubとの連携を考えるとCodeRabbitが良さそうということで、導入することにしました。
Public Repositoryじゃないと導入できないという話も見かけますが、筆者はPrivateでも導入できました。(2024/02/17)
Private Repositoryへの導入はPro版のみのようです。
導入の際には下記記事を参考にしました。
よかった点
先述したコードレビューにおける三つの利点を享受できる
- 第三者的視点でレビューしてもらえるため、自身の知り得なかった・思い付かなかった実装内容について提案してもらえます
- それらを通し、スキルを伸ばすことにも繋がると感じます
- 下記が実際の指摘・会話例です
開発速度が上がる
- 先述した、個人開発におけるコードレビュー対応では、フレッシュな感覚でレビューするために、どうしても実装してからレビューするまでに間を空ける必要が出てきます
- AIがレビューしてくれるため、プッシュ後数分以内にレビュー指摘が返ってくる状況になり、開発速度が向上します
(主観ですが)開発が楽しくなる
- レビューというフィードバックがある作業は自然と開発全体のモチベーションが高まります
- 修正した際にも感謝の言葉を述べてもらえたり、褒めてもらえたりするので、修正することへのモチベーションも高まります
- 下記が実際の例です
「素晴らしい対応をありがとうございました」…こちらこそ、指摘いただきありがとうございます!
筆者も思わずハートを返してます
指摘内容を勝手にチューニングしてくれる
- CodeRabbitのページから、指摘内容をチューニングできるものの、実際にレビューを受けてるうちに追加でチューニングしたいものが出てきます
- その際、指摘しなくていいと伝えると勝手にチューニングしてくれます
New Learnings Added
に学習した内容を記載してくれています。
わるかった点
致命的な欠点は一つもありませんでした。
AIであることを考慮すると、仕方がない点もあるなぁといった感じの悪かった点になります
複数回同じ指摘をされる
Push単位を意識しないといけない
- CodeRabbitがレビューを開始するトリガーは、PRの作成か、PRへCommitした場合になります
- そのため、指摘内容を一つ対応して、すぐにPushしてしまうと、指摘対応が終わっていないにも関わらず、再度レビューされてしまいます
- 特に筆者は指摘一つに対して1Commitにしたい、かつ、こまめにPushしたい性格なので、意識する必要がありました
- 一応、
/コマンド
でレビューを一時的止めるコマンドもあるようですが、試していないので不明です。今度使ってみます
たまに差分をうまく見てくれない
まとめ
的確な指摘・提案をしてくれるので、大変よくできたサービスだと感じます。
特に、他の人に見せたくない個人開発のコードや、見てくれる人がいない孤人開発をしている人には強くおすすめします。
みなさんもAIと一緒に開発、進めてみませんか?🐰