IntelliJ IDEA 2019.3:パフォーマンスと品質の向上

JetBrainsの主力IDEの今年最後となるメジャーリリース、IntelliJ IDEA 2019.3をリリースしました!

このIntelliJ IDEAの新バージョンでは、IDEのパフォーマンスと全体的な品質に注力しました。 弊社はIntelliJ IDEAチームとその他複数のJetBrains開発者チームを結集し、長期間にわたって品質改善に取り組みました。その間は特にIDEに磨きをかけることに注力し、パフォーマンス改善、UIの応答性の修正、ユーザービリティの強化、既存機能の改善などを行いました。

このリリースサイクルの優先度をより明確に定義するため、皆様からのフィードバックがこれまで以上に重要になっています。このリリースサイクルでは、合計3900票以上を獲得した1600件以上の課題を解決しました。

また、新しいマイクロサービスフレームワーク(Micronaut、Quarkus、Helidonなど)への対応や長く待ち望まれていたMongoDBへの対応など、進行中の複数のプロジェクトについても作業を進めました。

これらの取り組みにより、IntelliJ IDEAによる開発をより楽しんでいただけることを願っています。

blog@2x (3)

詳細については以下をご覧ください。

パフォーマンス向上

弊社はIntelliJ IDEAのパフォーマンス改善に注力し、次のような結果を達成することができました。

  • IDEの起動を高速化
  • 全体的なUIの応答性を向上し、UIやエディタのフリーズを削減
  • Gradleプロジェクトのインポート処理を中心にメモリ消費量を削減

今年の最優先目標の一つは、起動時間の短縮でした。 この目標を達成するため、IntelliJプラットフォームに多数の重要な変更を加えました。逐次実行していた一部のプロセスを並列化したり、最初のクラスが高速に読み込まれるようにクラスを整理したり、macOSでのフォントの読み込みを最適化したりしました。

弊社はUIの応答性改善にも多くの注意を払ってきました。 弊社はIntelliJ IDEAのさまざまな部分で発生していたUIのフリーズに解消に注力してきました。ユーザーインターフェースが無反応になるのを好む人はいないからです。 UIのフリーズの問題について、より簡単にご報告いただけるようになりました。また、このリリースサイクルではこの機能を用いてご報告いただいた問題の解消に取り組みました(ありがとうございました!)。 1600件以上の報告で、UIのフリーズを引き起こしていた多数の問題を解決できました。

さらに、Find in pathで正規表現のパターンが非常に長い文字列にマッチする場合や、多数のエディタタブやデバッガタブで作業する場合でもIntelliJ IDEAがフリーズすることはなくなりました。 IDEのプロジェクトツリーの描画速度も向上しました。

また、多大な労力を費やしてJavaの型推論を最適化し、その他さまざまなエディタのフリーズも解消しました。 Javaのパフォーマンス改善に関して言えば、長いメソッド呼び出しチェーンのJava型推論が大幅に高速化されています。 多数の引数が渡される汎用的な可変長引数(Arrays.asList、Map.ofEntriesなど)を使用したメソッドを中心に、Javaファイルでコードのハイライト表示を高速化しました。 Join Linesアクションを一度に多数の行に対して呼び出した場合のパフォーマンスも改善しました。

Kotlinプラグインバージョン1.3.60をIntelliJ IDEAにバンドルすることで、エディタによるKotlinファイル内のハイライト表示も高速化されました。

イベントの処理や無視ファイルの取り扱いを最適化することで、バージョン管理サブシステムのパフォーマンスを最適化しました。 大規模プロジェクトでのフリーズが削減され、ステータスが高速に更新されるようになりました。

Buildサブシステムでは、大規模なGradleプロジェクトをインポートする際のピークメモリ消費量を削減しました。 Mavenプロジェクトに関しては、pom.xmlファイルを編集する際のフリーズを削減しました。このため、補完候補が遅延なく表示されるようになりました。

この達成結果には満足していますが、弊社の取り組みはまだ完了していません! 今後もこの取り組みを続ける予定ですので、次のリリースでは起動時間のさらなる高速化とさらなる最適化を期待できます。

既存機能の品質向上

