広告枠を募集中 ご相談ください

VS Code と JetBrains IDE で Tabnine Chat を活用してテスト生成・ロジック解説・リファクタリングを行う方法

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

Tabnine Chat は、Visual Studio Code や JetBrains 各種 IDE(IntelliJ IDEA、PyCharm、WebStorm、GoLand など)の内部で直接動作する対話型 AI アシスタントです。ブラウザとエディタの間でコードをコピー&ペーストして往復することなく、IDE の中で単体テストの自動生成、複雑な業務ロジックの解読、そして安全なリファクタリングを完結できます。

本記事では、ソフトウェアエンジニアが日々の開発業務で Tabnine Chat を使いこなし、この 3 大タスクを効率的に進めるための操作手順、コンテキスト指定記法、プロンプト設計、そして IDE 組み込み Diff 適用機能の活用法を詳しく解説します。


1. Tabnine Chat を呼び出す 3 つのアプローチ

Tabnine Chat は、サイドバーパネルおよびエディタ内のコンテキスト連動 UI から素早く呼び出せます。

チャットパネルの起動

3 種類の操作トリガー

  1. メソッドスコープの CodeLens: 対応言語(Java、Python、TypeScript、JavaScript、Go、Rust、C#、PHP、Swift、C/C++)において、関数やメソッド宣言の直上に「Explain」や「Test」の CodeLens ボタンが自動表示されます。クリックすると、該当メソッドを対象にチャットが開きます。
  2. グローバルスラッシュコマンド(/): チャット入力欄に / を入力するか、新規セッション画面のアクションタグをクリックすると、/explain-code(コード解説)、/generate-test-for-code(テスト生成)、/fix-code(エラー修正)、/document-code(ドキュメント作成)などの標準コマンドを実行できます。
  3. ワークスペースコンテキストを活用した自由プロンプト: エディタ上でコードを選択し、自然言語で指示を入力します。@(コード要素)や %(ファイルシンボル)を付与することで、関連コンテキストをピンポイントで補強できます。

2. 対話型単体テスト(ユニットテスト)の生成

定型的なテストコードの記述やコーナーケースの網羅は、Tabnine Chat が最も威力を発揮する領域の 1 つです。

方法 A:ワンクリックの組み込みコマンド

  1. エディタ上でテスト対象の関数やクラスをハイライト選択します。
  2. Tabnine Chat の入力欄に /generate-test-for-code と入力するか、アクション候補から選択します。
  3. 選択したロジックが解析され、正常系パスおよび一般的な境界値をカバーするテストスイートが即座に生成されます。

方法 B:コンテキストを指定した詳細プロンプト

実際のプロダクションコードでは、プロジェクト独自のテストフレームワーク、モックライブラリ、アサーション記法に準拠させる必要があります。コンテキスト指定記法を組み合わせた構造化プロンプトが有効です。

プロンプト例:
選択したメソッドに対して、JUnit 5 と Mockito を用いた完全な単体テストを作成してください。
参照コンテキスト: @OrderRepository, @PaymentClient
要件:
1. 注文作成が成功して 200 OK を返す正常系テスト。
2. 在庫不足により OutOfStockException がスローされる異常系テスト。
3. 決済失敗時にトランザクションがロールバックされる挙動のテスト。
4. すべての DB アクセスおよび外部 HTTP 呼び出しをモック化すること。

チーム共通のテストコマンド(.tabnine_commands)

チーム全体で一貫したテスト規約を運用したい場合、カスタムコマンドを作成できます。

  1. Tabnine Chat 内の Settings(歯車アイコン)> Define custom commands の Add をクリックします。
  2. コマンド名(例: /test-service)を入力し、テンプレート内で $selected_code トークンを用いてプロンプトを定義します。
  3. 生成された .tabnine_commands ファイルを Git リポジトリのルートにコミットすることで、チーム全員で同一のテスト生成プロンプトを共有できます。

3. コードロジックの解読と解説(Explain Code)

レガシーコードの改修、複雑な正規表現、再帰処理、不慣れなサードパーティ製ライブラリの読み解きにおいて、Tabnine Chat は段階的な解説を提供します。

クイックロジック解説

  1. VS Code または JetBrains 上で理解したいコードブロックを選択します。
  2. メソッド上部の Explain CodeLens をクリックするか、チャットに /explain-code を入力します。
  3. Tabnine が以下の観点から整理した解説を出力します。
    • 当該コードの主要な目的、入力引数と戻り値の定義。
    • 条件分岐、ループ処理、内部状態の遷移フロー。
    • 潜在的な副作用や非同期処理の注意点。

対話型ディープダイブ

静的ドキュメントと異なり、Tabnine Chat では追加の技術的疑問を連続して質問できます。

出力の深さとトーンの調整

Chat の Settings から応答スタイルをカスタマイズできます。


4. 既存関数のリファクタリング(Refactoring)

リファクタリングの鉄則は、外部から観測される動作を一切変えずに、コードの可読性、保守性、テスト容易性を高めることです。

効果的なリファクタリングプロンプトの構成

「このコードを綺麗にして」といった曖昧な指示は避け、明確な制約を与えます。

  1. 目的(Goal): 適用する技法を指定(関数の抽出 Extract Method、ガード節によるネストの解消、命令的ループの関数型ストリーム化など)。
  2. コンテキスト(Context): 関連する型やユーティリティを @ で明示。
  3. 制約条件(Constraints): 「公開メソッドのシグネチャと戻り値の型を変更しない」「例外のスロー仕様をそのまま維持する」など、境界条件を厳格に指定。
  4. 検証(Validation): リファクタリング後も既存の単体テストをパスすることを条件に設定。
プロンプト例:
目的: 選択した関数の循環的複雑度(Cyclomatic Complexity)を下げるリファクタリングを行ってください。
手法: 深い if-else のネストを排除し、ガード節(Guard Clauses)と早期リターン(Early Return)に置き換える。
制約事項:
- メソッドシグネチャおよび公開 API を維持すること。
- エラーログの出力フォーマットを変更しないこと。
- 実行時のビジネスロジックおよび例外処理の挙動を完全に保つこと。
参照: @OrderValidationService

IDE 内での差分確認とコード適用

Tabnine は、手動でのコピー&ペーストを不要にする統合 UI を備えています。

アクションVS Code および JetBrains での動作
Show Diff(差分表示)既存コードの変更を含む提案の場合に表示。左右比較またはインライン形式で削除行(赤)と追加行(緑)を明示。VS Code では個別の変更箇所ごとに Accept をクリックして段階的にマージ可能。
Apply(直接適用)コードブロック右上のボタン。クリックすると、エディタ内の選択範囲またはカーソル位置のコードをワンクリックで置換・反映。
Insert(挿入)現在のカーソル位置に生成されたコードスニペットを直接挿入。
Copy(コピー)クリップボードにコードをコピーし、手動で部分適用したい場合に利用。

5. 精度を高めるための実践的プラクティス

CodeLens からの素早いトリガー、構造化プロンプト、そして IDE ネイティブな差分確認を活用することで、Tabnine Chat は開発現場におけるテスト作成、ロジック理解、コード改善を力強く加速します。


参考文献