Javaソースコードのナビゲートと編集
Visual Studio Codeは、まず第一に、豊富な編集機能を備えたソースコードエディターです。このドキュメントでは、Javaでの作業に役立つJava固有の機能をいくつか紹介します。
以下の機能を使用する際に問題が発生した場合は、issueを入力してご連絡ください。
コードナビゲーション
アウトラインビューを使用すると、現在のファイル内のメンバーを便利にナビゲートできます。プロジェクトビューも、プロジェクトの概要を把握するのに役立ちます。Javaエディターとして、呼び出し階層、型階層、定義ナビゲーション、ワークスペース内の型検索などもサポートしています。
シンボルの検索
現在のファイルまたはワークスペース内のシンボルを検索して、コードをより迅速にナビゲートできます。
ワークスペース内のシンボルを検索する
現在のワークスペース内のシンボルを検索するには、まず⌘T (Windows、Linux Ctrl+T)を押して、シンボルの名前を入力します。以前と同様に、一致する可能性のあるリストが表示されます。まだ開いていないファイルで見つかった一致を選択すると、一致の場所に移動する前にファイルが開かれます。または、クイックオープン(⌘P (Windows、Linux Ctrl+P))を使用してから、'#'コマンドを入力して現在のワークスペースを検索することもできます。⌘T (Windows、Linux Ctrl+T)は'#'コマンドのショートカットにすぎないため、すべて同じように機能します。
現在のファイル内のシンボルを検索する
現在のファイル内のシンボルを検索するには、クイックオープン(⌘P (Windows、Linux Ctrl+P))を使用してから、'@'コマンドを入力し、検索するシンボルの名前を入力します。一致する可能性のあるリストが表示され、入力時にフィルタリングされます。一致のリストから選択して、その場所に移動します。
定義をピーク
定義をピーク機能を使用すると、シンボルがどのように定義されたかをすばやく確認できます。この機能は、定義付近の数行のコードをピークウィンドウ内に表示するため、現在の場所から移動せずに確認できます。
シンボルの定義をピークするには、ソースコードで使用されているシンボルの任意の場所にカーソルを置き、⌥F12 (Windows Alt+F12、Linux Ctrl+Shift+F10)を押します。または、コンテキストメニューから定義をピークを選択することもできます(右クリックして、定義をピークを選択します)。
定義へ移動
定義へ移動機能を使用すると、シンボルが定義されている場所にすばやく移動することもできます。
シンボルの定義へ移動するには、ソースコードで使用されているシンボルの任意の場所にカーソルを置き、F12を押します。または、コンテキストメニューから定義へ移動を選択することもできます(右クリックして、定義へ移動を選択します)。シンボルの定義が1つしかない場合は、その場所に直接移動します。それ以外の場合は、前のセクションで説明したように、競合する定義がピークウィンドウに表示され、移動先の定義を選択する必要があります。
スーパー実装へ移動
ホバー時にスーパー実装へ移動リンクをクリックすると、クラスの実装とオーバーライドメソッドを追跡できます。
呼び出し階層
呼び出し階層ビューには、関数との間のすべての呼び出しが表示され、呼び出し元の呼び出し元と呼び出しの呼び出しを掘り下げることができます。関数を右クリックして、ピーク > 呼び出し階層をピークを選択します。
関数本体を右クリックして、呼び出し階層を表示を選択することもできます。
型階層
型階層ビューには、Javaオブジェクト間の継承関係が表示されます。型を右クリックして、型階層を表示を選択できます。
折りたたみ領域
折りたたみ領域を使用すると、コードスニペットを折りたたんだり展開したりして、ソースコードを見やすくすることができます。
スマート選択
スマート選択(セマンティック選択)を使用すると、ソースコード内のカーソル位置のセマンティック情報に基づいて、選択範囲を拡大または縮小できます。
- 選択範囲を拡大するには、⌃⇧⌘→ (Windows、Linux Shift+Alt+Right)を使用します。
- 選択範囲を縮小するには、⌃⇧⌘← (Windows、Linux Shift+Alt+Left)を使用します。
セマンティックハイライト
構文の強調表示は、コードをより効率的に読むことができる重要な機能です。セマンティックハイライトの助けを借りて、VS CodeはJava言語サービスからのシンボル情報に基づいて、より正確なソースコードの色付けを提供できます。
以下はほんの一例です。左側はセマンティックハイライトを有効にした後の動作、右側は構文ハイライトのみの動作です。
Javaセマンティックハイライトの詳細については、Java Language Support extension wikiをご覧ください。
Spring Bootを使用したコードナビゲーション
Spring Boot Tools拡張機能は、Spring Bootプロジェクトのナビゲーションとコード補完のサポートを強化します。
@/
は、定義されたすべてのリクエストマッピング(マッピングされたパス、リクエストメソッド、ソースの場所)を表示します@+
は、定義されたすべてのBean(Bean名、Bean型、ソースの場所)を表示します@>
は、すべての関数(プロトタイプ実装)を表示します@
は、コード内のすべてのSpringアノテーションを表示します
Visual Studio CodeでのSpring Bootサポートの詳細については、Visual Studio CodeでのSpring Bootをお読みください。
コード編集
コードの編集も、スマートなコード補完と署名の詳細を提供するIntelliSenseで簡単です。コードスニペットや、ゲッター/セッターの生成やインポートの整理などのさまざまなコードアクションを使用して、生産性をさらに向上させることができます。
Visual Studio CodeのJavaサポートは、コード内の問題を自動的に検出し、クイックフィックスの提案を提供します。
リファクタリングとコードアクションの詳細については、リファクタリングとソースアクションを参照してください。
IntelliSense
Visual Studio Code for Javaのコード補完は、Language Support for Java™ by Red Hatによって提供されます。この拡張機能は、Eclipseの背後にあるのと同じJava開発ツール(JDT)によって強化されているため、同じレベルのサポートが期待できます。
さらに、IntelliCodeと呼ばれるAI支援IntelliSenseもあります。最も可能性の高いものを補完リストの最上位に配置することで、時間を節約できます。IntelliCodeの推奨事項は、100を超える星が付いたGitHub上の数千のオープンソースプロジェクトに基づいており、高品質のプロジェクトからの最も一般的な使用法についてトレーニングされています。コードのコンテキストと組み合わせると、補完リストは、これらのプラクティスを促進するように調整されます。IntelliCode for Javaの動作を次に示します。
IntelliCodeは、Java SEやSpringなどの一般的なJavaライブラリおよびフレームワークとうまく連携します。モノリシックなWebアプリでも、最新のマイクロサービスでも役立ちます。
新しいファイルの作成
VS Codeは、Javaソースファイルを作成するときにテンプレートを適用することをサポートしています。ファイルエクスプローラーで.java
ファイルを作成すると、言語サーバーは自動的にクラス本体を生成し、パッケージ情報を入力します。
コードスニペット
Visual Studio Codeは、class/interface、syserr、sysout、if/else、try/catch、static main methodなど、さまざまな人気のあるJavaコードスニペットをサポートしており、生産性を向上させます。Java言語サーバーからの情報を使用して、選択中にコードスニペットのプレビューも提供します。
たとえば、「sout」または「sysout」と入力すると、System.out.println()
のコードスニペットが生成されます。
同様に、「main」または「psvm」と入力すると、public static void main(String[] args) {}
のコードスニペットが生成されます。
ショートカットの完全なリストを以下に示します
コードスニペットショートカット
ショートカットキー | 説明 |
---|---|
ctor | パブリックコンストラクター |
dowhile | Do-whileステートメント |
foreach、iter | 配列またはIterableを反復処理する |
fori | 配列を反復処理する |
if | Ifステートメント |
ifelse | If-elseステートメント |
ifnull | nullをチェックするIfステートメント |
ifnotnull | nullでないことをチェックするIfステートメント |
main、psvm | パブリックstatic mainメソッド |
new | 新しいオブジェクトを作成する |
private_method | プライベートメソッド |
private_static_method | プライベートstaticメソッド |
prf | プライベートフィールド |
protected_method | プロテクトメソッド |
public_method | パブリックメソッド |
public_static_method | パブリックstaticメソッド |
switch | Switchステートメント |
syserr、serr | 標準エラー出力に出力 |
sysout、sout | 標準出力に出力 |
systrace、soutm | 現在のメソッドを標準出力に出力 |
try_catch | Try/catchブロック |
try_resources | Try-with-resourcesステートメント |
while | Whileステートメント |
ポストフィックススニペットショートカット
ショートカットキー | テンプレートコンテンツ | 説明 |
---|---|---|
cast | ((SomeType) expr) | 式を新しい型にキャストします |
else | if (!expr) | 否定されたifステートメントを作成します |
for | for (T item : expr) | forステートメントを作成します |
fori | for (int i = 0; i < expr.length; i++) | 配列を反復処理するforステートメントを作成します |
forr | for (int i = expr.length-1; i >= 0; i--) | 配列を逆順に反復処理するforステートメントを作成します |
if | if (expr) | ifステートメントを作成します |
nnull | if (expr != null) | ifステートメントを作成し、式がnullに解決されないかどうかを確認します |
null | if (expr == null) | 式がnullに解決されるかどうかを確認するifステートメントを作成します |
sysout | System.out.println(expr) | 影響を受ける文字列をSystem.out.println(..)呼び出しに送信します |
throw | throw expr | 指定された例外をスローします |
var | T name = expr | 新しい変数を作成します |
while | while (expr) {} | whileループを作成します |