IntelliJ IDEA 2021.3の新機能

IntelliJ IDEA 2021.3 にはリモート開発(ベータ)のサポートが追加され、Repair IDE...(IDE の修復...)アクションを使った IDE 問題の新しいトラブルシューティング手法が導入されました。 また、その他の有益な変更とともに、デバッガーの更新や Kotlin の定数条件インスペクションの追加が行われています。 以下の簡単な説明では、これらの機能やその他の注目すべき機能などを詳細に記載しています。

主な更新内容

リモート開発

リモート開発
ベータ
Ultimate

IntelliJ IDEA Ultimate でベータ版のリモート開発ワークフローがサポートされるようになりました。 IntelliJ IDEA バックエンドを実行中のリモートマシンに世界中どこからでも接続できます。 すべての処理は高性能なリモートマシン上で行われ、ローカルマシンで作業しているかのように円滑にプロジェクトに取り組むことができます。 この機能は、IntelliJ IDEA のウェルカム画面から、または JetBrains Toolbox App で入手可能な JetBrains Gateway という新しいアプリケーションから開始できます。

さらに、開発環境の作成、事前ビルド、共有、複製、休止、管理には Space を使用することができます。Space はソフトウェア開発パイプライン全体をカバーする統合プラットフォームです。

詳細については、こちらのブログ記事をご覧ください。

IDE 問題のトラブルシューティング

IDE 問題のトラブルシューティング

IntelliJ IDEA 2021.3 には、IDE が正常に動作しない原因を診断し、それを迅速に解決するための手段が新たに導入されています。 IDE が正常に動作していない場合は、File(ファイル)メニューから新しい Repair IDE...(IDE の修復...)アクションを呼び出してください。 ごく一般的な問題を一連の手順に従ってトラブルシューティングできます。

Kotlin の定数条件インスペクション

Kotlin の定数条件インスペクション

新たに Constant conditions(定数条件)インスペクションを追加しました。このインスペクションは、静的に必ず true、false、null、またはゼロとなる非自明な条件と値を IntelliJ IDEA に報告させることができます。 Java 用の類似するインペクションと同じように動作し、ほぼすべての同じチェックがサポートされています。 この新しいインスペクションは、Preferences(環境設定)/ Settings(設定)| Editor(エディター)| Inspections(インスペクション)| Kotlin | Probable bugs(潜在的なバグ) にあります。

Kotlin に関するデバッガーの更新

スマートステップイン

チェーンメソッド呼び出しとラムダのある行をデバッグする場合に Step Into(ステップイン)アクションを使用すると、デフォルトで Smart Step Into(スマートステップイン)の機能が提供されます。 ステップインできるメソッドとラムダが強調表示されます。 この機能は、Debug(デバッグ)ツールウィンドウの上部ペインにある Step Into(ステップイン)ボタンをクリックするか、F7 ショートカットを使用すると呼び出せます。 IDE 内でコードにステップインできる箇所がハイライトされるため、必要な行をクリックして選択することができます。

スタックフレームのインライン化

デバッガーで Kotlin のインライン関数を検出し、スタックトレースパネルにインライン関数の呼び出しを表示できるようになりました。 このような呼び出しに移動して、フレームごとに変数を検査して評価することができます。

エディター

すべてのタブのフォントサイズを変更

ご要望にお応えし、同時に開いているすべてのタブのフォントサイズを ⌘+マウスホイール(macOS)または Ctrl+マウスホイール(Windows、Linux)で変更できるようにしました。 この機能を有効にするには、Preferences(環境設定)/ Settings(設定)| Editor(エディター)| General(一般)に移動し、Change font size with Command + mouse wheel in(Command / Ctrl + マウスホイールで次の場所のフォントサイズを変更する)を選択して All editors(すべてのエディター)を選択します。 Active editor(アクティブなエディター)を選択している場合、このショートカットは現在作業中のファイルのフォントサイズのみを変更します。

インテンションのプレビューを改善

IntelliJ IDEA には、インテンションアクションとクイックフィックスをコードに適用する前にその適用結果をプレビューできる便利なオプションがあります。 この機能は Intention actions(インテンションアクション)メニューから使用できます。 このプレビューを有効にするには、F1(macOS)または Ctrl+Q(Windows、Linux)を押してください。

インテンションのプレビューはバージョン 2020.1 で導入されて以来、継続的に改善されています。 IntelliJ IDEA 2021.3 では、より多くの Kotlin 用インテンションアクションとクイックフィックスで機能するようになり、未サポートのインテンションアクションに対する HTML 説明文が「Preview isn't available」(プレビューできません)メッセージからより分かりやすいメッセージに変更されています。 さらに、複数のファイルを変更するアクションについては、想定される結果が部分的にプレビューに表示されるようになっています。 この部分的な結果だけでも、アクションによる変更内容を全体的に把握するのに役立つはずです

Markdown サポートの改善

Markdown サポートの改善

IntelliJ IDEA 2021.3 では、簡単にテーブルを作成できます。 コンテキストメニューを呼び出して、Insert(挿入)| Table(テーブル) を選択してください。 これだけです!  マウスホバー操作かキーボードで希望するサイズを選択できます。

テーブルのセルの幅は、入力内容に合わせて調整されます。 テーブルの内容は、フロートツールバーを使って編集できます。

新しい行を作成するには Shift+Enter を使用し、次のセルに移動するには Tab を使用します。

タブのすべてのアクションへのクイックアクセス

