はじめに
Spring Boot のサービスクラスで userId というパラメータを accountId に直す作業をしていた。
verifyUser(Long userId, ...) の userId を書き換えると、「他にも userId を受け取ってる場所、いくつあったっけ?」という追跡タスクが始まった。
Rename Refactoring(Shift+F6)を使えばいい場面もある。でも「パラメータ名だけ変えたい、フィールド名は変えたくない」という状況では結局、確認しながら直すことになる。
IntelliJ IDEA の AI Assistant に Next Edit Suggestions(次の編集提案、以下 NES) という機能があって、使ってみました。
NES とは何か
コード補完)は「今カーソルがある場所に次に入力するコード」を予測する機能で、
NES は「行った編集」を見て、「次に直すべき別の場所」を提案する。
| コード補完 | NES | |
|---|---|---|
| 見ているもの | カーソル位置 | 直前の編集 |
| 提案するもの | 次に入力するコード | 次に直すべき箇所 |
| きっかけ | キー入力 | 編集の確定 |
補完は「何を書く?」、NES は「次どこ直す?」の機能。
有効化する
設定 | エディター | 一般 | コード補完 | インライン表示 を開いて、「次の編集提案を使用可能にする」にチェックを入れる。
前提として AI Pro、またはそれ以上のライセンスが必要とのこと。言語セクションで Java(または使用言語)にチェックが入っているかも確認しておくこと。
実際の操作
シナリオ
Spring Boot プロジェクトの UserService.java で、verifyUser(Long userId, ...) のパラメータ名を userId → accountId に手でタイプして書き換える(Rename Refactoring は使わない)。
同ファイル内に updateUserBalance(Long userId, ...) と getBalance(Long userId) も存在していて、これらの userId も合わせて直したい。
手順
1. verifyUser の userId を accountId に直す
普通にタイプして書き換える。
// before
private boolean verifyUser(Long userId, String token) { ... }
// after(手でタイプして変更)
private boolean verifyUser(Long accountId, String token) { ... }
2. 差分プレビューが表示される
書き換えた直後、差分プレビューが表示される。「ここも直すべき場所があるよ」というサイン。
3. Tab を押す → プレビュー → Tab で適用
Tab を押すと updateUserBalance(Long userId, ...) の userId にジャンプして、差分プレビューが表示される。
もう一度 Tab で適用。続けて Tab を押すと今度は getBalance(Long userId) に飛んで、同じく差分プレビュー → Tab で適用。
verifyUser の userId を編集
↓ Tab
updateUserBalance の userId をプレビュー → Tab で適用
↓ Tab
getBalance の userId をプレビュー → Tab で適用
IDE が自動で次の編集候補に連れて行ってくれます。
4. 直したくない箇所は Esc でスキップ
変更しない箇所では、Esc でスキップ。提案は止まらず次の候補に進む。
| キー | 動作 |
|---|---|
Tab |
ジャンプ → 差分プレビュー表示 → もう一度 Tab で適用 |
Esc |
この提案をスキップして次へ |
「全部 OK しなければいけない」ではなく、自分が判断する余地が残っている。これが全置換と違うところ。
変わったこと
作業前は関連する箇所を探す必要があった。関連する場所を思い出し、変えるものと残すものを考えながらファイルをスクロールする。
NES を使い始めてから、「ここを直す」という編集の意図だけに集中できて、「次の編集箇所」の追跡は IDE に任せられるようになった。
副次的な効果として、修正漏れが減った。
まとめ
NES は「次に入力するコードを予測する補完」とは別物。「さっき行った編集を起点に、次に直すべき場所」を提案してくれる機能。
「直した1箇所を起点に、関連箇所を Tab で次々と確認・適用していく」という使い方で、「次はどこを直す?」という追跡タスクがなくなります。
設定は 設定 | エディター | 一般 | コード補完 | インライン表示 から。AI Pro 以上のライセンスがあれば今すぐ有効にできる。
ナットウシステムからのお知らせ
弊社は JetBrains 製品に関するご質問、ご相談等を受け付けております。弊社のXまたはメールでご連絡ください。

