電通総研 テックブログ

電通総研が運営する技術ブログ

OpenCommitをGitHub Actions上で実行してコミットメッセージを自動生成する

初めに

ISID X(クロス)イノベーション本部 の三浦です。
日に日に生成AIへの依存を深める日々を過ごしています。

今回は、OpenAIのAPI(デフォルトモデルはgpt-3.5-turbo-16kです)を利用したOpenCommitというOSSを使用しましたのでご紹介いたします。
コミットメッセージ生成ツールとなります。

OpenCommitとは?

公式ページ
https://github.com/di-sukharev/opencommit

実行イメージ

ChatGPT4による特徴解説

主な特徴は以下のとおりです:

AI駆動: 
OpenCommitは、GPT-3.5ターボまたはGPT-4を使用してコミットメッセージを生成します。

カスタマイズ可能:
ユーザーは絵文字の使用やコミット説明の長さをカスタマイズできます。

簡単な使用法: 
OpenCommitは、ステージングされた変更に対してコミットメッセージを生成するために直接呼びだすことができます。使用法はgit add <files...> に続いて opencommit または oco を実行するだけです。また、GitHub actionで呼びだすことも可能です。

ローカルおよびグローバル設定:
.env ファイルを作成してOpenCommit設定変数を追加することで、リポジトリごとのローカル設定を行うことができます。また、oco config set コマンドを使用してグローバル設定も可能です。
OpenCommitは、コーディングプロセスを簡素化し、コミットメッセージの品質を向上させることを目的としています。詳細は、GitHubのOpenCommitリポジトリやGitHub Marketplaceのページで確認できます。

今回の目的、背景

コミットメッセージの自動生成には、以下の方法が考えられます(他のOSSもありますがその辺は割愛します)。

  • GitHub Copilotで生成する
  • OpenCommitで開発者の端末でコミットメッセージを生成する
  • OpenCommitでGitHub Actions上で生成する

今回の主な目的は、適切なコミットメッセージを記入しない開発者への牽制と、ブラウザを介して修正を行うメンバーへの対応です。そのため、開発者の手間がかからない「OpenCommitでGitHub Actions上で生成する」を進めます。

なお、この機能は現在β版として提供されているため、使用する際は各自の責任で十分に検証した上でご利用ください。

Github Actionの設定

https://github.com/di-sukharev/opencommit?tab=readme-ov-file#setup-opencommit-as-a-github-action-beta-

設定プロセスは非常に簡単です。指定されたリンク先のファイルを作成するだけで済みます。

基本的な設定を行い、次に動作に必要なOCO_OPENAI_API_KEYを設定します(OpenAIのAPIキーです。OpenCommit用にキーを発行しておくとよいでしょう)。
現時点で、OpenCommitはOpenAIのAPIのみに対応しており、AzureのOpenAIモデルはサポートされていません。

この設定で基本的な機能は動作しますが、さらに使いやすくするために私の環境では以下のような改変を加えました。

上記コミットに対して自動生成されたコミットメッセージが下記です。
OpenCommitが生成したコミットメッセージを確認してみましょう

🔧 修正(OpenCommit.yml): OpenCommitワークフローのカスタマイズ設定を変更
✨ 新機能(OpenCommit.yml): OCO_DESCRIPTIONとOCO_EMOJIを有効化し、OCO_LANGUAGEをjaに変更
OpenCommitワークフローのカスタマイズ設定を変更しました。OCO_DESCRIPTIONとOCO_EMOJIをtrueに設定することで、コミットメッセージに説明と絵文字を追加するようになりました。また、OCO_LANGUAGEをjaに変更することで、コミットメッセージを日本語で生成するようになりました。これにより、より詳細なコミットメッセージが生成され、開発者間のコミュニケーションが向上しました。

おお、いい感じですね!!

OpenAIのAPI利用費用の確認

OpenAIのプラットフォーム(https://platform.openai.com/usage)から、使用状況を確認することができます。このように、費用のリアルタイムな把握、APIキーごとの利用状況が一覧できるため、安心して利用できますね。


まとめ

この記事では、コストを抑えつつコミットメッセージを改善する方法をご紹介しました。私自身、簡単な作業を頻繁に行い、ブラウザを通じて修正を加えることが多いのですが、ブラウザを介してもコミットメッセージのアシストが得られるのは非常に助かります。

執筆:@miura.toshihiko、レビュー:@fukutake.hiroaki
Shodoで執筆されました