タブのすべてのアクションへのクイックアクセス

エディターのタブの操作がさらに簡単になりました。 タブペインの右隅にある縦三点リーダーをクリックするだけで、タブの全アクションにアクセスできます。

ユーザーエクスペリエンス

新しい Bookmarks(ブックマーク)ツールウィンドウ

新しい Bookmarks(ブックマーク)ツールウィンドウを導入しました。これと非常によく似た Favorites(お気に入り)ツールウィンドウは、新しいツールウィンドウに置き換えられる予定です。 今後は、F3(macOS)または F11(Windows、Linux)ショートカットを使うだけで、ファイル、フォルダー、およびクラスを重要な項目としてマークすることができます。

IntelliJ IDEA でブックマークを追加すると、デフォルトでは Bookmarks(ブックマーク)ツールウィンドウ内のプロジェクトと同じ名前を含むノード内に追加されます。 新しいブックマークを追加するたびに、このノードのリストの上部にブックマークが表示されるようになります。 ブックマークは、ツールウィンドウの設定にある Sort Groups and Bookmarks(グループとブックマークの並べ替え)オプションを使って種類別に並べ替えることができます。 また、新しいノードを作成して、項目をドラッグアンドドロップすることも可能です。

Run(実行)ツールウィンドウの分割機能

Run(実行)ツールウィンドウの分割機能

バージョン 2021.3 では、タブで Run(実行)ツールウィンドウを分割できるようにしました。 これにより、複数の構成を同時に実行してすべての結果を確認することができます。

ウィンドウを分割するには、Run(実行)ツールウィンドウ内のハイライトされた領域に表示したいタブをドラッグアンドドロップします。 ウィンドウの分割を解除するには、上部ペインを右クリックし、コンテキストメニューから Unsplit(分割解除)を選択します。

Search Everywhere(どこでも検索)における ML ベースのアクション検索

Search Everywhere(どこでも検索)における ML ベースのアクション検索

アクションを検索する際、IntelliJ IDEA のSearch Everywhere(どこでも検索)がデフォルトで機械学習を使用するようになりました。 以下を考慮する ML ベースの方法をトレーニングしています。

  • 特定ユーザーのアクションの使用履歴。
  • 全ユーザーのアクションの使用頻度。
  • 検索クエリの長さ、アクションの名前など。

この ML ベースのモデルによって検索の質が高まり、特定のニーズに合った結果が返されるようになることを願っています。

Find Usages(使用箇所の検索)の改善

Find Usages(使用箇所の検索)の改善

⌥F7(macOS)または Alt+F7(Windows、Linux)を使ってメソッド実装の使用箇所を検索する際、IDE が基本メソッドの使用箇所を検索するかどうかを確認するポップアップを表示しなくなりました。 代わりに、IntelliJ IDEA は上位階層のメソッドをデフォルトのターゲットとして検索します。 この動作を変更する場合は、Find Usages(使用箇所の検索)ツールウィンドウの設定にある Search for base method usages(基本メソッドの使用箇所を検索)チェックボックスをオフにします。この設定は、歯車アイコンをクリックするとアクセスできます。

Show Usages(使用箇所の表示)の改訂

Show Usages(使用箇所の表示)ダイアログに、便利な新機能が追加されました。 見つかった使用箇所ごとにソースコードをプレビューする機能が導入されています。上部のツールバーペインにある矩形アイコンをクリックするとプレビューできます。 また、Preview(プレビュー)アイコンの横にある新しいドロップダウンリストで検索範囲を変更できるようになっています。 さらに、ウィンドウのタイトルバーに、検索中のコード要素の種類と見つかった件数が表示されるようになりました。

小さな変更ではありますが、ダイアログの幅を設定できるようにして利便性を大幅に高めています。この設定は、次にダイアログを呼び出した時にも記憶されています。

Empty Project(空のプロジェクト)の改良と新しい Multi-Module Project(マルチモジュールプロジェクト)ノード

バージョン 2021.3 では、IntelliJ IDEA プロジェクトウィザード内のノードが変更されていることにお気づきになるかと思います。

Empty Project(空のプロジェクト)ノードを選択して、種類の異なる個々のファイルを操作し、Java と Kotlin のクラスを追加するための基本プロジェクトを作成することができます。 IDE はプロジェクトを自動的に構成し、Java や Kotlin のクラスがある場合にコンパイルできるようにします。

新しい Multi-Module Project(マルチモジュールプロジェクト)ノードでは、複雑な構造を持つプロジェクトをゼロから作成することができます。 プロジェクトを作成したら Project Structure(プロジェクト構造)ダイアログが開き、さまざまなモジュールを追加することができます。

アクセシビリティの更新

IntelliJ IDEA 2021.3 では、スクリーンリーダーを使った作業をより楽に行えるように、アクセシビリティに関する課題がいくつか解決されています。 皆さまのご要望にお応えして、マウスホバーで表示されていたツールウィンドウウィジェットのポップアップとクイックドキュメントのポップアップを無効にしています。 また、Go to Declaration (宣言に移動)ダイアログの呼び出しに関する課題も修正しています。

このリリースでは、macOS でのアクセシビリティサポートも改善されました。 VoiceOver のフォーカスに関する複数の問題を解決し、プロジェクトを作成する際に New Project(新規プロジェクト)ウィザード内のリスト項目をスクリーンリーダーが検出できるようにしています。 コーディング中の集中力低下を最小限に抑えるため、音声付きヘルプツールチップの数も減らしました。

