1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事で目指したもの:CodeRabbitデータの可視化/分析

📝 この記事のサマリ

コンサルタント兼趣味プログラマーの視点からCodeRabbitのレビューデータをObsidianで可視化・分析する取り組みを実施したので、そこで得られた知見を紹介

  • 取組みの動機: CodeRabbitを使うことで非常に多くのレビューを受けることができるので、それを活用できるようにレビューデータを分析する仕組みを作りたい
  • 取組み内容: CodeRabbit + Obsidianでレビューデータをネットワークグラフとして可視化
  • 成果: coderabbit-in-obsidian-demo - GitHubデータをObsidian用マークダウンに変換するツールを作成
  • 学び: CodeRabbitはすごい! ただ、本当に多様なレビューを行ってくれるため、分析・可視化をうまく実現するためには個々のプロジェクト等の状況を踏まえた設定や条件の考慮が必要

はじめに 👋

こんにちは!業務コンサルタントとして働きながら、趣味でプログラミングを楽しんでいるdoromichi9と申します。

本業では大規模なシステム開発にPMとして関与することがあります。プログラミングやコードレビューの専門家ではありませんが、「誰がシステムに貢献しているのか」「どのような品質課題があるのか」といったプロジェクト管理の観点には強い関心を持っています💡

個人開発者として、また趣味のプログラマーとして、私が抱えていた課題は以下の2つでした:

  1. コードレビューを受ける機会がない😢

    • 個人開発では誰もコードをレビューしてくれない
    • 自分のコードの問題点に気づきにくい
  2. PMとしてレビューデータを活用したい📊

    • チームの貢献度や品質課題を可視化したい
    • しかし、すべてのレビューコメントを追うのは現実的ではない

そんな中、CodeRabbitアドベントカレンダー2025を知り、CodeRabbitを使い始めました!

CodeRabbitは、GitHubやGitLabと連携してPRを自動レビューするAIコードレビューサービスです🐰オープンソースプロジェクトでは無料で利用できます!

私がCodeRabbitに特に魅力を感じたのは、プルリクエストだけでなく、VS CodeやAntigravityの拡張機能としてリアルタイムでコードレビューを受けられるという点でした✨

実際にVS Code/Antigravity拡張機能を使ってみて感じたのは、コミットが汚くならないという大きなメリットです!

従来のプルリクエストベースのレビューでは、レビュー用にブランチを切って、PRを作成して、レビューを受けて修正...とコミット履歴が増えてしまいます😅

しかし、拡張機能を使えば:

  • コーディング中にリアルタイムでフィードバック⚡
  • コミット前に問題を修正できる🔧
  • クリーンなコミット履歴を保てる✨

個人開発では特に、この「気軽にレビューを受けられる」体験が非常に価値があると感じました!

この記事では、CodeRabbitとの出会いから、レビューデータをObsidianで可視化するツールを作るまでの経験を共有します✨

PMとしての課題意識 🤔

本業のPMとしての経験から、私はプロジェクトの健全性を把握するために以下のような情報を可視化したいと考えていました:

  • 誰がどのように貢献しているか👥

    • レビュアーごとの活動量
    • フィードバックの傾向
  • どのような品質課題があるか🔍

    • よく指摘される問題
    • Issue/PR間の関連性

CodeRabbitを使うことで、GitHubにレビューデータが蓄積されていきます。しかし、PMがすべてのレビューコメントを追うのは困難です😓

そこで、「簡易な可視化・分析ツールを使って、レビューデータを俯瞰できないか?」と考えました💡

なぜObsidianなのか? 🗒️

私は普段、ノート管理ツールとしてObsidianを愛用しています。Obsidianを選んだ理由は以下の3つです!

1. ネットワークグラフによる可視化 🕸️

Obsidianのグラフビュー機能は、マークダウンファイル間のリンク関係をネットワークグラフとして可視化できます!

  • ノード間の関連性が視覚的に理解できる👀
  • 中心的な役割を果たしているノード(レビュアーやPR)が一目でわかる⭐
  • プロジェクト全体の構造を俯瞰できる🗺️

この機能を使えば、「誰がどのPRに関与しているか」「どのIssueが多くのPRと関連しているか」といった情報を直感的に把握できます!

2. 豊富なプラグインエコシステム 🔌

Obsidianには、コミュニティが開発した豊富なプラグインがあります!

  • Juggl: より高度なネットワークグラフ可視化
  • Dataview: データクエリと集計(SQLライクな操作)
  • Templater: テンプレート管理と自動化
  • Excalidraw: 図表の作成と埋め込み

これらのプラグインを組み合わせることで、単なるノート管理ツールを超えた、強力なデータ分析・可視化プラットフォームとして活用できます🚀今回は、Jugglによる可視化を前提としてCodeRabbitのレビューの分析を目指しました。

3. マークダウンベースの拡張性

Obsidianはプレーンなマークダウンファイルをベースにしているため:

  • データがロックインされない(他のツールへの移行が容易)
  • Gitで管理できる
  • プログラムで生成・編集しやすい
  • 既存のマークダウンエコシステムと統合できる

この特性により、GitHubのデータをPythonスクリプトでマークダウンに変換し、Obsidianで可視化するという今回のアプローチが可能になりました。

プロジェクト: coderabbit-in-obsidian-demo 🚀

「Obsidianのグラフビューを使えば、CodeRabbitのレビューデータを可視化できるのでは?」

そう考えて、GitHubのIssue/PRとCodeRabbitのレビューをObsidian用のマークダウンに変換するツールを作成しました!

リポジトリ: naotoshisasada/coderabbit-in-obsidian-demo

プロジェクト概要 📝

このツールは、以下の機能を提供します!

📥 データ取得・分析

  • GitHubデータ取得: Issues、Pull Requests、コメント、レビューを一括取得
  • レビュアー分析: レビュアーごとのフィードバックを自動集計
  • アバター取得: レビュアーのGitHubアバター画像を自動ダウンロード

📝 マークダウン生成

  • Issue/PRファイル: 各Issue/PRを個別のマークダウンファイルとして生成
  • レビュアーサマリー: レビュアーごとの統計情報とフィードバック履歴
  • 双方向リンク: ファイル間の相互参照を自動生成
  • タグ非生成: 半角#を全角に置換してObsidianのタグ機能と干渉しない

🧹 クリーンアップ

  • Bot除外: GitHub Actions、Dependabot、CodeRabbitなどのBotを自動除外
  • 低リンクファイル削除: バックリンクが少ないファイルを自動削除
  • Orphanリンク削除: 存在しないファイルへのリンクを自動削除

🔗 Obsidian統合

  • Wikiリンク形式: [[filename]]形式でファイル間をリンク
  • フロントマター: タグ、メタデータをYAML形式で記述
  • 画像埋め込み: レビュアーアバターをフロントマターで指定
  • Juggl対応: ネットワークグラフ可視化に対応

実装のポイント

1. CodeRabbitのレビューデータ取得

GitHub APIを使って、以下のデータを取得します:

# Issues、Pull Requests、コメント、レビューを取得
issues = github_api.get_issues()
pull_requests = github_api.get_pull_requests()
reviews = github_api.get_reviews()

CodeRabbitのレビューは、GitHubのPRコメントとして保存されているため、通常のGitHub APIで取得できます。

2. Obsidian用マークダウン生成

各Issue/PRを個別のマークダウンファイルとして生成し、Obsidianのリンク機能を活用します:

---
tags:
  - issue
  - open
author: username
avatar: images/username.png
---

# Issue #123: タイトル

## 説明
Issue本文...

## 関連PR
- [[PR-456]]
- [[PR-789]]

## レビュアー
- [[reviewer-alice]]
- [[reviewer-bob]]

3. 双方向リンク生成

Obsidianの強力な機能の一つがバックリンクです。ツールは自動的に双方向リンクを生成します:

  • Issue → PR へのリンク
  • PR → Issue へのリンク
  • PR → レビュアー へのリンク
  • レビュアー → PR へのリンク

これにより、「このレビュアーはどのPRに関与したか?」「このIssueに関連するPRは?」といった情報を簡単に辿れます。

4. Bot除外とクリーンアップ

実際のプロジェクトでは、GitHub ActionsやDependabotなどのBotが大量のコメントを生成します。これらを除外しないと、グラフが見づらくなります:

# Bot除外リスト
EXCLUDED_BOTS = [
    "github-actions",
    "dependabot",
    "coderabbitai",
    # ...
]

また、バックリンクが少ないファイル(孤立したノード)を自動削除することで、グラフをクリーンに保ちます。

Obsidianでの可視化

