🐇

CodeRabbit(AIコードレビュー)を導入した話

2024/05/10に公開

はじめに

こんにちは!dotDのMobile App Engineer、巽です。

今回は、自社サービスであるdotHatchの開発にCodeRabbit(AIコードレビューツール)を導入した経験について共有したいと思います。CodeRabbitの導入により、コードの品質向上や開発効率の改善など、様々なメリットを実感することができました。

導入の背景

dotHatchの開発チームでCodeRabbitを導入する以前に、他のプロジェクトチームで既に導入されており、好評を博していました。実際に他のプロジェクトでCodeRabbitを使用したところ、以下のような特徴から高く評価されていました。

  • GitHubとの連携が容易で、導入のハードルが低い
  • レビュー結果が分かりやすく、開発者にとって実践的である
  • 人の目では見落としがちな箇所にも指摘が入るため、品質向上と開発効率の改善が期待できる

他プロジェクトでの成功事例を参考に、dotHatchの開発チームでもCodeRabbitを導入し、コードの品質向上と開発効率の改善を目指すことにしました。

導入効果

CodeRabbitの導入により、以下のような効果を得ることができました。

  1. コードの品質向上

    • AIによる自動レビューにより、コーディング規約の遵守や潜在的なバグの早期発見が可能になりました。
    • 開発者は、AIからのフィードバックを参考にしてコードを改善することで、より高品質なコードを書けるようになりました。
  2. レビュー工数の削減

    • AIによる自動レビューにより、人的レビューの工数を大幅に削減できました。
    • レビュアーは、AIが指摘した重要な問題に注力することで、効率的にレビューを行えるようになりました。
  3. Pull Requestの簡易化

    • CodeRabbitではPull Requestのサマリー作成も自動化できます。従来はテンプレートに従って変更点を記載していましたが、CodeRabbit導入後はテンプレートを修正し、変更点の記載をCodeRabbitに任せる試みも行っています。

ワークフロー

以下は、dotHatch開発チームで採用しているCodeRabbitの設定ファイル(yaml)の一部です。

name: ai-pr-reviewer

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [labeled]

# ... 中略 ...

          system_message: |
            Your objective is to function as a very experienced software engineer and thoroughly review a piece of code,
            suggest code snippets to improve key areas such as
              - Logic
              - Security
              - Performance
              - Data conflicts
              - Consistency
              - Error Handling
              - Maintainability
              - Modularity
              - Complexity
              - Optimization
              - Best Practice: DRY, SOLID, KISS
            Do not comment on minor code style issues or missing comments/documentation.
            Identify and resolve significant issues to improve overall code quality, but intentionally ignore minor issues.
            Do not comment on minor code style issues, missing comments/documentation and auto-generated code (e.g. l10n, freezed...) .
          summarize: |
            Provide a final response using markdown format with the following content

              - *Walkthrough*: A high-level summary of the overall change, not a specific file, in 80 words or less.
              - *Changes*: A table of files and their summaries. To save space, files with similar changes can be combined on a single line.

            Avoid additional comments in this summary that will be added as comments to the GitHub pull request.
          summarize_release_notes: |
            Please create detailed and polished release notes for this pull request.
            * You may not say anything other than what is in accordance with the template.
            * Please separate the header and contents for each changes.
            ■template
            # [タイトル]
            ##概要
            [概要]
            ## 変更点
            ### [変更点1のタイトル]
            [変更点1の内容]
            ...
            ### [変更点XXのタイトル]
            [変更点XXの内容]

主なカスタマイズポイントは以下の通りです。

  • レビューのトリガーを"AI-review"ラベルが付与された時点にしている
    • レビュー不要なケースもあるため、明示的にトリガーできるようにした
  • openai_heavy_model、openai_light_modelを"gpt-4-turbo"に指定している
    • 2024年4月時点で最新かつコスト効率の良いモデルであるため
  • "summarize_release_notes"にPull Requestの変更点記載用の指示を追加している
    • 変更点を所定のテンプレートに沿って記載してもらうため
    • この指定により、以下の画像のように変更点をセクションに分けてPull Requestに追加してくれる
CodeRabbitによる変更点の記載

まとめ

CodeRabbitを活用することで、コードの品質向上と開発効率の改善を実現することができました。AIによるコードレビューは、開発チームにとって非常に有益なツールであると感じています。
今後は、CodeRabbitをより広範囲のプロジェクトに適用し、AIによるコードレビューを活用しながら、さらなる効果を得ていきたいと考えています。

以上、CodeRabbitを自社サービスで導入した経験の共有でした!
CodeRabbitをはじめとするAIを活用することで、生産性向上の取り組みを積極的に行っています。


弊社では、フルリモートでの働き方、多様な案件、成長を促す環境、独自のイベントなど、エンジニアにとって魅力的な働き方ができます。

働き方や会社の雰囲気などもっと知りたいという方は、気軽にカジュアル面談を通して会社のことをお伝えできればと思います!

https://www.wantedly.com/projects/1040838

https://www.wantedly.com/projects/384734

https://speakerdeck.com/dotd/zhu-shi-hui-she-dotd-cai-yong-pitutizi-liao-2022zui-xin

dotDTechBlog

Discussion