yasudacloudの日記

札幌に住むソフトウェアエンジニア

JetBrains AI Assistant使ってみたよ

先日の続き。

JetBrains IDE 2023.2からAIチャット(Beta機能)が導入されました。

AIチャットと言えばGitHub CopilotやChatGPTのIDEプラグインが公開されていますが、とうとうJetBrains公式のAIチャットが出たということで大変めでたいです🥳

導入からちょっとした操作まで簡単にご紹介します。

利用条件(前提)

対象のIDEバージョンは2023.2以上(EAPも可)です。2023.7.21時点ではIntelliJ、GoLandやPHPStorm等のプログラミング系IDEはまだEAPしか出ていないようですが、DataGripだけ2023.2が出ています。

利用条件については公式にこのように記載されています。

JetBrains IDE の AI Assistant | The IntelliJ IDEA Blog

AI 機能にアクセスするには、JetBrains Account を使用して JetBrains AI サービスにログインする必要があります。 ログインは AI Assistant(AI アシスタント)ツールウィンドウ、または Settings(設定)| Tools(ツール)| AI Assistant(AI アシスタント)から行います。

 

JetBrains AI サービスはすべてのユーザーに直ちに提供されるわけではないことに注意してください。 まずは限られた数のユーザーにアクセスを提供し、人数が定員に達した時点で残りのユーザーは順番待ちリストに追加されます。 今後数週間にわたってユーザーを順次招待し、製品をお試しいただく予定です。

 

AI サービスへのアクセスは現在、OpenAI サービスが提供されている地域に制限されています。 具体的な地域の全リストは、こちらをご覧ください。

 

AI サービスは EAP サイクルの期間は無料でご利用いただけます。 ライセンスと価格体系については、後日お知らせします。

順番待ちと記載がありますが自分の場合は特に問題なく利用できたので、今の所は制限が緩いのかもしれません。

動かす😎

2023.2系のIDEをインストールしたら起動し、AI Assitantのプラグインをインストールします。

再起動するとView -> Tool WindowsからAI Assistantが増えているはずです。

JetBrainsのアカウントログインしていない場合は設定のTools -> AI Assistantからログインすればセットアップ完了です。

早速、チャットで質問してみました。日本語で聞くと日本語で返ってきます。

これだと単にテキストを投げるだけで他のAIチャットと差別化できてないと思ったかもしれませんが、もう一つの使い方があります。それがAI Actionsを使った方法です。

AI Actionsについて

公式に明確な定義が見当たらなかったのですが、AI ActionsはプログラムやIDEの特定の操作時にAI Assitantと連携するような機能と言っていいと思います。

例えばコードを入力中にoptions + Enterを押すとコードのドキュメントを追記してくれたり、潜在的な問題を発見したり、リファクタの提案をしてくれます。

試しに下記のようなイケてないKotlinのコードをAI Actionsにリファクタリング(Suggest refactoring)してもらいます。getUserName()という関数名なのにInt型で123と返しているのは違和感がありますね。

fun getUserName(): Int {
return 123;
}

回答

The code snippet you provided returns an integer value that signifies the user name, which might not be ideal in many real-world scenarios as usernames are usually represented as strings. However, if there's a specific reason to keep it as an integer, then the code is fine as is, and there'd be no need for any refactoring.
If it needs to be changed to a string type, here is the refactored code:

fun getUserName(): String {
    return "username";
}

In this refactored function, "username" is returned as a placeholder. Replace it with the actual username string you need.

関数名と戻り値の型がおかしいんじゃないかという指摘を頂きました。なかなか優秀です。

ただ、毎回英語の回答なのが地味に大変ですね。。OpenAIなら「(言語)で回答してください」と一文追加するだけでいいんじゃないかなーと思ったり。ということで先ほどフィードバックを投げておきました😤

ちなみに日本語プラグイン(Japanese Language Pack)を入れてIDEを日本語にしてみましたが、AI Actionsの回答は英語のままでした。

他の機能

他にもGitのコミットメッセージを自動的に作ってくれたり(英語だけど...)、クラス名や関数名をRenameする際に命名を提案してくれる機能があります。それほど特筆する点が見当たらなかったので下記を参照してもらえればと思います。

blog.jetbrains.com

最後に

この機能に関してAI Assistant自身にいくつか質問を投げたので回答を記載します。

Q. AI Assistantが得意なことを教えてください 

私の名前は"AI Assistant"です。私はコーディングとプログラミングに関する問題を助けることに長けています。特に、SQL、Python、Javaなどの様々なプログラミング言語についての知識を持っています。
また、データベースの操作や問題解決、コードの最適化やリファクトリングについてもアドバイスを提供することが可能です。
その他にも、デバッグ、アルゴリズムの解析、パフォーマンスの改善、さらにはソフトウェア開発の最善のプラクティスについての情報を提供できます。
どのようにお手伝いできるかお知らせください。

Q. AI Assistantが回答した内容のライセンスはどうなっていますか?

私、AI Assistantが提供する応答や情報の著作権はOpenAIに帰属します。これらの情報は個人的な使用や学習目的に限定されており、商業使用や再配布のために許可を得る必要があります。具体的な使用条件や許可については、OpenAIの利用規約または関連する法規をご確認ください。

Q. AI AssistantはIDEによって違いはありますか?例えばPHPStormではPHPの回答に特化していたり、DataGripはデータベースに関する回答が得意かどうかです

私、AI Assistantは各種プログラミング言語についての情報を提供する能力があり、特定のIDEに制限されることはありません。PHPStormに関しては、PHP関連の質問に対して助けを提供することができます。同様に、DataGripではデータベース関連の質問や問題に対して助けることができます。
要するに、私が提供できる情報やアドバイスは、使用されるIDEやプログラミング言語に関係なく、広範なソフトウェア開発のトピックをカバーしています。ただし、DataGrip 2023.2が提供する特定の機能や操作についての詳しい情報を提供する能力があります。
どのようにお手伝いできるか、具体的にお知らせください。

Q. AI Assistantはコミュニティエディションでも使えますか?

はい、私、AI AssistantはコミュニティエディションのIDEでも使用できます。コードの提案、エラーの解析、プログラミング言語に関する疑問の解決など、特別な機能を必要としないソフトウェア開発の問題を解決するためのサポートを提供することができます。
ただし、IDEのエディションによっては私が提供できる情報が限定され、特定のプレミアム機能についての情報は提供できないことがあります。そのため、特定のIDEのエディションに関連する質問に対する最善の回答を提供するためには、使用しているIDEのバージョンやエディションの詳細を教えていただくと助かります。

いずれ有償になったり制限ができたりするのかもしれませんが、、まあ便利なものが次々出てきますね( ´Д`)y━・~~