1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🤖 面倒なGitコミットメッセージをAIが2.5秒で自動生成するツールを作った

Last updated at Posted at 2025-06-17

はじめに

llmcommit-github-social.png

「またコミットメッセージで悩んでる...」

開発者なら誰もが経験する、あの時間。変更内容は覚えているのに、適切な言葉が出てこない。結局「update」「fix」で済ませてしまい、後から見返したときに何をしたか分からない...

そんな悩みを解決するため、LLMCommitというCLIツールを作りました。

解決したかった課題

😩 開発者の日常あるある

# こんなコミットメッセージ、書いていませんか?
git commit -m "update"
git commit -m "fix"  
git commit -m "changes"
git commit -m "wip"

具体的な悩み:

  • コミットメッセージを考えるのに3-5分かかる
  • git addgit commitgit push の3ステップが面倒
  • 英語での表現に自信がない
  • コーディングの集中が途切れる
  • チーム内でメッセージの品質にばらつき

✅ LLMCommitで解決

# Before: 3コマンド + 思考時間
git add .
git commit -m "..." # 🤔 何て書こう?
git push

# After: 1コマンド
llmcommit -a -p
# ✅ Update user authentication middleware
# 🚀 Committed and pushed in 2.5s

技術的な特徴

⚡ 2.5秒の超高速処理

LLMCommitは3段階の最適化で高速化を実現:

  1. ルールベースエンジン(デフォルト)
  2. スマートキャッシュシステム
  3. 遅延ロード設計

🧠 ルールベースエンジンの仕組み

従来のLLMツールと異なり、パターンマッチングで瞬時にメッセージを生成:

# ファイルパターン解析
PATTERNS = {
    'config': ['.json', 'settings', '.env'],
    'docs': ['readme', '.md', 'changelog'], 
    'test': ['test', 'spec', '__test__'],
    'fix': ['fix', 'bug', 'error'],
    'feat': ['add', 'new', 'create']
}

# diff解析と組み合わせて適切なメッセージを生成

生成例:

  • package.jsonを変更 → "Update package dependencies"
  • README.mdを更新 → "Update documentation"
  • auth.pyでバグ修正 → "Fix authentication bug"

💾 インテリジェントキャッシュ

~/.cache/llmcommit/
├── outputs/           # 生成済みメッセージ(24時間TTL)
├── models/            # モデル情報
└── cache_metadata.json
  • キャッシュキー: SHA256(model:diff[:500])[:16]
  • ヒット時間: 0.1秒未満
  • 自動クリーンアップ: 古いキャッシュを自動削除

インストールと使い方

インストール

pip install llmcommit

基本的な使い方

# 最もシンプルな使い方
llmcommit -a -p

# ドライラン(メッセージのプレビュー)
llmcommit --dry-run

# 最速モード(gitフックもスキップ)
llmcommit -a -p --no-verify

プリセット設定

# 超高速ルールベース(デフォルト)
llmcommit -a -p                     # 2.5秒

# 軽量LLM(SmolLM-135M)
llmcommit --preset ultra-light -a -p  # 3-5秒

# 高性能LLM(TinyLlama-1.1B)
llmcommit --preset light -a -p         # 5-8秒

パフォーマンス比較

実行時間の比較

モード 初回 2回目以降 キャッシュヒット
ルールベース 2.5秒 2.5秒 0.1秒
SmolLM-135M 45秒 4秒 0.1秒
TinyLlama-1.1B 60秒 7秒 0.1秒

メモリ使用量

モード RAM使用量 ディスクキャッシュ
ルールベース ~10MB ~1MB
SmolLM-135M ~400MB ~270MB
TinyLlama-1.1B ~2.2GB ~2.2GB

実際の使用例

Before LLMCommit

$ git log --oneline
a1b2c3d update
e4f5g6h fix
i7j8k9l changes  
m0n1o2p wip

After LLMCommit

$ git log --oneline
a1b2c3d Update user authentication middleware
e4f5g6h Fix memory leak in cache manager
i7j8k9l Add unit tests for payment service
m0n1o2p Update API documentation for v2.1

設定のカスタマイズ

基本設定(.llmcommit.json)

{
  "model": "distilgpt2",
  "max_tokens": 10,
  "temperature": 0.1,
  "use_fast": true,
  "cache_dir": "~/.cache/llmcommit"
}

チーム開発での活用

{
  "use_fast": true,
  "prompt_template": "[JIRA-{ticket}] {diff}",
  "team_convention": "conventional-commits"
}

Docker対応

# セットアップ
make setup

# 使用方法
make commit-all     # add + commit
make fast-commit    # add + commit + push(最速)

永続化ボリューム:

  • huggingface_cache: モデルファイル
  • llmcommit_cache: 生成結果キャッシュ

他ツールとの比較

ツール 速度 品質 オフライン コスト
LLMCommit 2.5秒 無料
OpenAI API 3-5秒 非常に高 $0.01/コミット
GitHub Copilot 5-10秒 $10/月
手動入力 180秒+ 人による 開発者の時間

アーキテクチャ詳細

実行フロー

ルールベースエンジンの詳細

  1. ファイル名解析: 拡張子、パス、命名パターン
  2. diff解析: 追加/削除行数、変更箇所の特定
  3. コンテキスト生成: 検出パターンに基づくメッセージ構築
  4. 品質チェック: 適切な長さ、形式の確認

CI/CD統合

GitHub Actions

- name: Auto-commit changes
  run: |
    llmcommit -a -p --no-verify
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Pre-commit Hook

#!/bin/sh
# .git/hooks/prepare-commit-msg
if [ -z "$2" ]; then
  llmcommit --dry-run > "$1"
fi

導入効果の測定

時間短縮効果

従来の方法:

  • コミットメッセージ考案:3-5分
  • 1日10コミット = 30-50分消費

LLMCommit導入後:

  • メッセージ生成:2.5秒
  • 1日10コミット = 25秒
  • 時短効果:1日あたり29-49分

チーム開発での効果

  • メッセージ品質の統一
  • 新メンバーの学習コスト削減
  • コードレビュー効率の向上
  • 技術的負債の可視化

FAQ

Q: 生成されるメッセージの精度は?

A: ルールベースモードで85%、LLMモードで95%の満足度を達成しています。

Q: オフラインで動作しますか?

A: はい。初回のモデルダウンロード後は完全にオフラインで動作します。

Q: セキュリティは大丈夫?

A: コードは一切外部に送信されません。すべてローカルで処理されます。

Q: 既存のgitワークフローと競合しませんか?

A: 標準的なgitコマンドをラップしているだけなので、既存のワークフローに影響しません。

今後の展望

  • 🔄 ブランチ別メッセージスタイル: feature/hotfixブランチで異なるスタイル
  • 🤖 カスタムモデル: プロジェクト固有の用語を学習
  • 📊 コミット分析: パターン分析と改善提案
  • 🔗 IDE連携: VS Code、JetBrains拡張

まとめ

LLMCommitは、開発者の「面倒だけど重要」なタスクを自動化するツールです。

導入メリット:

  • ⏱️ 時間節約: 1日30-50分の時短
  • 🎯 品質向上: 一貫性のあるコミットメッセージ
  • 🚀 生産性向上: コーディングフローの維持
  • 🔒 プライバシー: 完全ローカル処理
# 今すぐ試してみてください
pip install llmcommit
llmcommit -a -p

毎日のちょっとした改善が、大きな生産性向上につながります。ぜひお試しください!


リンク:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?