🧪

CodiumAIと共に行うテスト・リファクタリング

2023/12/21に公開

はじめに

ここ一年でGitHub Copilotはかなり浸透し、Cursorなどの開発者向けのLLM(Large Language Models)ツールの利用も増えてきていることを実感します。

下記の通り、Copilotによって多くのコードが生成される時代となりました。

GitHub Copilotは改善され続けている。2022年6月にこのツールが初めて個人向けに提供されたとき、開発者のコードの27%以上が平均してGitHub Copilotによって生成されたものだった。現在では、この数字はすべてのプログラミング言語で46%に達し、Javaでは61%に跳ね上がっている。
https://github.blog/2023-05-09-how-companies-are-boosting-productivity-with-generative-ai/

CopilotやCursorも便利で愛用していますが、今回は最近試している、CodiumAIがVSCode・JetBrains IDE向けに提供している「Integrity-Agent: IDE Plugin」について紹介します。

https://www.codium.ai
https://plugins.jetbrains.com/plugin/21206-codiumai--integrity-agent-powered-by-gpt-3-5-4

CodiumAI

CodiumAIは、テストにフォーカスした生成AI/LLM(Large Language Models)を用いた開発者ツールを提供する会社です。

TestGPTなるモデルを開発を行うなど、LLMのテスト領域での活用にトライしているのが特徴です。

TestGPT は、CodiumAI によって開発された人工知能モデルであり、OpenAI の GPT-4 大規模言語モデルに基づいています。その機能は、テストを自動的に生成することで、開発者がコードを対話的にテストできるように支援することです。
https://www.codium.ai/resources/external-publications/testgpt-a-generative-ai-tool-that-guarantees-code-integrity/

汎用のコード補完や生成ツールとは異なり、CodiumAIはコードの完全性に重点を置いています。コードの動作を理解するのに役立つテストを生成し、エッジケースや疑わしい動作を見つけ、コードをより堅牢にします。CodiumAIは、「IDE内の言語モデルAPI」のような派手なものではありません。
a. 私たちはテスト領域のプロンプトのプロです。
b. 私たちは複数のプロンプトを並列化し、連鎖させることで、ユニークで多様な意味のあるテストを作成します。

PRの自動サマリーや説明文の入力などを行うPR-AgentもCodiumAIが提供しています。

https://www.codium.ai/products/git-plugin/
https://tech.layerx.co.jp/entry/2023/09/01/102612

何ができるか

現時点では以下二つの側面で開発者を支援してくれます。

  • より安全なコードを書く
  • より良いコードを書く

利用方法は簡単で、プラグインを入れると以下のようにCodiumAIのアイコンが関数名の部分に表示され、ここからCodiumAIにアクセスできます。

具体的には以下のことが可能であり、コードの分析、テストや改善案を提案してもらうという、AIと一緒にプログラミング(主にテストコード実装)をする体験を味わえます。

  • コード・メソッドのサマリ
  • コード修正案の提案
  • ユニットテストスイート自動生成

盲目的に信頼・依存は出来ませんが、テストケースやエッジケースをざっとでも提案してくれるのは開発者には嬉しい機能ではないでしょうか。

現時点で、テスト修正等の機能はPython、JavaScript、TypeScript、Javaのみがサポートされています。
https://www.codium.ai/#faq
https://www.codium.ai/programming-language-support/

コードのサマリ

具体的な機能・動作について紹介します。まずはメソッドのサマリ・説明です。
以下画像のようにExample Usageや処理フローをまとめてくれます。一般的な情報ではありますが、一からコードリーディングするのと比べると便利な情報が提供されます。

コード修正案の提案

また、コード修正の提案も行います。提案に加えて、変更理由も併せて明示されます。
(コード・メソッドの中身は大した意味はないのでスルーしてください)

どの提案を取り入れるかを選択し、変更案を採用することでコードが自動でリファクタされます。便利ですね。

ユニットテストスイート自動生成

コードの修正提案は便利ですが、リファクタのためにもユニットテストは大事ですね。
CodiumAIではテストケースの洗い出しやテストコード実装のサポートもしてくれます。

以下のようにテストケースの提案をしてくれます。
設定ではTest Frameworkに加えて、LLMらしくinstructionsを書くこともできます。

Behaviors CoverageではHAPPYとEDGE、OTHERに分けてテストケースを自動で洗い出してくれます。こちらも特定のテストケースを選んで、テストコードを生成することが出来ます。

生成対象のテストケース・コードは以下のように表示・確認可能です。

テストケースを選んだら後は右下のSave to Fileから、テストファイルを生成しましょう。

これでCodiumAIが提案したテストケースでテストファイルが作成されました。

Privacy

利用の際に気になるプライバシー・データ保護に関しては、基本的に以下3つのページにまとまっています。

https://trust.codium.ai/
https://www.codium.ai/privacy-policy
https://www.codium.ai/blog/codiumai-security-our-commitment-to-data-privacy-and-security/

下記のように有料利用、もしくはオプトアウトによってトレーニング利用を停止することは可能なようです。

しかし、私たちは、一部のユーザーがプライバシーを懸念している可能性があることを理解し、尊重しています。そのため、私たちはシンプルで誰にでも開かれたオプトアウト・オプションを提供しています。ユーザーは、support@codium.ai にEメールを送るだけで、モデルトレーニングのためのデータ利用からのオプトアウトを要求することができます
https://www.codium.ai/blog/codiumai-security-our-commitment-to-data-privacy-and-security/

当社の有料購読者のデータが当社のAIモデルのトレーニングに使用されることは決してありません。実際、TeamsとEnterpriseユーザーのデータは48時間以内にすべてのCodiumAIストレージから削除されます。48時間の保管はトラブルシューティングのためだけですので、ゼロ保持(即時削除)をご希望の場合はお知らせください。
https://www.codium.ai/blog/codiumai-security-our-commitment-to-data-privacy-and-security/

また必要なコードだけ分析・提案に利用暗号化に加えて、SOC2の取得は行っているようです。

この辺りは正確には確認しきれておらず、そのため現状はプライベートの開発でしか利用していません。業務利用の際は改めてチェックをすることをお勧めします。

まとめ

CodiumAIについて簡単に紹介しました。PR-Assistや、今後登場予定のCoding Agentなど、CodiumAIの提供するツールは多岐にわたります。
https://www.codium.ai/products/coding-agent/

現時点では既存のコードベースに合わせてコードやテストを提案してくれている感覚は弱く、提案された内容をそのまま採用すること自体はそれほど多くありません。しかし、初期案・叩きやアイディアの源としては割と気に入っています。

CodiumAIはコードを一から生成するのではなく、既に書かれたコードを改善・安全にしていくのに伴走してくれるツールのため、GitHub Copilot等他ツールと併用すると良い感じに開発スタイルがアップデート出来るのではないかと思い、もう少し研究していく所存です。

より便利・安全にテスト・リファクタをするために、ぜひCodiumAIを試してみてください!

株式会社ログラス テックブログ

Discussion