gemini-reviewer-core

module
v1.0.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2025 License: MIT

README

🤖 Gemini Reviewer Core

Language Go Version GitHub tag (latest by date)

🚀 概要 (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 (共通祖先からの差分) の取得まですべてを Go のコード内で完結させ、SSH認証とホストキー検証の設定を統合しました。
AI通信 google.golang.org/genai (Go SDK) Gemini APIへのアクセス。リトライ機構付きでSDKをラッピングし、堅牢な通信を実現します。
Markdown to HTML github.com/shouni/go-text-format AIが出力したMarkdown形式のレビュー結果を、スタイル付きの完全なHTMLドキュメントに変換するために使用します。
ストレージ操作 github.com/shouni/go-remote-io GCS/S3 等のクラウドストレージへのアップロード処理を抽象化し、CLIとWebアプリで接続処理(Factory)を共通化するために使用します。
プロンプト管理 text/template + embed レビューモード(Release/Detail)に応じたプロンプトテンプレートをバイナリに埋め込み、動的に生成します。
ロギング log/slog 構造化されたログ (key=value) に完全移行。詳細なデバッグ情報が必要な際に、ログレベルを上げて柔軟に対応できます。

✨ 主要な機能と特徴

1. 🔍 高度なGit差分分析
  • SSHネイティブ対応: go-git を使用し、外部のSSHコマンドに依存せず、認証情報を注入可能な設計になっています。
  • 正確な差分取得: ベースブランチとフィーチャーブランチ間のマージベース(共通祖先)を基準とした 3-dot diff (A...B) を取得し、正確でクリーンな差分のみをAIに提供します。
2. 🧱 責務の厳密な分離と抽象化
  • アダプターパターンの採用: Git操作とGemini APIへの通信は、それぞれ独立したアダプターpkg/adapters)として実装されており、外部システムへの依存をカプセル化しています。
  • 依存性逆転の原則 (DIP): すべての外部連携(Git, AI, Storage)はインターフェースに依存しており、ストラテジーパターンを利用することで高い拡張性とテスト容易性を実現しています。
  • プロンプト管理の集中: プロンプトテンプレート (prompt_release.md など) の埋め込みとデータ注入は pkg/prompts パッケージに集約され、AIとの対話戦略を一元管理します。
3. 🎨 HTML変換機能の提供
  • 高品質なHTMLレンダリング: AIが生成したMarkdownテキストを受け取り、組み込みテンプレートとCSSを使用して、即座にブラウザで閲覧可能なスタイリング済みの完全なHTMLドキュメント文字列を返却する機能を提供します。
4. 📤 結果の公開・保存 (Publisher)
  • クラウドベンダーの統合: GCSとAmazon S3への公開をサポート。抽象的な Publisher インターフェースにより、ロジックを共通化しています。
  • 変換と保存の統合: MarkdownからHTMLへの変換ロジックと、その結果をクラウドストレージへ保存する処理を 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操作の実装
│   │
│   ├── publisher # 結果の変換・出力・公開層
│   │   ├── publisher.go      # Publisherインターフェースとデータ構造 (コア抽象化)
│   │   ├── publisher_factory.go # URIスキームに基づくPublisherのファクトリ
│   │   ├── gcs_publisher.go  # GCSへの公開実装
│   │   ├── s3_publisher.go   # S3への公開実装
│   │   ├── html_converter.go # GCS/S3で共通利用するHTML変換ロジック
│   │   └── md_adapter.go     # 外部Markdownライブラリのアダプター
│   │
│   └── prompts   # AIプロンプトのデータとロジック管理
│       ├── template_builder.go # テンプレートの選択とデータ注入ロジック
│       ├── template_data.go    # プロンプトの入力データ構造
│       └── template_manager.go # go:embed される生プロンプトファイルの管理

📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL