gemini-reviewer-core

module
v1.2.10 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2026 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 の取得まで完結。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
    ├── domain        # ドメインモデルとポート(インターフェース)定義
    │   └── ports.go          # 各層を繋ぐ抽象インターフェースの集約定義
    │
    ├── adapters      # 外部システム接続の具体実装(アダプター層)
    │   ├── gemini_adapter.go     # Gemini API による推論ロジック
    │   ├── git_adapter.go        # go-git (In-memory/Disk) による操作
    │   ├── git_local_adapter.go  # ローカル git コマンドによる操作
    │   ├── git_auth.go           # SSH 認証およびホストキー検証
    │   └── git_option.go         # ジェネリクスを用いた Git オプションの共通化
    │
    ├── prompts       # AI プロンプトの管理と構築
    │   ├── templates.go          # go:embed による Markdown 管理
    │   ├── template_builder.go   # 動的データ注入とプロンプト生成
    │   ├── prompt_detail.md      # 詳細レビュー用テンプレート
    │   └── prompt_release.md     # リリースノート用テンプレート
    │
    └── publisher     # レビュー結果の変換と外部公開
        ├── publisher.go          # 公開パイプライン(変換〜アップロード)
        └── md_adapter.go         # Markdown から HTML への変換アダプター

パッケージの役割
  1. pkg/domain: 本プロジェクトにおける「システムの中心」です。レビューデータモデル(ReviewData)や、各パッケージが遵守すべきインターフェース(PromptBuilder, Publisher など)を定義し、循環依存を防ぎながら各層の整合性を保ちます。
  2. pkg/adapters: Git リポジトリからのソースコード取得や、Gemini API との通信といった、外部 I/O を伴う実装をカプセル化しています。domain で定義されたインターフェースを具象化する役割を担います。
    • Git 操作の柔軟性: go-git を使う GitAdapter と、OSの git コマンドを使う GitLocalAdapter を選択可能です。
  3. pkg/prompts: go:embed でバイナリに内包された Markdown テンプレートを使用し、PromptBuilder を通じてレビュー対象の差分データを安全かつ柔軟に注入する責務を持ちます。
  4. pkg/publisher: 生成された Markdown レビューを HTML へ変換し、go-remote-io を通じてオブジェクトストレージ(GCS/S3 等)へアップロードする責務を持ちます。

📜 ライセンス (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