生成されたマークダウンファイルをObsidianで開くと、以下のような可視化が可能になります:

ユーザーを中心としたプルリクエストの可視化

Obsidianのグラフビューでは、ユーザー(レビュアー)を中心として、どのPull Requestに関与しているかを可視化できます:

ユーザを中心としたプルリクエストの可視化イメージ

画像はマスキングしています。赤のノードがCodeRabbitのレビュアーや開発者、青のノードがPull Request、緑ノードがIssueを指しています。

この図から:

  • 各レビュアーがどのPRに関与しているかが一目でわかる
  • レビュアー間の協力関係(同じPRをレビューしている)が見える
  • 活発なレビュアーが視覚的に識別できる

CodeRabbitによるレビューを受けたPull Requestの可視化

CodeRabbitがレビューしたPull Requestを中心に、関連するIssueやレビュアーとの関係を可視化できます:

CodeRabbitによるレビューを受けたPull Requestの可視化イメージ

この画像もマスキングしています。画面左で具体的なPull Requestの内容を示しつつ、それに関連するレビュアーや関連するレビューの可視化に取り組んでいます。

この図から:

  • CodeRabbitがレビューしたPRが明確に識別できる
  • PR間の関連性(同じIssueに関連するPRなど)が見える

Jugglプラグインでさらに高度な可視化

Jugglプラグインを使うと、より高度なネットワークグラフ可視化が可能です:

