はじめに
「またコミットメッセージで悩んでる...」
開発者なら誰もが経験する、あの時間。変更内容は覚えているのに、適切な言葉が出てこない。結局「update」「fix」で済ませてしまい、後から見返したときに何をしたか分からない...
そんな悩みを解決するため、LLMCommitというCLIツールを作りました。
解決したかった課題
😩 開発者の日常あるある
# こんなコミットメッセージ、書いていませんか?
git commit -m "update"
git commit -m "fix"
git commit -m "changes"
git commit -m "wip"
具体的な悩み:
- コミットメッセージを考えるのに3-5分かかる
-
git add
→git commit
→git 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段階の最適化で高速化を実現:
- ルールベースエンジン(デフォルト)
- スマートキャッシュシステム
- 遅延ロード設計
🧠 ルールベースエンジンの仕組み
従来の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秒+ | 人による | ✅ | 開発者の時間 |
アーキテクチャ詳細
実行フロー
ルールベースエンジンの詳細
- ファイル名解析: 拡張子、パス、命名パターン
- diff解析: 追加/削除行数、変更箇所の特定
- コンテキスト生成: 検出パターンに基づくメッセージ構築
- 品質チェック: 適切な長さ、形式の確認
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
毎日のちょっとした改善が、大きな生産性向上につながります。ぜひお試しください!
リンク:
- 🐙 GitHubリポジトリ
- 📚 詳細ドキュメント
- 🐛 Issues・機能要望