タダでLLMにコミットメッセージを考えてもらおう(Ollama + OpenCommit)
こんにちは。t-kurimuraです。
先日LuupのSoftwareDevelopment部では、LLMをテーマに社内勉強会が開催されました!
私自身もコーディング時のGitHub Copilotの補完だったり、手持ちのスマホのAndroid端末ではPerplexityをデフォルトのアシスタントに設定できたりするので趣味やニュースのことをPerplexityに聞いてみたり、生活のなかでもLLMツール漬けの毎日です。
いくつかのLLMツールに課金をしていますが、ワーク&ライフ両方に相応かそれ以上の価値があるように感じています。
「コミットメッセージ」
さて、ソフトウェア開発においてコミットメッセージは、コードの変更の意図や背景をチームメンバーへ伝えるために重要な役割を持ちます。
”いまの” チームメンバーと ”後世の” チームメンバー両方のために、コードで表現が不十分なことは自然言語で丁寧に文章化して伝達していく必要があります。
また、個人でもローカルで細かく作業用に残した場合、「Wip、Wip、Wip2、間違い、Wip最後、Wip最後2・・・」みたいになると後世の自分が困ったりします。
だた、大切なこととはわかりつつも、実際のところ適当なコミットメッセージ考えるのは真剣になるほど面倒だと思います。
なので、ここをLLMに頼るべく、OpenCommitというLLM用コミットツールとOllamaというローカルLLM実行環境を導入してみたのでご紹介します!
OpenCommit
OpenCommitとは
OpenCommitは、LLMを利用してGitのコミットメッセージを自動生成するJavaScript製のCLIツールです。
現時点で6.5kのスターがあり類似のツールのなかでも人気が高いようです。
OpenCommitのインストール
npmで公開管理されているので、グローバルインストールするだけです。
npm install -g opencommit
OpenAIを利用する手順
OpenCommitは、過去バージョンやその名前の由来を想像するにOpenAI用のツールとして作られたと推測できます。
現時点でもデフォルトはOpenAIとなっているので、素直に設定するのであればOpenAIのAPIキーをWebUIから取得しOpenCommitに設定します。
OpenAIモデルの利用には課金が必要
ただし、OpenAIのAPIの利用には、ChatGPTのサブスクリプションなどとは関係なく、デポジットする必要があります。
非常に優秀なモデルなので課金するのも多いにありです。ただ、課金した場合は、デポジット型だとコミットする(メッセージを考えてもらう)たびにお金が減ることになり、コミットを小さく分けることへの逆のインセンティブになりかねません。
そこで、有償のLLMモデルの利用を避け、すでにある既存リソースを利用するためにOllamaを導入してみます。
Ollamaの紹介
Ollamaとは
Ollamaは、ローカル環境でLLMを実行するためのツールです。
有名なChatGPTのようにチャットUIを通しローカルのモデルを実行できます。LLaVAなどの画像も扱えるモデルを利用できたり、REST APIで呼び出せたりと便利なツールです。
Ollamaのインストール手順
-
公式サイトからOllamaをダウンロードし、インストールします
-
インストール後、Ollamaサーバーを起動します
ollama serve
-
使用するモデルをダウンロードします
ollama pull llama3.2
ここではMeta社が開発した軽量なLLMであるllama3.2を利用しています。
このllama3.2は、デフォルトでは3Bのパラメーター数で比較的小規模で今回のようなローカル環境での実行でも扱いやすい部類です。また、日本語に強いモデルはありませんが、筆者がコミットメッセージの生成に利用する範囲では違和感はありません。
OpenCommitでOllamaを利用する
OpenCommitは、Anthropic、Azure、Ollama、Gemini、Flowiseのツールと連携できます。
その中から先述のOllamaと連携してローカルモデルを使用してみましょう。
oco config set OCO_AI_PROVIDER='ollama' OCO_MODEL='llama3.2'
これにより、ローカル環境にさきほどOllamaでインストールしたモデルを実行し、ローカルのCPUやメモリーリソースを活用してコミットメッセージを生成できます。
OpenCommitのカスタム
OpenCommitは、柔軟にカスタマイズできます。
-
pushの無効化: デフォルトでは、コミット後に半自動で
git push
が実行されますが、これを無効にできます。oco config set OCO_GITPUSH=false
-
日本語化: コミットメッセージの言語を日本語に設定できます。
oco config set OCO_LANGUAGE=ja
-
絵文字の有効化: コミットメッセージにGitMojiを追加できます。
oco config set OCO_EMOJI=true
-
ワンライン: コミットメッセージを1行で記述するように設定できます。
oco config set OCO_ONE_LINE_COMMIT=true
デモ
上記が完了すると、コミットメッセージを生成できます。
使っているなかでは、やや不正確で修正すべきときもあったりと、歯がゆさはありますがタダなら満足できるレベルに思えます。
大きな差分の場合は、少し時間がかかることもありますが、正確にやろうとすれば人間でも同じです。コミットを小さく分ける教科書的対応で回避しましょう。
おわりに
OpenCommitは、制作者であるdi-sukharevさんを中心にオープンソースとして開発されており、その貢献に深い敬意と感謝を表します。
今回は、無償ツールでローカルでの実行する方法をご紹介しましたが、大手企業開発のものや有償ツールもあり、状況に応じ最適なツールを選んでみてください。
Ollamaは、ローカルでのLLM実行ツールのため外部に送信されるリスクは低いとされていますが、モデル汚染やセキュリティー設定の不備などの脆弱性を狙った攻撃のリスクもあります。
LLMはその特性上、回答にバイアスや倫理的な問題が含まれる可能性もあります。
メリットも多いLLMですが、そうしたプライバシーやセキュリティーなどのリスクに注意を払い、適切な範囲での利用を心がけましょう!
LuupではエンジニアにGithub Copilotの利用料の負担のほか、Ollamaを動かしても問題ないような十分なスペックのPCを貸与してもらえます!LLMでの開発生産性向上やプロダクトへの活用にも取り組んでいきたいと考えています。
少しでも興味があれば、LUUPのカジュアル面談に申し込んでみてください!
Discussion