
AI Assistant・Junieを使って開発していった感想
はじめに
業務をしていてAI開発ツール(AIエージェントやAIコーディングアシスタント)を使用して仕事を進める機会は多くなってきたなと感じています。
私が今年の4月から9月にかけて使用したものでいうと下記などがあげられるでしょうか。
- JetBrains
- AI Assistant
- Junie
- GitHub Copilot
- Ask
- Agent
- Devin
今回はJetBrainsのAI Assistant・Junieを使用した機能や感想などをまとめたいと思います。
AI Assistant
機能
実際に業務で使用したJetBrains AI Assistantの主な機能と、それぞれの使用感について紹介します。
コード説明
既存の複雑なコードブロックを選択して「コードの説明」をすると選択した箇所のロジックの説明がされます。
特に印象的だったのは、複雑なif文やループ処理に対して、処理の意図まで含めた分かりやすい説明を生成してくれた点です。
コードレビュー時にも活用しましたが、ロジックの背景までは説明されないので、技術的な動作理解の手助けはできますが、
仕様に通りに実装されているかはレビュアー側の判断も必要ですが記載されているロジックをぱっと理解するのにとても助かっています。
ドキュメント生成
クラスやメソッドに対するJavaDocの自動生成機能を頻繁に活用しました。
メソッドのパラメータや戻り値の型を解析して、「この関数は何をするのか、何を返すのか、何のパラメータが必要でどういうパラメータなのか」といった適切な説明文を生成してくれる点でした。
チャット機能
開発中に技術的な質問をAIに直接問い合わせるチャット機能は、すぐ相談できる相手のような感覚です。
このようにコード実装しようと考えていますが、どうでしょうか?などと問いかければ「こういう場合はこの方法もありますが、こっちのほうが可読性に優れている」などといった内容を提示してくれる点です。
エラーの解説と解決案
コンパイルエラーや実行時エラーが発生した際の解析機能は、デバッグ効率を大幅に向上させました。
IDEのログ出力されたところで範囲選択し、説明を依頼すれば、単にエラーの場所を示したり、エラーの原因や修正案などを提示してくれました。
複雑なスタックトレースも分かりやすく解析してくれるため、エラー解決にかかる時間が減って助かっています。
感想
JetBrains AI Assistantを使用して感じた点は、IDEとの統合度の高さです。
コードを選択して説明を求めたり、コード補完が出来たり、リファクタリング提案を受けられる点は非常に便利でした。
複雑なロジックに対しては、的外れな提案もあり、AIを使用するにあたって全般的に言えることだと思いますが、AIの提案を鵜呑みにせず、しっかりと確認を行う必要性を感じました。
開発速度の向上という面では確実に効果があったかと思います。
これらの機能は今後も積極的に活用していきたいと思います。
Junie
機能
実装を依頼したり、提案を行ってくれます。
Junieには「Code・Ask」の2種類のモードがあります。
Codeは依頼した内容をもとにコードなど自動生成したり。
Askは設計・実装計画を立てたりしてマークダウン形式でファイル出力したり。
私が主にAskを使用してチャット形式でやりとりをして設計・実装計画を立てることについて主に使用しました。
Code
「実装計画書.md」などを作成してそれを読み込ませたりすることでコードの生成などを1から実施してくれました。
ただ私の計画書が不十分だったのか、言葉足らずだったのか原因追及まではできていませんが、思ったものとは異なるファイルやコードが生成されてしまってその都度、再指示などをすることで繰り返し使用することでAIの使用可能リソースを多く使ってしまったのでCodeの使用については工夫が必要なのかなと思いました。
プロジェクトごとのコーディング規約や禁止事項を宣言する設定ファイルとして、プロジェクト直下に.junie/guidelines.mdを置くと、Junieは参照してタスクを実行することができるようなのでその整理などが大事なのかなと感じました。(作成・作りこめていないですが…)
Ask
設計・実装計画を相談することが出来ます。
コード生成をいきなりしないので自分のやりたいことをぶつけてマークダウン形式などでファイルを生成してもらって
確認しつつ整理していくことに使用していました。
実際に使用中のファイルなどを読み込ませて問題点やリファクタリング案などをまとめたファイルを生成してもらったり、
○○をしたいけど、ツールを作成できる?などとツール作成の相談などにも使用しました。
感想
単純なコード補完だけではなく、プロジェクト全体を俯瞰した変更提案をしてくれる点が特に印象的でした。
例えば、「この機能を追加したい」と伝えると、必要なファイルの特定から実装内容など一連の作業を提案してくれます。
生成されるコードの量が多く、間違いがないのかなどを確認するのに時間がかかることもありました。
Askで計画書のマークダウンファイルを作成、確認してブラッシュアップしてからCodeでファイル作成などをすることで精度が上がるのかもしれません。
さいごに
AI開発ツールを使用することで、確実に開発効率が向上したと感じています。
特に、定型的なコードの記述やドキュメント作成などの作業において時間短縮ができたと感じています。
しかしAIが生成するコードが指示した通りか仕様通りになっているかなどの判断については人間による判断が不可欠であることも実感しました。
まだまだ活用しきれていない機能がたくさんあると思います。
AI開発ツールの恩恵を受けながらもエンジニアとしてのスキルも継続して磨いていきたいと思います。
WEB配信での勉強会などに2,3回ほど参加しましたが、刺激になりますし気になる話題があれば積極的に参加し、他のエンジニアの活用事例からも学び続けることで、AI開発ツールの可能性をより広げていければと考えています。