module
Version:
v1.0.2
Opens a new window with list of versions in this module.
Published: Nov 20, 2025
License: MIT
Opens a new window with license information.
README
¶
🤖 Gemini Reviewer Core

Gemini Reviewer Core は、Google Gemini API を活用し、Gitリポジトリのブランチ間の差分を分析してAIコードレビューを自動生成するためのコアライブラリです。
本ライブラリは、CLIツールやWebアプリケーションの共通基盤として設計されています。Git操作、AI通信、プロンプト生成、HTML変換といった「ビジネスロジック」に加え、CLIやWebアプリで共通利用可能な結果保存のアダプター(Publisher)を提供します。これにより、利用側はインフラの実装詳細を意識することなく、レビュー結果の生成から公開までを一貫して行えます。
✨ 技術スタック (Technology Stack)
| 要素 |
技術 / ライブラリ |
役割 |
| 言語 |
Go (Golang) |
ライブラリの開発言語。 |
| Git 操作 |
go-git (adapters層) |
クローン、フェッチ、3-dot diff (共通祖先からの差分) の取得まですべてを Go のコード内で完結させ、SSH認証とホストキー検証の設定を統合しました。 |
| AI モデル |
Google Gemini API (adapters層) |
取得したコード差分を分析し、レビューコメントを生成するために使用します。 |
| Markdown to HTML |
go-text-format (adapters層) |
AIが出力したMarkdown形式のレビュー結果を、スタイル付きの完全なHTMLドキュメントに変換するために使用します。 |
| ストレージ操作 |
go-remote-io (publisher層) |
GCS等のクラウドストレージへのアップロード処理を抽象化し、CLIとWebアプリで接続処理(Factory)を共通化するために使用します。 |
| プロンプト管理 |
text/template + embed |
レビューモード(Release/Detail)に応じたプロンプトテンプレートをバイナリに埋め込み、動的に生成します。 |
✨ 主要な機能と特徴
1. 🔍 高度なGit差分分析
- SSHネイティブ対応:
go-git を使用し、外部のSSHコマンドに依存せず、認証情報を注入可能な設計になっています。
- 正確な差分取得: ベースブランチとフィーチャーブランチ間のマージベース(共通祖先)を基準とした 3-dot diff (
A...B) を取得し、正確でクリーンな差分のみをAIに提供します。
2. 🧱 責務の厳密な分離
- アダプターパターンの採用: Git操作、Gemini APIへの通信、HTML変換は、それぞれ独立したアダプター(
pkg/adapters)として実装されており、利用側はインターフェースを通じてこれらを操作します。
- プロンプト管理の集中: プロンプトテンプレート (
prompt_release.md など) の埋め込みとデータ注入は pkg/prompts パッケージに集約され、AIとの対話戦略を一元管理します。
3. 🎨 HTML変換機能の提供
- HTMLレンダリング: AIが生成したMarkdownテキストを受け取り、組み込みテンプレートとCSSを使用して、即座にブラウザで閲覧可能な完全なHTMLドキュメント文字列を返却する機能を提供します。
4. 📤 結果の公開・保存 (Publisher)
- 共通化された保存ロジック: レビュー結果(HTML)をクラウドストレージ(GCS等)へ保存する処理を Publisher パターンとして提供しています。
- 依存性の注入 (DI): ストレージ接続のファクトリー (
go-remote-io) を外部から注入できる設計により、CLI(都度接続)と Web Worker(コネクション再利用)の両方で効率的に動作します。
📐 ライブラリ構成
このライブラリは、クリーンアーキテクチャに基づき、コアロジックを再利用可能なコンポーネントとして提供します。
gemini-reviewer-core
├── pkg
│ ├── adapters \# 外部システムへの接続層 (Port and Adapter パターン)
│ │ ├── gemini\_adapter.go \# Gemini API通信の実装
│ │ ├── git\_service.go \# go-gitを使用したGit操作の実装
│ │ └── html\_runner.go \# go-text-formatを使用したHTML変換の実装
│ │
│ ├── publisher \# 結果の出力・公開層 (Storage Adapter)
│ │ └── gcs.go \# GCSへのHTML保存とヘッダー生成の実装
│ │
│ └── prompts \# AIプロンプトのデータとロジック管理
│ ├── template\_builder.go \# テンプレートの選択とデータ注入ロジック
│ ├── template\_data.go \# プロンプトの入力データ構造
│ └── template\_manager.go \# go:embed される生プロンプトファイルの管理
📜 ライセンス (License)
このプロジェクトは MIT License の下で公開されています。
Directories
¶
pkg
|
|
|
|
|
|
|
|
|
|
|
Click to show internal directories.
Click to hide internal directories.