Java

安全でない文字列を追跡するインスペクション

IntelliJ IDEA が SQL インジェクションや XSS の欠陥、機密データの漏洩、および安全でない逆シリアル化などの危険が警告するようになりました。 また、安全でないデータを安全なメソッドに渡せないようにしています。 新たに追加されたこれらの警告は、新しい Non-safe string is passed to a safe method(安全でない文字列の安全なメソッドへの受け渡し)インスペクションが発します。

このインペクションを機能させるには、文字列に @Untainted ( “safe”) または @Tainted (“unsafe”) アノテーションを付与する必要があります。 これらのアノテーションは、org.checkerframework.​checker.​tainting.​qual 依存関係を追加すると有効になります。

その他の新しい Java インスペクション

コードを単純化するためのインスペクションを 2 つ追加しました。 1 つ目は、collect(toList()).toList() に置換するように提案します。 Java バージョン 16 以降で使用可能です。 もう 1 つのインスペクションは collection.addAll(List.of("x")) から collection.add(x) への置換、および map.putAll(Map.of("a", "b")) から map.put("a", "b") への置換を提案します。

改善されたリファクタリング

Java でローカル変数を導入する際、適用可能な設定がポップアップで表示されなくなりました。従来、このポップアップは記述中のコードを隠すように表示されていました。 代わりに、変数の横にある歯車アイコンをクリックするか、⌥⇧O(macOS)または Alt+Shift+O(Windows)のショートカットを使用してこれらの設定にアクセスできるようになりました。

また、Introduce parameter(パラメーターの導入)リファクタリングも改善しました。 ⌥⌘P(macOS)または Ctrl+Alt+P(Windows、Linux)でこのリファクタリングを呼び出すと、IDE から置換対象の出現箇所を指定するよう求められます。 指定後に表示される歯車アイコンをクリックすると、リファクタリングのその他の設定を構成できるようになります。

Run/Debug Configurations(実行/デバッグ構成)でクラスパスをカスタマイズ可能に

Run/Debug Configurations(実行/デバッグ構成)でクラスパスをカスタマイズ可能に

時には Run/Debug Configurations(実行/デバッグ構成)ダイアログで、構成ごとにカスタムクラスパスを定義する必要がある場合があります。 このバージョンからは Modify options(オプションの変更)| Modify classpath(クラスパスの変更)を選択してカスタマイズ可能になっています。

Kotlin

Extract constant(定数の抽出)リファクタリング

Extract constant(定数の抽出)リファクタリング

Kotlin で定数を抽出する新しいリファクタリングを導入しました。 このリファクタリングを使用するには、文字列にキャレットを置いて、⌥⌘C(macOS)または Ctrl+Alt+C(Windows、Linux)を押します。

Possibly blocking call in non-blocking context(ノンブロッキングコンテキストの潜在的なブロッキング呼び出し)インスペクションの改善

Possibly blocking call in non-blocking context(ノンブロッキングコンテキストの潜在的なブロッキング呼び出し)インスペクションの改善

Possibly blocking call in non-blocking context(ノンブロッキングコンテキストの潜在的なブロッキング呼び出し)は、誤ったコンテキストでコルーチンを使用していることを警告するインスペクションです。 このリリースでは、このインスペクションを警告のみならず、コンテキスト依存型クイックフィックスとしても機能させるようにしました。

さらに、その他の機能改善も行われています。 このインスペクションはより多くのケースをカバーするようになり、カスタマイズ可能であるため、特定の環境に合わせて適切に動作させることができます。

範囲のインラインヒント

範囲のインラインヒント

Kotlin がサポートしているさまざまな範囲の宣言は、分かりにくい場合があります。 範囲の宣言を少しでも分かりやすくするため、単純な数学記号を使って範囲内の語や文字の意味を説明するインラインヒントを追加しました。 この機能が不要な場合は、ヒント上で右クリックして Disable ‘Ranges’ hints type(‘範囲’ ヒントタイプ無効化)を選択すると簡単に無効化できます。

新規プロジェクトウィザードの改善

新規プロジェクトウィザードの改善

New Project(新規プロジェクト)ウィザードのレイアウトを改訂してすべてのフィールドにツールチップを追加し、入力に必要な情報を理解しやすくしました。 テンプレートセクションも更新されています。あまり使用されていないテンプレートを除去し、Compose ウェブアプリケーションを作成できる新しいテンプレートを追加しました。

さらに、プロジェクトのセットアップ手順も大幅に単純化されています。 今後は基本的なフィールドのみを入力するだけで十分です。

Scala

Scala 3 サポートの改善

Scala 3 サポートの改善

このリリースでは Scala 3 のサポートに重点を置いています。 end マーカーのハイライト、ナビゲーション、および自動補完を追加し、 givenusing、および export キーワード、ソフトキーワード、および quiet 構文(括弧を省略した構文)も自動補完されるようになりました。 TASTy Reader は、package object、および高カインド型の分散と境界を解析できるようになりました。 レクサーとパーサーエラーのハイライトは大幅に高速化しています。 Scala 3 対応のインスペクションも追加されています。 given インポートの解決を改善し、final トップレベルメンバーと abstract lazy val を新たにサポートしています。

Scala 3 / Scala 2 クロスコンパイルプロジェクトを Scala 2 として開くオプション

Scala 3 / Scala 2 クロスコンパイルプロジェクトを Scala 2 として開くオプション

