【ITニュース解説】SlothCommit: a 1B Gemma on a plain CPU now writes my commit messages (after I caught it copying its homework)
2026年10月20日に「Dev.to」が公開したITニュース「SlothCommit: a 1B Gemma on a plain CPU now writes my commit messages (after I caught it copying its homework)」について初心者にもわかりやすく解説しています。
ITニュース概要
SlothCommitは、Gitのコミットメッセージや週次レポート作成をAIが自動化するツールだ。軽量AIモデルGemma 3 1BをPC上で動かすため、コードが外部に漏れる心配がなく、無料で利用できる。開発者の面倒な記録作業を減らし、効率アップに貢献する。
ITニュース解説
システムエンジニアを目指す皆さんにとって、日々の開発作業で避けて通れないのが「コミットメッセージの作成」や「週次報告」だ。コードを書くこと自体は好きでも、そのコードの内容を文章にする作業は、多くの開発者にとって面倒で後回しにしがちなものだろう。特に、深夜までバグと格闘して疲れ果てた後では、「fix」「修正」「動いた」といった味気ないメッセージになりがちである。しかし、このようなメッセージでは後から自分の作業を振り返るのも、チームメンバーが履歴を追うのも難しい。
そんな開発者の悩みを解決するために、「SlothCommit(スロースコミット)」というツールが開発された。これは、最新の人工知能(AI)技術を使い、面倒なコミットメッセージの生成や週次報告書の作成を自動化してくれる画期的なツールである。
SlothCommitの主な機能は三つある。一つ目は「sloth commit」だ。これは、皆さんがgit addコマンドでステージングした変更内容(いわゆる「差分」や「diff」)をAIが分析し、規約に沿った(Conventional Commitという形式の)コミットメッセージを提案してくれる。例えば、「feat(cli): add new command」のような、変更のタイプや対象、概要が明確なメッセージを自動で生成してくれるのだ。AIが提案したメッセージは、皆さんが「Yes(承認)」「Edit(編集)」「No(拒否)」のいずれかで簡単に選べるため、常に完璧なメッセージでなくても安心して使える。
二つ目は「sloth week」という機能だ。これは、過去7日間のコミット履歴を読み取り、行われた変更のタイプ(新機能、バグ修正、ドキュメント更新など)ごとにグループ分けし、その週の作業内容を2〜4文の短い要約としてまとめてくれる。毎週のスタンドアップミーティングやチームへの報告で、「今週何をしたか」を説明するために、自分のコミット履歴をいちいちスクロールして確認する手間がなくなるわけだ。さらに、--lang zhのようにオプションをつければ、中国語で要約を生成するといった多言語対応もしている。
そして三つ目の「sloth hook install」は、さらに怠惰を追求する開発者向けである。このコマンドを実行すると、Gitの機能である「prepare-commit-msgフック」が設定される。これにより、皆さんがgit commitとタイプするだけで、コミットメッセージがすでにAIによって埋められた状態でエディタが開くようになる。もし何らかの理由でAIモデルが利用できない場合でも、このフックは賢く動作し、コミット作業を妨げることはない。
このSlothCommitの最も重要な特徴は、その裏側で動作するAIモデルにある。このツールは、Googleが開発した比較的小規模なオープンソースのAIモデル「Gemma 3 1B」を使用しており、それを皆さんのPCのCPUだけで動作させることに成功している。つまり、高価なGPU(グラフィックボード)を搭載したマシンは不要で、一般的なPCでも利用できる。さらに、外部のAIサービスにAPIキーを設定したり、アカウントを作成したりする必要がなく、トークンごとの利用料金もかからない。そして最も重要なのは、皆さんの書いたコードの「差分」が、決して皆さんのローカルマシンから外に送信されることがない、という点だ。企業の機密情報や個人情報を含むプロジェクトでも、プライバシーやセキュリティを心配することなく安心して利用できるのは、大きなメリットである。
このツールがどのようにして実現されたか、その技術的な工夫についても触れておこう。AIモデル「Gemma 3 1B」は、llama.cppというフレームワークを通じて実行されている。開発者は、AIがただ単に文章を生成するだけでなく、正確で役に立つコミットメッセージを生成できるように、いくつかの工夫を凝らしている。
例えば、AIの出力を特定の形式に制限する「スキーマ制約出力」という方法が使われている。コミットメッセージは{type, scope, subject, body}という決まった構造を持つJSON形式で出力されるようにAIに指示しており、llama.cppの機能を使って、AIが必ずこの形式に沿った回答を生成するように制御している。これにより、AIが予期しない形式で出力することを防いでいる。
また、「事実はコードに、プロンプトには含めない」という原則も重要だ。例えば、Markdownファイルだけが変更された場合、AIが「ドキュメント更新(docs)」タイプのメッセージを生成するように、Pythonコード側でAIに与える選択肢を絞り込んでいる。72文字というコミットヘッダーの文字数制限や、本文の行折り返し、重複する内容の削除なども、AIに任せるのではなくPythonコードで処理することで、信頼性と正確性を高めている。
AIに指示を与える方法も工夫されている。長い説明文をプロンプトとして与える代わりに、「Few-shot(フューショット)学習」という手法が用いられている。これは、数個の具体的な例(例えば、READMEファイルの編集例、HTTPタイムアウトの修正例など)をAIに示して学習させる方法だ。これにより、AIは形式をより効率的に学習し、提案されるメッセージの質が向上した。これらの例は一度読み込まれるとキャッシュされるため、二回目以降のリクエストでは高速に処理できる。
大規模な変更(新しいモジュールを追加するなど)に対する対応も賢い。AIにすべての差分をそのまま与えるのではなく、各ファイルの「定義」「コメント」「ドキュメント文字列」など、要点となる部分だけを抽出してAIに渡すことで、効率的に要約を生成させている。この場合、AIが詳細をでっち上げないように、箇条書きの生成は禁止されている。
さらに興味深いのは、「宿題コピー検出器」と名付けられた機能だ。開発初期、AIが学習用の例(Few-shotの例)とまったく同じメッセージを生成してしまうという問題が発生した。まるでAIが「宿題をカンニングしている」かのようだったのだ。これを防ぐため、AIが生成したメッセージが学習例と酷似している場合、SlothCommitはそれを検知し、ファイルリストから作成した安全で正確なメッセージに切り替える。これにより、AIの信頼性が保たれている。
これらの技術的な工夫は、「オープンイノベーション」の重要性を示している。Gemma 3 1Bのようなオープンウェイトモデルを使うことで、開発者はモデルの内部動作を理解し、必要に応じてカスタマイズしたりデバッグしたりできる。クローズドなAPIサービスでは、プロンプトの調整しかできないが、オープンなモデルでは「なぜAIがそのような出力になったのか」を深く掘り下げ、根本的な解決策を講じることが可能となる。また、皆さんのコードがローカル環境から一切外に出ないため、プライバシー保護の観点からも非常に安全だ。
実際にSlothCommitを使ってみると、その性能は実用レベルに達している。例えば、デモ用のリポジトリでのコミットメッセージ生成は、平均3.4秒で完了し、週次レポートの生成も3.0〜4.7秒程度だ。AIモデル自体のメモリ消費も約1.6GBと、現代のPCであれば十分に扱える範囲である。
ただし、1Bという比較的小規模なAIモデルであるため、その生成物の品質は「最初のドラフト」レベルであり、決して完璧な「神託」ではない。例えば、.gitignoreのコミットを新機能(feat)と誤って分類したり、根拠のない「パフォーマンス改善」を主張したりすることもある。週次レポートの中国語要約では、実際には行われていない「成果」を記述してしまうケースも見られたという。そのため、SlothCommitが生成したメッセージは、必ず皆さんが最終確認し、必要に応じて編集することが推奨されている。この確認ステップこそが、AIによる自動化と人間の判断力を組み合わせる上で非常に重要である。
SlothCommitは、開発者が日々のルーティン作業から解放され、より創造的なコーディングに集中できるよう支援するツールである。無料でローカル環境で動作し、プライバシーとセキュリティを最大限に保護しながら、AIの力を活用するこのアプローチは、今後のシステム開発のあり方にも大きな示唆を与えている。より高性能なAIモデルへの切り替えも容易なため、将来的な改善の余地も大きい。システムエンジニアを目指す皆さんにとって、このようなツールは日々の作業効率を大きく改善し、より快適な開発体験をもたらす可能性を秘めている。