🤖 Gemini Reviewer Core

🚀 概要 (About) - ビジネスロジックに集中させる、Git & Gemini 抽象化レイヤー
Gemini Reviewer Core は、Google Gemini API を活用し、Git リポジトリのブランチ間の差分を分析して AI コードレビューを自動生成するための コアライブラリ です。
本ライブラリは、CLI ツール や Web アプリケーション の共通基盤として設計されています。Git 操作、AI 通信、プロンプト生成といった「ビジネスロジック」に加え、HTML 変換や結果保存を行う公開層(Publisher)を提供します。これにより、利用側はインフラの実装詳細を意識することなく、レビュー結果の生成から公開までを一貫して行えます。
🎯 本ライブラリの価値 (Value Proposition)
本ライブラリは、AI レビュー機能を単なるスクリプトとしてではなく、大規模なアプリケーションにも組み込める持続可能な基盤 として提供します。
- ⚡ 開発効率の最大化: Git 操作、SSH 認証、AI との対話、結果の整形・公開といった複雑なプロセスをすべて抽象化し、利用者はコアなビジネスロジックの記述に集中できます。
- 📐 アーキテクチャの堅牢性: 厳格なクリーンアーキテクチャと 依存性逆転の原則 (DIP) に基づいて構築されているため、テストが容易で、クラウドストレージの変更や AI モデルの切り替えといった 拡張に対する耐性 を持っています。
- 🌐 マルチクラウド対応: GCS/S3 への公開を抽象化されたインターフェース (
Publisher) で一元管理できるため、利用環境を選びません。
✨ 技術スタック (Technology Stack)
| 要素 |
技術 / ライブラリ |
役割 |
| 言語 |
Go (Golang) |
ライブラリの開発言語。 |
| Git 操作 |
github.com/go-git/go-git/v5 |
クローン、フェッチ、3-dot diff の取得まで完結。SSH 認証とホストキー検証を統合。 |
| AI 推論 |
google.golang.org/genai |
Gemini API へのアクセス。堅牢な通信 SDK をラッピングして提供。 |
| プロンプト管理 |
text/template & go:embed |
プロンプトを Markdown ファイルで分離・内包し、動的にデータを注入。 |
| Markdown to HTML |
github.com/shouni/go-text-format |
レビュー結果を、スタイル付きの完全な HTML ドキュメントに変換。 |
| ストレージ操作 |
github.com/shouni/go-remote-io |
GCS/S3 等への書き込みを抽象化し、保存先を透過的に扱います。 |
📐 ライブラリ構成
このライブラリは、クリーンアーキテクチャに基づき、コアロジックを再利用可能なコンポーネントとして提供します。
gemini-reviewer-core
└── pkg
├── adapters # 外部システムとの接続を担うアダプター層
│ ├── gemini_adapter.go # Gemini API を使用した推論ロジックの実装
│ ├── git_service.go # go-git を使用したリポジトリ操作・差分取得
│ ├── git_auth.go # SSH 認証およびホストキー検証の管理
│ └── interfaces.go # 各アダプターの共通インターフェース定義
│
├── prompts # AI プロンプトの管理と構築
│ ├── templates.go # go:embed による Markdown テンプレートの管理
│ ├── template_builder.go # PromptBuilder インターフェースと生成ロジック
│ ├── prompt_detail.md # 詳細レビュー用のテンプレート
│ └── prompt_release.md # リリースノート生成用のテンプレート
│
└── publisher # レビュー結果の変換と外部への公開
├── publisher.go # Publisher 実装(変換〜アップロードのパイプライン)
└── md_adapter.go # Markdown から HTML への変換を担うアダプター
パッケージの役割
pkg/adapters: Git リポジトリからのソースコード取得や、Gemini API との通信といった、外部 I/O を伴う実装をカプセル化しています。
pkg/prompts: go:embed でバイナリに内包された Markdown テンプレートを使用し、PromptBuilder を通じてレビュー対象の差分データを安全かつ柔軟に注入する責務を持ちます。
pkg/publisher: 生成された Markdown レビューを HTML へ変換し、go-remote-io を通じてオブジェクトストレージ(GCS/S3 等)へアップロードする責務を持ちます。
📜 ライセンス (License)
このプロジェクトは MIT License の下で公開されています。