本記事はAIが作成しました。

はじめに

GitHubリポジトリで管理されているファイルの編集履歴を分析したいと思ったことはありませんか?特に長期間にわたって更新されているファイルの変更パターンや、プロジェクトの進化の過程を理解したい場合があります。

GitHub File History Analyzerは、このようなニーズに応えるために開発したコマンドラインツールです。

ツールの概要

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

  • GitHubのAPIを使用して特定ファイルのコミット履歴を取得
  • 変更内容の統計的な分析(追加・削除行数、変更タイプの分類など)
  • OpenRouter経由でAI(Gemini 2.5 Proなど)による編集パターンの分析
  • 分析結果のMarkdown/JSON形式での出力

開発の背景

デジタルアーカイブプロジェクトで、XMLファイルの長期的な編集作業を追跡する必要がありました。単純なgit logでは得られない、より深い洞察(編集の傾向、作業の質、進捗状況など)を得たいという要求から、このツールの開発に至りました。

技術的な実装

使用技術

  • 言語 : Python 3.8+
  • 主要ライブラリ :
    • PyGithub(GitHub API wrapper)
    • requests(HTTP通信)
    • python-dotenv(環境変数管理)

アーキテクチャ

ツールは主に2つのコンポーネントで構成されています:

  1. GitHubFileHistoryAnalyzer : GitHub APIを使用してファイル履歴を取得・分析
  2. OpenRouterClient : AI分析のためのクライアント
# 基本的な使用例
analyzer = GitHubFileHistoryAnalyzer(github_token)
commits = analyzer.get_file_history("owner/repo", "path/to/file.xml")
analysis = analyzer.analyze_patches(commits)
prompt = analyzer.generate_ai_prompt(commits, analysis)

実際の使用例

基本的なコマンド

# ファイル履歴の取得と表示
python main.py --repo owner/repo --file path/to/file.py

# AI分析の実行
python main.py --repo owner/repo --file path/to/file.py --analyze

# 結果をMarkdown形式で保存
python main.py --analyze --ai-output analysis.md

分析結果の例

ツールは以下のような情報を提供します:

  • 統計情報 : 総コミット数、追加・削除行数、月別アクティビティ
  • 変更タイプの分類 : 構造的変更、内容変更、属性変更など
  • AI分析 : 編集の傾向、目的の推測、改善提案

想定される用途

  1. コードレビューの補助 : ファイルの変更履歴から開発パターンを理解
  2. ドキュメント管理 : 長期的な文書編集プロジェクトの進捗追跡
  3. プロジェクト分析 : オープンソースプロジェクトの発展過程の研究
  4. 品質管理 : 編集作業の一貫性や品質の評価

制限事項と今後の展望

現在の制限

  • GitHub APIのレート制限(認証済みで5,000リクエスト/時)
  • 大規模なファイル履歴の処理には時間がかかる
  • AI分析にはOpenRouterのAPIキーが必要

今後の改善予定

  • 複数ファイルの一括分析機能
  • カスタム分析プロンプトのサポート
  • 視覚的なレポート生成(グラフ、チャート)
  • CI/CDパイプラインへの統合サポート

インストールと設定

# リポジトリのクローン
git clone https://github.com/nakamura196/github-history-ai-analyzer
cd github-history-ai-analyzer

# 依存関係のインストール
pip install -r requirements.txt

# 環境変数の設定
cp .env.example .env
# .envファイルでGITHUB_TOKENとOPENROUTER_API_KEYを設定

まとめ

GitHub File History Analyzerは、ファイルの編集履歴を分析し、プロジェクトの進化を理解するためのツールです。特に長期的なプロジェクトや、多数の貢献者が関わるオープンソースプロジェクトでの使用を想定しています。

ツールはMITライセンスで公開されており、どなたでも自由に使用・改良できます。フィードバックや貢献はGitHubリポジトリでお待ちしています。


リポジトリ : https://github.com/nakamura196/github-history-ai-analyzer
ライセンス : MIT License