# CodeRabbitネットワーク図
\`\`\`juggl
local: coderabbit
depth: 5
layout: cola
query: file:.md -tag:#*
height: 600px
\`\`\`

Jugglを使うことで:

  • インタラクティブなグラフ操作(ズーム、パン、ノードの移動)
  • レイアウトアルゴリズムの選択(force-directed, hierarchical, など)
  • フィルタリング機能(特定のタグやファイルタイプのみ表示)

といった、より柔軟な可視化が実現できます。

レビュアーサマリー

各レビュアーのサマリーファイルには、以下の情報が含まれます:

---
tags:
  - reviewer
avatar: images/alice.png
---

# Reviewer: alice

## 統計情報
- 総レビュー数: 42
- 総コメント数: 156
- 平均コメント数/PR: 3.7

## レビュー履歴
- [[PR-123]]: セキュリティ改善の提案
- [[PR-456]]: パフォーマンス最適化
- [[PR-789]]: コードスタイルの指摘

CodeRabbitのレビューデータの分析における課題と対応 🔍

このプロジェクトを通じて、CodeRabbitのレビューデータを分析する際の課題がいくつか見えてきました。

1. レビュー内容の分類の難しさ 🤔

CodeRabbitは非常に優秀なAIレビューツールですが、出力パターンが非常に多様です。

例えば、レビューのタイトルを見ただけでは:

  • 要対応事項(バグや重大な問題)
  • アドバイス(改善提案)
  • 参考情報(ベストプラクティスの紹介)

のどれに該当するのかが分かりにくいことがあります😓

対応の必要性

データ分析の観点からは、これらを適切に振り分けることで:

  • 重要度の高いレビューを優先的に確認できる
  • レビューの傾向(どのような問題が多いか)を分析できる
  • チームの品質課題を定量的に把握できる

といったメリットがあります!

レビュー内容の分析におけるジレンマ 😅

しかし、ここで非エンジニアの私がレビュー内容を振り分けてしまうというジレンマがあります...

  • 技術的な深い理解がないと、適切な分類ができない可能性がある
  • 「これは重要な指摘なのか、それとも参考程度なのか?」の判断が難しい
  • 誤った分類をしてしまうと、データ分析の精度が下がる

理想的には、CodeRabbitのレビューに重要度や分類のメタデータが付与されていると、非エンジニアでも適切な分析ができるのですが、現状ではそこまでの機能はありません。

今回のプロジェクトでは、この課題については今後の改善点として認識しています💡

2. グラフの煩雑化問題 📊

CodeRabbitは非常に多くのレビューを実施してくれるという大きなメリットがあります!これは個人開発者にとって非常にありがたいことです✨

しかし、データ可視化の観点からは、これが逆に課題になることがあります。

問題点

単純にレビューをしたPull RequestやIssueの関係を図示してしまうと:

  • グラフが煩雑になってしまう
  • 視差が得られないグラフになってしまう
  • どこに注目すべきか分からなくなる

例えば、CodeRabbitが100個のPRにレビューをしていた場合、それらすべてをネットワークグラフに表示すると、ノードと線が入り乱れて、何も見えなくなってしまいます😅

対応例

この課題に対して、今回のツールでは以下のような対応を実装しました:

Bot除外機能 🤖

# Bot除外リスト
EXCLUDED_BOTS = [
    "github-actions",
    "dependabot",
    "coderabbitai",  # CodeRabbit自身も除外可能
]

CodeRabbitを含むBotのレビューを除外することで、人間のレビュアーの活動に焦点を当てることができます。

低リンクファイル削除 🧹

バックリンクが少ないファイル(孤立したノード)を自動削除することで、重要な関係性のみを可視化できます。

フィルタリング機能 🔍

Jugglプラグインのクエリ機能を使って、特定の条件に合うノードのみを表示できます:

\`\`\`juggl
query: file:.md -tag:#bot
\`\`\`

これにより、見たい情報だけを抽出してグラフを見やすくできます!
他にも多くの対応を実施していますが、どのような対応を実施するべきかは、プロジェクトやチームの状況によって様々変わると考えられるので、本記事で作製したツールは、あくまで実勢の一例であると思います。

今後の改善案

さらなる改善として、以下のようなアプローチも考えています:

  • 重要度によるフィルタリング: 重要なレビューのみを可視化
  • 時系列フィルタリング: 特定期間のレビューのみを表示
  • レビュアー別ビュー: 特定のレビュアーを中心とした可視化

これらの機能を追加することで、より実用的なデータ分析が可能になると考えています💪

課題と今後の展望

今回の取り組みを通じて、いくつかの課題も見えてきました:

1. サンプルデータの制約

[!NOTE]
本記事で掲載している可視化イメージは、私自身のリポジトリではなく、とあるOSSリポジトリのデータを利用させていただいています

個人開発者として、まだCodeRabbitから多くのレビューを受けたリポジトリを持っていないため、実際のプロジェクトでの活用例として、OSSのデータを参考にさせていただきました。

今後、自分のプロジェクトでCodeRabbitを活用し、実際のデータで可視化を試していきたいと考えています。

2. 開発コストの課題

Obsidianは豊富な機能を持っていますが、GitHubデータの可視化のためにはかなりのプログラム開発が必要でした。

振り返ってみると:

  • マークダウン生成のロジック
  • 双方向リンクの自動生成
  • Bot除外などのクリーンアップ処理
  • Obsidian固有のフォーマット対応

など、想定以上に作り込みが必要でした😅

もしかすると、最初からPyVisのようなネットワーク可視化ライブラリを使っていたほうが楽だったかもしれません。

PyVisであれば:

  • Pythonで直接ネットワークグラフを生成
  • HTMLファイルとして出力
  • インタラクティブな操作が標準で可能

ただし、Obsidianを選んだことで得られたメリットもあります😊

  • マークダウンベースのデータ管理 - 他のツールとの統合が容易
  • プラグインエコシステム - Dataviewなどで追加分析が可能
  • 普段使いのツールとの統合 - ノート管理と一体化

3. 今後の展望 🔮

今後は以下のような改善を考えています!

  • PyVisとの併用: Obsidianでのデータ管理 + PyVisでの高度な可視化
  • 自動化の強化: GitHub Actionsでの定期的なデータ更新
  • 分析機能の追加: Dataviewプラグインを使った統計分析
  • 他のAIレビューツールとの比較: CodeRabbit以外のツールとの連携

まとめ 🎉

CodeRabbitは、個人開発者にとってプロのコードレビュー体験を提供してくれる素晴らしいツールです✨

特に、VS Code/Antigravity拡張機能は、プルリクエストを作成せずにリアルタイムでレビューを受けられるという点で、個人開発者にとって非常に便利です!

また、PM視点からは、レビューデータを可視化・分析することで、プロジェクトの健全性を把握できるという新しい可能性を感じました💡

今回作成したツールcoderabbit-in-obsidian-demoは、まだ実験的なものですが、Obsidianのグラフビューを活用することで、レビューデータを直感的に理解できるようになりました🚀

個人開発者こそ、AIコードレビューを活用すべきだと思います。CodeRabbitは、その第一歩として最適なツールです!

ぜひ、皆さんもCodeRabbitを試してみてください!🐰✨
この記事が皆さんの参考になれば幸いです。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?