Scala 2 と Scala 3 の両方用にコンパイルする必要のある多くのプロジェクトは、技術的には Scala 2 プロジェクトであっても、Scala 2 用にクロスコンパイルされた Scala 3 プロジェクトとしてモデル化されます。

このようなプロジェクトは Scala 2 として開くと、IDE が正しい Scala バージョンを使用できるようになり、信頼性が高まります。

Scala のデータフロー解析

Scala のデータフロー解析

Scala プラグインがデータフロー解析をサポートするようになり、プログラミングのエラーをより検出しやすくなっています。 詳細については、最近公開したブログ記事をご覧ください。

Scala コンパイラーオプションの自動補完

Scala コンパイラーオプションの自動補完

Scala コンパイラーには非常に多くのオプションがあり、それをすべて暗記しているプログラマーはほとんどいません。 さらに、これらのオプションは使用している Scala バージョンによって異なります。

このバージョンからは該当するオプションを自動補完し、各オプションのクイックドキュメントを閲覧できるようになりました。

範囲のインレイヒント

範囲のインレイヒント

1 to 3 という範囲が、境界値を含むのか含まないのか判断に迷ったことはありませんか? 1 until 3 はどうでしょうか? Range(1, 3) の場合は? もう迷うことはありません。答えは明白です。

JavaScript

依存関係アップデート用の新しいインスペクション

依存関係アップデート用の新しいインスペクション
Ultimate

IntelliJ IDEA 2021.3 では、エディターから npm パッケージを最新バージョンに直接アップデートできるようになりました! package.json ファイルを開き、アップデートするパッケージバージョンにキャレットを置いて ⌥⏎(macOS)または Alt+Enter(Windows、Linux)を押すと、Update ‘package name’ to the latest version(‘パッケージ名’ を最新バージョンにアップデート)を選択できます。 また、パッケージのバージョンにマウスを重ねるとクイックフィックスが表示されます。

HTML コード補完の改善

HTML コード補完の改善
Ultimate

HTML でコード補完が機能する仕組みを改善しました。 エディターにタグ名または略語を入力するか、コード補完を呼び出すと、IntelliJ IDEA がすぐに関連性の高い候補を表示します。 以前は、< を先頭に入力しなければ表示されませんでした。 また、文字エンティティ参照のコード補完動作も改善されています。

SSH

SSH 接続用プロキシのサポート

これは、Preferences(環境設定)/Settings(設定)| Tools(ツール)| SSH Configurations(SSH 構成)SSH 構成に HTTP または SOCKS プロキシサーバーを指定できる待望の新機能です。 新しい HTTP/SOCKS セクションでプロキシの種類を選択してホスト名とポートを入力し、必要であればユーザー名とパスワードによる認証を適用することができます。 また、SSH プロキシ設定をグローバル IDE のプロキシ設定に同期させることも可能です。 これを行うには、Use global IDE proxy settings(グローバル IDE プロキシ設定を使用する)チェックボックスをオンにしてください。

プロファイラ

.jfr スナップショットの比較

.jfr スナップショットの比較
Ultimate

適用した変更がプログラムに適していたか、あるいはリグレッションが発生していないかを簡単に確認できるようになりました。 比較対象の 2 つのスナップショットを Profiler(プロファイラー)ツールウィンドウで開くだけで確認することができます。 最近のスナップショットで diff(差分)アイコンをクリックし、基準として使用するスナップショットを選択します。 結果は、フレームグラフ、呼び出しツリー、またはメソッドリスト形式で、IDE に表示されます。

Windows での Async Profiler 2.0 サポート
Ultimate

バージョン 2021.2 では、macOS および Linux バージョンの IntelliJ IDEA で Async Profiler 2.0 を新たにサポートしました。 バージョン 2021.3 からは、Windows バージョンでも初期状態で Async Profiler 2.0 がサポートされています。 このサポートにより、より円滑なプロファイリングエクスペリエンスを得られるようになり、スナップショットでのネイティブ関数の表示方法も改善されています。

ビルドツール

Maven 構成の再設計

Maven 構成の再設計

このリリースでは Run/Debug(実行/デバッグ)構成に若干の改善が加えられており、今回は Maven 構成が大幅に再設計されています。 重要なパラメーターは 1 つの画面にまとめられており、その他のオプションには Modify options(オプションを変更)からアクセスできます。

.mvn/maven.config のサポート

.mvn/maven.config のサポート

.mvn/maven.config ファイルでプロジェクトごとの Maven 設定を構成する場合、Preferences(環境設定)/ Settings(設定)| Build, Execution, Deployment(ビルド、実行、デプロイ)| Maven に移動し、画面の下にある Use settings from .mvn/maven.config(.mvn/maven.config の設定を使用する)を選択します。 このファイルの設定によって標準の Maven UI 設定がオーバーライドされることに注意してください。

バージョン管理

リモートブランチ対応の Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)

リモートブランチ対応の Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)

選択したブランチをチェックアウトして、現在チェックアウトされているブランチでリベースする必要がある場合、Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)アクションを使用します。以前は、ローカルブランチのみで使用できる機能でしたが、 IntelliJ IDEA 2021.3 では、リモートブランチでも使用できるようになっています。

VCS 設定の再構成