IntelliJ IDEAには豊かなプラグインエコシステムが備わっているため、弊社プラグインリポジトリを通して多数の素晴らしいプラグインをご利用いただけます。 しかし、プラグインの管理が若干面倒なのが欠点でした。プラグインを読み込みや削除を行うたびに、IDEを再起動する必要があったからです。 そこで、IntelliJ IDEA 2019.3では土台となるコアインフラストラクチャを実装し、動的なプラグインのインストールに対応することで、この問題を解決しました。 つまり、基本的にIDEを再起動することなくプラグインを読み込んだり、削除したりできるようになりました。 現在、この機能はテーマやキーマッププラグインでのみ有効化されています。 ただし、今後のリリースではほとんどのプラグインにこの機能を拡張する予定です。 これは、プラグイン管理を可能な限り楽にするための最初のステップです。

バージョン管理サブシステムでユーザビリティに関する多数の改善が行われました。 分かりやすくするため、Checkout as Actionを削除して代わりに2種類の新しい別のアクション(New Branch from SelectedとCheckout)を導入することで、Gitのチェックアウトワークフローを改善しました。 新しいNew Branch from Selectedアクションは新しいブランチを作成しますが、追跡する設定は行いません。Checkoutアクションは通知なしで新しいローカルブランチを作成してそれをチェックアウトし、同名のローカルブランチが存在しない場合に選択したリモートブランチを追跡する設定を行います。

各種ホスティングサービスからプロジェクトを取得するUIを統一するため、Cloneダイアログを改修しました。 このダイアログからログインすると、またはログイン済みの場合、アカウントや組織別にグループ化されたすべてのリポジトリのリストをすぐにプレビューできます。

また、ブランチにプッシュする簡単な方法が実装されたため、ブランチにプッシュするために対象ブランチをチェックアウトする必要がなくなりました。今後はBranchesポップアップで必要なブランチを見つけ、それをプッシュするだけです。 また、名前を変更したファイルや移動したファイルのために、ファイル履歴にファイル名の列を追加しました。 もう一つの有益な改善点は、.gitignore(または.hgignore)リストに記載されたファイルも強制的にGit(またはMercurial)に追加できるようになったことです。

IntelliJ IDEA 2019.2では基本的なJava 13対応を行いましたが、このリリースではJava 13のテキストブロック対応を大幅に改善しました。 最近、これらの変更に関する詳細な情報を記載したブログ投稿(英)を公開しました。

新たにField Call Hierarchyアクションが追加されました。 Ctrl+Alt+H(Windows、macOS、Linux)を使用するだけで、選択したフィールドの階層を表示できるようになりました。 これにより、すべての要素がより明確化されます。

Show quick documentation on mouse moveチェックボックスが有効な状態でマウスポインタを警告やエラーの上に移動すると、警告やエラーの説明とコードの参照情報が統合されたツールチップが表示されるようになりました(以前はドキュメントの代わりにインスペクションのツールチップのみが表示されたり、時には2つのポップアップが同時に表示されたりすることもありました)。

intention actionのデフォルト動作が変更され、intention actionを選択してからダイアログをキャンセルした場合にインテンションアクションが候補リストから消えなくなりました。

Servicesツールウィンドウが常に表示されるようになり、同ウィンドウ内から直接設定できるようになりました。 さらに、同ツールウィンドウから特定の実行構成を非表示にできるようになりました。

その他の有益な改善点:

  • 型の不一致に関するツールチップが改修され、可読性が向上しました。
  • プロジェクトを開く際、IntelliJ IDEAがプロジェクト名を表示するようになりました。
  • Inject langaugeで挿入できるテンプレート言語が増えました。具体的には、Pug(旧Jade)、Handlebars、EJS、Slimを挿入できるようになりました。
  • マウスホイールを使ったスクロールがよりスムーズになりました。
  • Preferences/Settings | Appearance & Behavior | AppearanceでUse contrast scrollbarsチェックボックスにより、スクロールバーの視認性を向上できるようになりました。

新しいフレームワークとテクノロジーへの対応

このリリースは品質改善を目標としていますが、長らく手掛けていた複数の重要な機能を導入できる状態になりました。 以下に記載する素晴らしい新機能はすべて、IntelliJ IDEA Ultimateでのみご利用いただけるものです。

このリリースサイクルの準備を開始するずっと前から、マイクロサービスに関しては多くの話題がありました。 弊社はある時点で、開発プロセスをより快適にし、マイクロサービスベースのアーキテクチャを採用したJavaプロジェクトやKotlinプロジェクトの開発に一般的に使用されるフレームワークやテクノロジーに対応できるのではないかと考えるようになりました。 このリリースではなんとかマイクロサービスに対応する時間を確保できたため、統合に取りかかることにしました。

まず、新世代のマイクロサービスフレームワーク(具体的にはMicronaut、Quarkus、Helidon)に対応した豊富なコーディング支援やナビゲーションを追加しました。 また、Spring上でリアクティブなウェブサービスを使用するユーザーを考慮し、Spring Web Fluxへの対応も行いました。

