開発者体験(DX)を進化させるJetBrainsのAIアシスタント機能の紹介
先日JetBrains社からAIアシスタント機能の一般公開が発表されました。
今回はこれを試してみましたので、その使いどころをご紹介したいと思います。
なお、本記事ではIDEとしてIntelliJ IDEA 2023.3 (Ultimate Edition)
を使用しています。
AIアシスタント機能の公式ドキュメントはこちらです。
JetBrainsのAIアシスタントとは?
#JetBrainsのIDEノウハウとLLMを組み合わせて、開発ワークフローを効率化するJetBrains AIの機能です。
リファクタリングやコード生成に加えて、ドキュメント作成やソースコード上の問題点検出までいろんなことをしてくれます。
類似サービスとしてはGitHub Copilotが挙げられると思います。
現時点ではほとんどのAI機能はOpenAIを使用していますが、将来的にはJetBrainsカスタムモデルやGoogle等もサポートする予定とのことです。
以下公式ページからの引用です。
There is also an ongoing track with other providers (e.g. Google and others) regarding their models. Still, for the majority of use cases, OpenAI is our current LLM provider.
For the on-premises scenario, we will serve the provider included in the cloud platform (AWS Anthropic, Google PaLm 2, or Azure OpenAI).
(DeepLで翻訳)
現在、ほとんどのAIアシスタント機能はOpenAIを使用していますが、JetBrainsによって学習された新しいコード補完モデルのリリースを準備しています。
また、他のプロバイダー(Googleなど)とのモデルに関するトラックも進行中です。それでも、大半のユースケースでは、OpenAIが現在のLLMプロバイダーです。
オンプレミスのシナリオでは、クラウドプラットフォームに含まれるプロバイダー(AWS Anthropic、Google PaLm 2、Azure OpenAI)を利用する予定です。
利用するにはIDEとは別にサブスクリプション形式のライセンス購入が必要です。
現時点だと個人では年額13,000円程度です。
もちろん日本の総代理店のサムライズムさん経由での購入も可能です。
プロダクトコード生成
#AIの使い方としては王道の機能でしょうかね。
プロンプトで生成したいコードの説明を入力すると、AIアシスタントがコードを生成してくれます。
差分で表示してくれるので、どう変わるのかが見やすいですね。
気に入らなければ「Specify」で追加指示ができます。「Accept All」でAIが生成したコードを取り込みます。
リファクタリング提案
#指定した範囲のソースコードでリファクタリングを提案してくれます。
先ほどと同様に、提案されたコードは差分で確認できるので取り込み有無を判断するのに便利です。
この辺りはJetBrainsのノウハウを感じます。
問題検知
#指定した範囲のソースコードに問題がないかを確認します。
問題の有無だけでなく、チャットで改善方法まで聞けるので楽ですね。
もはやソースコードレベルのレビューはAIアシスタントにお任せできそうです。
ここでは設定でAIアシスタントのレスポンスを日本語に変更できました。
「Settings」 -> 「Tools」 -> 「AI Assistant」 -> 「User Prompts Library」 -> 「Find Problems」でプロンプトに追加指示しました。
テストコード生成
#もはやAIのコード生成ではお馴染みの機能になったでしょうか。
プロダクトコードの内容を解析してそれに適したテストコードを生成してくれます。
一度作ったら終わりでなく、自分の好みに合うように追加指示で改善していけるところがいいですね。
使用するテスティングフレームワークやライブラリの指示等も「Specify」からできます(今後はあらかじめ指定できるようになりそうな気もしますが)。
ソースコード要約
#結構重宝する気がします。任意のソースコードを要約してくれます。
心が折れそうなレガシーなコードやOSS等を読む際に一度実行したい感じですね。
気になる部分はチャットで追加質問すればコード理解も深まります。
コミットコメント生成
#地味に便利だなと思ったのはこれです。AIが変更点から適切なコミットコメントを提案してくれます。
変更点を要約してくれるので、コミットする方としてもこんな変更したんだと振り返えれます[1]。
ちなみに、現時点では日本語でコメントを生成するようにプロンプトのカスタマイズはできませんでした。
変数名の提案
#こちらも地味に便利です。AIがコードのコンテキストを理解して適切な変数名候補を提案してくれます。
英語が苦手な私はいつもネーミングに悩むことが多いのでとても助かります。
現時点では候補を上げてくれるのはin-place形式の名前変更のみで、ダイアログ形式の名前変更時にはなぜか提案してくれませんでした。今後のアップデートに期待します。
ドキュメント生成
#これもとても便利ですね。いつも書くのが面倒ですが、AIが対象のソースコードを要約してドキュメント作ってくれます。
これに慣れちゃうとサボり癖がついちゃいそうですが。。変更した時に常に実行するようにしておけばメンテされない状態のドキュメントになるのは防げますねw
カスタムプロンプト
#ここまではAIアシスタントの定型機能を使いましたが、カスタムプロンプトも作成できます。
ここではブログ記事用のカスタムプロンプトを作成してみました。
カスタムプロンプトは「Settings」 -> 「Tools」 -> 「AI Assistant」 -> 「User Prompts Library」 から指定できます。
以下のように「Check Blog」という名前でブログ記事の校正とタイトルを提案するプロンプトを作成してみました。
$SELECTION
で選択した内容を埋め込んでいます。
試しに以前書いた記事でこれを実行すると以下のようになります。
通常はtextlintで文章をチェックしていたりするのですが、これを使うとさらに深い観点でチェックしてくれます。
いつも記事のタイトルに悩むのですが、少し(?)盛ったタイトルも提案してくれて新しい発見もありますね。
まとめ
#まだ使いこなしているとは言えませんが、AIアシスタントの主要機能を使ってみました。
開発作業のあらゆるシーンでAIアシスタントと協業している感覚ですね。
ここでは紹介しませんでしたが、他にも以下のような機能もあります。
今後もあらゆるシーンでAIアシスタントが使えるように拡張されてくるのだろうと思います。
私見ですが、JetBrainsユーザーであればサブスクリプション料金を払っても使い続ける価値はあると感じました。
良くないことは分かっていますが、勢いで変更してしまうことが多くてコミット時に何を変更したのか分からなくなるのです。 ↩︎