Preferences(環境設定)/Settings(設定)| Version Control(バージョン管理)配下にある設定の構造を改善し、一部の重要な構成を見つけやすくしました。 Version Control(バージョン管理)ノードは操作の出発点として機能し、使用可能なすべての設定へのリンクを含んでいます。 そこから Git ノードに移動すると、すべての設定が、Commit(コミット)、Push(プッシュ)、Update(更新)といった最も重要なプロセスを処理するセクションに分割されていることが分かるかと思います。 また、これらのセクション内のパラメーターはより論理的な方法で構成されています。 さらに、Directory mappings(ディレクトリマッピング)に個別のノードを追加し、バックグラウンド操作はデフォルトでオンになるように変更されています。 Background(バックグラウンド)ノードは無くなりました。

新しい Changes(変更)ツールウィンドウ

新しい Changes ツールウィンドウ

IntelliJ IDEA 2021.3 より、差分をエディターの左側にある個別の Changes(変更)ツールウィンドウに表示するようになりました。

新しい Push All up to Here(ここまでのすべてをプッシュ)アクション

新しい Push All up to Here(ここまでのすべてをプッシュ)アクション

確信のあるコミットのみをプッシュし、残りは後でプッシュするように残しておく新しいアクションが追加されています。

Git ツールウィンドウの Log(ログ)タブで選択したコミットまでのコミットをプッシュすることができます。 これを使用するには、最後にプッシュするコミットを選択し、それを右クリックしてコンテキストメニューを呼び出し、新しい Push All up to Here(ここまでのすべてをプッシュ)アクションを選択してください。

Align Changes Highlighting(変更のハイライト表示を整列)

Align Changes Highlighting(変更のハイライト表示を整列)

Diff(差分)画面の設定に新しい Align Changes Highlighting(変更のハイライト表示を整列)オプションを追加しました。歯車アイコンから使用できます。 これは Diff を読みやすくする機能です。変更のない行を整列して横並びに表示するため、特に複雑な変更がある場合に役立ちます。 追加または除外されたコードをより明確に確認できるようになります。

ターミナル

Windows での ConPTY サポート

Windows での ConPTY サポート

In v2021.3, we’ve introduced support for the new ConPTY API on Windows. It addresses several issues users were having with the old implementation, which was based on winpty, and adds support for 24-bit colors in the terminal.

先行入力サポート

先行入力サポート

IntelliJ IDEA ターミナルが新たに先行入力をサポートし、予測したテキストの変更をライトグレーで即時に表示するようになりました。 この機能により、ローカルマシンでもリモートマシンでも同じ速さでターミナルに入力することができます。

デバッガー

デバッガーでの式の評価

デバッガーでの式の評価

このリリースでは、Evaluate(評価)機能が見つけやすくなりました。 これまでは何かを評価する必要がある場合、多くのユーザーはウォッチの使用に頼っていました。 具体的には、Evaluate(評価)ダイアログを使用する代わりに、ウォッチを作成して削除していました。 そこで、最も便利な式の評価手段をより見つけやすくするため、Evaluate(評価)フィールドを Debug(デバッグ)ツールウィンドウからアクセスできるようにしました。

フレームワークとテクノロジー

HTTP クライアントの gRPC リクエスト
Ultimate

IntelliJ IDEA の HTTP クライアントでは、gRPC リクエストの基本的なサポートを提供しています。 GRPC キーワードを入力してリクエストを開始すると、HTTP クライアントがコードを補完します。 したがって、IDE はすべての既知の gRPC サービス、特定のサーバーの単項およびサーバーストリーミングメソッドのほか、最も重要なリクエスト本文のフィールドについてプロンプトを表示します。

もう一つの新機能を使用すると、HTTP クライアントで gRPC リクエストを生成できます。 .proto ファイルでガターアイコンをクリックするだけで実行できます。

HTTP クライアントでのバイナリレスポンス

HTTP クライアントでのバイナリレスポンス
Ultimate

HTTP クライアントはレスポンス内の画像を検出し、レスポンスコンソールにそのプレビューを表示することができます。

HTTP クライアントでのテキストストリームと JSON ストリームのサポート
Ultimate

IntelliJ IDEA でストリーミングアプリケーションをテストする際、HTTP クライアントがオンザフライで出力を表示するようになったため、ストリーミングが終了するのを待つ必要が無くなりました。 これは、text/event-streamapplication/stream+JSON、および application/x-ndjson のコンテンツタイプを新たにサポートすることで実現しています。 ストリーミングが終了した場合も通知が表示されます。

HTTP クライアントでのカスタムファイルまたはディレクトリへの出力リダイレクト
Ultimate

HTTP クライアントでは、出力をカスタムファイルまたはディレクトリにリダイレクトできます。 強制リダイレクトとソフトリダイレクトの 2 つの演算子を使用できます。

  • >> 演算子は必ず新しいファイルを作成します。リクエスト対象のファイル名がすでに存在する場合は、ファイル名に -n の接尾辞を追加します。
  • >>! 演算子は、ファイルがすでに存在する場合にそのファイルを書き換えます。

HTTP リクエスト識別子のサポート
Ultimate