通常、マイクロサービスはHTTPやWebSocketを使用して互いに通信するため、弊社は次のステップとして一般的なJava HTTPクライアントAPI(java.net.URI / URL、Retrofit v2、OkHttp v3)のほか、一般的なサーバーサイドフレームワーク用のクライアントライブラリ(Spring Feign、MicroProfile REST Clientなど)への対応を行いました。 この新たな対応強化により、HTTPやWebSocketのAPIのURL補完とナビゲーションという素晴らしい機能が実装されました。

次のステップでは、プロジェクトで素晴らしいエンドポイントレイアウトを提供できると考え、新しいEndpointsツールウィンドウを追加しました。 このウィンドウにはクライアントAPIとサーバーAPIの両方が集約されて表示されます。 このウィンドウにはいずれHTTPのみならず、メッセージング、gRPC、GraphQLを含むすべてのAPIが集約されます。

さらに、APIドキュメント仕様への対応を拡充しました。 このリリースでは、Swagger v2とOpenAPI Specification v3への対応が行われました。 IDEのAPIの説明を含むYAML/JSONファイルでスキーマによる検証、コード補完、ナビゲーション、使用箇所の検索、Renameリファクタリングへの対応を、作業で仕様優先のアプローチを採用する方にご活用いただけることを願っています。

とてもクールだと思いませんか?これらの機能は、 現在はJavaプロジェクトとKotlinプロジェクトのみに対応していますが、今後はさらに大きな計画に取り組み、将来のリリースでは他の言語やフレームワークにも対応していく予定です。

さらに、IntelliJ IDEA 2019.3ではこれまでご要望の多かったMongoDB対応を追加しました。 現状では単なる初期対応に過ぎませんが、将来的には対応を強化していく予定です。 IntelliJ IDEAのデータベースエクスプローラーでコレクションやフィールドを表示し、クエリを実行してクエリの結果を確認できるようになりました。

重要なバグ修正


今回は多数のバグ修正を行いましたが、ここにはその中でも最も重要なものを掲載しています。

  • Homebrewを使用してGradleがインストールされている場合、IntelliJ IDEAがそのインストールディレクトリを検出できるようになりました。
  • より簡単にGradleのホームディレクトリを手動で設定できるようになりました。
  • Linux上でのKWalletを使用したパスワード保管に対応しました。
  • JavaFXプロジェクトを操作する際、Scene Builderタブに埋め込まれたScene Builderを使ってFXMLファイルを表示できます。
  • Debugツールウィンドウがキーボードによる移動に対応しました。
  • インスペクションポップアップからCtrl+Cで選択したテキストをコピーできるようになりました。
  • IDEのウィンドウを切り替えてもフォーカスは失われません。
  • ウィンドウとポップアップの位置を修正しました。
  • IDEでDarculaテーマが選択された際、呼び出されたmacOSのウィンドウがダークテーマで開くようになりました。

多数の修正を取り込むため、JetBrains Runtime 11(JBR 11)もアップデートしました。

  • macOS Catalinaでのフォント描画処理を修正しました。
  • macOS 10.15 Catalinaでプロジェクトを開く際に発生する問題を修正しました。
  • Evaluate Expression(式の評価)ダイアログの記号を訂正しました。
  • エディタのフォントが常にイタリック体となっていた問題を修正しました。
  • Windowsのウェルカム画面を改修しました。
  • IDEのキーマップとネイティブなOSのキーマップとの競合について警告が表示されるようになりました。
  • エディタで不正なフォント(イタリック体)が使用される問題を修正しました。

その他の変更

このリリースには、Android Studio 3.5で行われたすべての変更も含まれています。

また、VaadinプラグインとJava Applets Supportプラグインのバンドルを停止しました。 ただし、これらのプラグインはプラグインリポジトリで入手可能になり、手動でインストールすることができます。

このリリースではこれまでとは少し異なるアプローチを試みましたが、結果にご満足いただけることを願っています。 解決されたすべての課題の詳細な一覧を確認するには、リリースノートをご覧ください。

皆様のご意見をお聞かせください! TwitterやFacebookで、および以下のコメント欄でご意見をお寄せください。

新機能ページで詳細を確認して、概要ビデオ(英)をご覧ください。ぜひ今すぐIntelliJ IDEA 2019.3をお試しください!

Happy Developing! 

[原文Original post in English is written by Zlata Kalyuzhnaya

image description