リクエスト識別子を @name によるコメントとして、または最初の区切り文字(###)のテキストとして追加できます。 IDE はこれらの識別子を理解するため、Services(サービス)ツールウィンドウからだけでなく、Run Configuration(実行構成)、Run Anything(何でも実行)、Search Everywhere(どこでも検索)ダイアログから、識別子を使ってリクエストを呼び出すことが可能です。

Qute テンプレート言語のサポート

Qute テンプレート言語のサポート
Ultimate

Qute がサポート対象のテンプレート言語に追加されました。 つまり、IntelliJ IDEA で Quarkus プロジェクトのテンプレートを作成する際にコードハイライト、自動補完、およびその他の便利な機能を使用することができます。

補助仕様ファイルからの参照解決と補完

補助仕様ファイルからの参照解決と補完
Ultimate

IntelliJ IDEA は OpenAPI 仕様が複数のファイルに存在し、$ref でリンクされていることを検出できます。また、対応する補完を提供します。

Reactive コードの新しいブロッキングおよびノンブロッキングアノテーション

Reactive コードの新しいブロッキングおよびノンブロッキングアノテーション
Ultimate

We’ve made 2 additions to the JetBrains annotation collection. プロジェクト依存関係に 'org.jetbrains:annotations:23.0.0' を追加すると、クラスとメソッドに @Blocking または @NonBlocking のアノテーションを付与できます。 これにより、IDE が Kotlin コルーチンや Project Reactor、RxJava、および SmallRye Mutiny を使用したリアクティブなコードなど、ノンブロッキングコンテキスト内のコードブロッキング呼び出しを検出できるようになります。

さらに、IDE は Micronaut および SmallRye Mutiny の対応するアノテーションを自動的にサポートします。

Spring と Java EE におけるブロッキングコード検出の改善

Spring と Java EE におけるブロッキングコード検出の改善
Ultimate

IntelliJ IDEA では、Spring Data の JpaRepository と CrudRepository、RestTemplate と JdbcTemplate、Spring Feign インターフェースメソッド、JPA EntityManager の呼び出し、および @Transactional アノテーションが付いたすべてのメソッドとクラスなど、Spring と Java EE のブロッキングコードについて、さらに多くのケースを検出するようになりました。

Spring Boot 構成の改修

Spring Boot 構成の改修
Ultimate

Spring Boot プロジェクトのRun/Debug Configurations(実行/デバッグ構成)ダイアログを作り直しました。 以前に更新された Java 用の構成と同様の設計です。 新しいインターフェースでは重要な設定が 1 つの画面にまとまっており、他のパラメーターは Modify Options(オプションを変更)から構成できるようになっています。

Spring Boot アプリケーションファイルのサポートを改善

Spring Boot アプリケーションファイルのサポートを改善
Ultimate

IntelliJ IDEA で spring.config.import キーが別ファイルの参照用に使用されている場合に、追加の構成ファイル(プロパティまたは .yaml ファイル)でコード補完機能を使用できるようになりました。 複雑なカスタム Spring Boot 構成ファイルのセットアップも改善されています。

application.yaml への参照

application.yaml への参照
Ultimate

Spring Boot プロジェクトに関し、IDE が @Value@Scheduled、および Environment.getProperty() から application.yaml への参照のコード補完と使用箇所の検索をサポートするようになりました。

Spring Data リポジトリから使用される @NamedQuery のサポート改善

Spring Data リポジトリから使用される @NamedQuery のサポート改善
Ultimate

クエリメソッドの補完が Spring Data JPA プロジェクトで @NamedQuery として宣言されているクエリに機能するようになりました。 また、ガターアイコンから @NamedQuery の定義に移動することもできます。

Kotlin の Java EE CDI サポート
Ultimate

バージョン 2021.3 以降は、Kotlin ファイルですべての CDI インスペクションを使用できます。 これらのインスペクションは以前、Java ファイルでのみ機能していました。 また、Kotlin ファイルに CDI ガターアイコンを追加しました。 インジェクションポイントやインジェクション候補、Bean メーカー、ディスポーザーメソッド、およびイベントに簡単に移動することができます。

UML クラスダイアグラムの改善
Ultimate

Java および Kotlin の両方で、UML クラスダイアグラムのすべての処理を高速化しました。 ダイアグラムを開いたり、カテゴリ間を切り替えたり、ズームや元に戻す/やり直す機能にかかる時間が大幅に短縮されています。 その他にも新しいグリッド、メンバーのハイライト、およびクイックドキュメントのプレビューポップアップなどの注目すべき変更があります。

ダイアグラムの外観を制御する必要がある場合は、コンテキストメニューを使って Appearance(外観)を選択してください。

データベースツール

データエディターの集計

データエディターの集計
Ultimate

範囲選択したセルを集計する Aggregate(集計)ビューを表示する機能を追加しました。 データ管理に役立ち、余計なクエリを書く手間を省ける待望の機能です! この機能追加により、データエディターに Excel や Google スプレッドシートにより近い性能と使いやすさが備わりました。

ビューで表示するセル範囲を選択し、右クリックして Show Aggregate View(集計ビューの表示)を選択してください。

DDL データソースと実際のデータソースのマッピング

DDL データソースと実際のデータソースのマッピング
Ultimate

このリリースは、実際のデータソースに基づいて DDL データソースを生成する機能を導入した過去のリリースを必然的に引き継いでいます。 このリリースでは、このワークフローが完全にサポートされています。 以下の操作を実行できます。

  • 実際のデータソースから DDL データソースを生成する: 2021.2 の発表をご覧ください。
  • DDL データソースを実際のデータソースにマッピングします。
  • これらのデータソースの比較と同期を双方向で行います。

念のために説明しておきますが、DDL データソースはある SQL スクリプトのセットに基づくスキーマを含む仮想データソースです。 これらの SQL スクリプトファイルを VCS に格納すると、バージョン管理システム(VCS)でデータソースを管理することができます。

データ構成プロパティに DDL mappings(DDL マッピング)という新しいタブを追加しました。このタブでは、どの実際のデータソースをどの DDL データソースにマッピングするかを定義できます。

DDL データソースと実際のデータソースのマッピング

新しい Database Diff ウィンドウ
Ultimate

新しい Database Diff(データベース差分)ウィンドウがコンテキストメニューから使用できるようになりました。 このウィンドウにはより優れた UI が備わっており、右側のペインには同期を実行した後に得られる結果が明確に表示されます。

右側のペインには、発生しうる結果を色で示した凡例が表示されます。

  • 緑、斜体: オブジェクトが作成されます。
  • グレー: オブジェクトが削除されます。
  • : オブジェクトが変更されます。

結果スクリプトは Script preview タブに表示されます。この結果スクリプトは新しいコンソールで開くことも、このダイアログから実行することもできます。 このスクリプトを実行すると、右にあるデータベース(ターゲット)を左にあるデータベース(ソース)のコピーにする変更が適用されます。

Script preview タブに加えて、下のペインに Object Properties Diff タブと DDL Diff タブがあります。 これらのタブには、元のデータベースとターゲットデータベースに含まれるオブジェクトの特定バージョン間の差分が表示されます。

イントロスペクションのレベル

イントロスペクションのレベル
Oracle
Ultimate

Oracle データベースのイントロスペクションに 3 つのレベルを導入しました。

  • レベル 1: インデックス列の名前とプライベートパッケージ変数を除くすべてのサポート対象オブジェクトの名前とシグネチャ。
  • レベル 2: ソースコードを除くすべて
  • レベル 3: すべて

イントロスペクションの速度はレベル 1 が最も速く、レベル 3 が最も遅くなります。 イントロスペクションのレベルは、コンテキストメニューを使用して適宜切り替えられます。

イントロスペクションのレベルは、スキーマまたはデータベース全体に設定できます。 スキーマのイントロスペクションレベルはデータベースから継承されますが、個別に設定することも可能です。

イントロスペクションのレベルは、データソースアイコンの横にカプセル剤のようなアイコンで示されます。 カプセル剤が一杯になるほど、レベルが高くなります。 青色のアイコンはイントロスペクションのレベルが直接設定されていることを示し、グレーのアイコンは継承されていることを示します。

QA ツール

ページオブジェクトエディター

Selenium ページオブジェクトの編集

大規模な更新を行ない、Selenium での UI テストの自動化を新たにサポートしています。具体的には、ビジュアルエディターが既存のページオブジェクトクラスを維持できるようになっています。 以前は新しいページオブジェクトクラスを生成することしかできませんでしたが、今回のアップデートにより、ビジュアルエディターを使用せずに既存のページオブジェクトクラスを直接更新できるようにもなっています。 IntelliJ IDEA は自動的にページオブジェクトクラスを検出し、ガターパネルの対応するアイコンでそれらを示します。 そのガターパネルをクリックすると、ビジュアルエディターを開いて、ページオブジェクトクラスに追加される新しい要素を取得することができます。

テストデータ

テストデータ

Test Automation Kit に含まれる最新のプラグインでは、いくつかの小さなバグが修正されているほか、複数のデータジェネレーター設定で便利な機能が追加されています。 これにより、複数行の定義で、接頭辞、接尾辞、および区切り文字を変更できるようになっています。

テスト管理

テスト実行の階層

複数階層のテスト実行を新たにサポートしました。 特定の機能ドメインまたはテストの種類に複数の子テスト実行を作成できるようになっています。 各親テスト実行は子テスト実行の結果を集計し、関連するすべての下位テスト実行から収集した概要統計を提供します。

共有ステップ

Markdown ファイルで「ローカル TMS」機能を使用してテストケースを管理すると、テストステップを簡単に宣言し、それらを複数のテストケースで共有することができます。 共有ステップは、一意の数値 ID が割り当てられた通常のテストケースとして宣言されます。 別のテストケースでそのテストケースを参照すると、IntelliJ IDEA がプレビュー、テスト実行、または自動テストのコードテンプレートを生成する際に、参照されたテストケースステップを置き換えます。

Kubernetes

Helm テンプレートの整形を改善

Helm テンプレートの整形を改善
Ultimate

Helm テンプレートを整形して、正しい結果を確実に得ることができます。 関連するすべての課題が修正されたため、整形の信頼性がはるかに高くなっています。 改善を確認するには、Code(コード)| Reformat code(コードの整形)または Reformat file(ファイルの整形)に移動するか、⌥⌘L (macOS)または Ctrl+Alt+L(Windows、Linux)を押してください。

Helm テンプレート内ブロック要素のハイライト

Helm テンプレート内ブロック要素のハイライト
Ultimate

Helm テンプレート内にある ifelserangewith、および define などのブロック要素をハイライトする機能を追加しました。 これにより、Go テンプレートのインクルージョンが含まれるコードでの作業がはるかに簡単になります。

ConfigMap リソースの言語インジェクション

ConfigMap リソースの言語インジェクション
Ultimate

IntelliJ IDEA が .yaml.json.properties などの拡張子が付いたキーの ConfigMap リソースでさまざまな言語の自動コードインジェクションをサポートするようになりました。 注入されたコードは緑でハイライトされ、コード補完、エラーのハイライトなどのコードインサイト機能を使用することができます。

最後のコマンドを繰り返す機能

最後のコマンドを繰り返す機能
Ultimate

Services(サービス)ツールウィンドウから、最後の Helm コマンドを再実行できるようになりました。 右上の新しいアイコンをクリックするだけで再実行されます。 例えば、helm lint コマンドを実行して完了した後にこのアイコンをクリックすると、同じコマンドが繰り返されます。

Docker

Minikube からの Docker への接続

Minikube からの Docker への接続

Minukube から Docker デーモンへの接続が簡単になりました。 Preferences(環境設定)/ Settings(設定)| Build, Execution, Deployment(ビルド、実行、デプロイ)Minikube ラジオボタンをオンにしてください。 その横にあるフィールドに、検出された Minikube の docker-daemon 環境が自動的に表示され、それを使用して接続することができます。

接続手順の簡略化

接続手順の簡略化

必要なノードをダブルクリックするか、⌘Enter(macOS)または Ctrl+Enter(Windows、Linux)ショートカットを使用するだけで、Docker により迅速に接続できるようになりました。 このショートカットを使用して、Start container(コンテナーの起動)アクションを呼び出すことも可能です。

新しい Clean up(クリーンアップ)アクション

新しい Clean up(クリーンアップ)アクション

The new Clean up action works just like the prune terminal command. Networks(ネットワーク)、Volumes(ボリューム)、Containers(コンテナー)、または Images(イメージ)ノードで右クリックすると、Clean up(クリーンアップ)を選択できます。すると、IDE によって未使用のオブジェクトが削除されます。 また、このアクションを Docker ルートノードに適用すると、ワンクリックですべての不要なオブジェクトを除去できます。

Compose V2 のサポート

IntelliJ IDEA supports Compose V2, which allows you to run Docker Compose commands as docker compose, instead of docker-compose (with a dash).

このオプションを有効にするには、Preferences(環境設定)/Settings(設定)| Build, Execution, Deployment(ビルド、実行、デプロイ)| Docker | Tools(ツール)に移動して、Use Compose V2(Compose V2 を使用する)チェックボックスをオンにしてください。

イメージレイヤー

イメージレイヤー

Image layers allow you to track all the commands that are applied to images. イメージレイヤーにアクセスするには、イメージを選択して Layers(レイヤー)タブに移動します。 そこから、コマンドを選択して画面の右側にある Analyze image for more information(イメージを解析して詳細を得る)リンクをクリックすると、各レイヤーに適用された変更に関する詳細な情報が表示されます。

コンテナーをイメージとして保存

コンテナーをイメージとして保存

後で使用したい事前構成済みのコンテナーがある場合、それをローカルにイメージとして保存してプッシュすると、必要な時にリモートでそれを使用し続けることができます。 Services(サービス)ツールウィンドウに移動し、コンテナーを右クリックして Image(イメージ)| Save as a new Image(新規イメージとして保存)を選択します。

レジストリの更新

Docker レジストリにいくつかの変更を追加しました。 First off, the IDE now displays all available registries in separate nodes in the Services tool window. 以前は、Docker Hub レジストリのみでサポートされていた機能です。 バージョン 2021.3 では、GitLab(registry.gitlab.com)JetBrains Space(<ユーザー名>.registry.jetbrains.space) が新たにサポートされています。

Services(サービス)ツールウィンドウのレジストリノードを展開し、必要なイメージを選択して、希望する場所にプルすることができます。 Docker 接続が複数存在する場合、IDE からイメージをプルする宛先を指定するよう求められます。 イメージは任意の追加レジストリにプッシュできます。Push(プッシュ)ダイアログでは、IDE によって所定のレジストリ内で使用可能な名前空間が自動的に検出され、ドロップダウンリストから 1 つを選択することができます。

また、JetBrains SpaceGitLab、および Docker Hub レジストリのイメージに対し、イメージ補完を使用できます。

Podman サポート

IntelliJ IDEA now supports Podman as an alternative way to manage pods, containers, and images. Before using Podman in the IDE, configure a connection yourself.

OS への Podman のインストールと構成が完了すると、Preferences(環境設定)/Settings(設定)| Build, Execution, Deployment(ビルド、実行、デプロイ)| Docker から、TCP socket(TCP ソケット)ラジオボタンを選択して必須フィールドに入力すると、その Podman に接続できます。

Space との連携機能

IDE からのマージリクエストとコードレビューの作成

Space でプロジェクトのマージリクエストとコードレビューを作成できるようになりました。 以下の 2 つの方法があります。

  • Code Reviews(コードレビュー)ツールウィンドウの上部にあるツールバーで、 + アイコンをクリックし、目的のアクションを選択する。
  • Git ツールウィンドウの Log(ログ)タブで、リスト内のコミットを右クリックし、Space | Create merge request(マージリクエストの作成)または Create code review(コードレビューの作成)を選択します。

詳細については、こちらのブログ記事または以下の GIF をご覧ください。

ファイルを表示済みとしてマーク

ファイルを表示済みとしてマーク

コードレビューを実施する時点でまだ変更を加えていないすべてのファイルは、開かれるまで青いドットが付いたままになります。 そのため、重要な変更を見落とすことはありません。 後でその変更箇所に戻る場合は、コンテキストメニューから Mark as Not Viewed(未表示としてマーク)を選択します。 この機能は、GitHub のプルリクエストでも機能します。

その他

  • IntelliJ IDEA で、Android Studio Arctic Fox、2020.3.1 がサポートされるようになりました。
  • 本格的なコードインサイト、機能的なインスペクション、インテンションアクションを含め、新たに Groovy 4 のサポートを開始しました。 Additional features, such as switch expressions and sealed types, are supported as well.