IntelliJ IDEA 2019.1の新機能

テーマ

テーマのカスタマイズ

エキサイティングなニュースです!IntelliJ IDEA 2019.1でカスタムテーマが正式にサポートされました。自身のテーマを簡単に作成できます。詳しくはこちらをご覧ください。

すぐに利用できるいくつかの全く新しいテーマも用意しました。新しいテーマの1つをダウンロードし、Appearance 設定でテーマを選択することでIDEにより多くの色を追加することができます。詳しくはこちらをご覧ください。

Java

Java 12 の Switch式 (プレビュー) に対応

IntelliJ IDEA 2019.1では Java 12のプレビュー機能 – JEP 325 に基づくSwitch 式に対応しました。

新しいswitchの文法に詳しくなくても安心です。新しいインスペクションにより最新のswitchの文法を適用できるコードを検出し、クイックフィックスによりモダンなコードへ変換してくれます。

変数抽出リファクタリングの強化

”変数抽出”リファクタリングが大きく改善され、以前よりもさらにセマンティクスを遵守するようになりました。IDEはフィールドの初期化からでも変数を抽出できますし、抽出した変数のリファクタリングは、条件が重要であれば自動的に三項演算子を’if’に変換できます。 nullチェックまたは ‘instanceof’ チェックがある場合、条件は重要であると見なされます。

三項演算子の正確な警告ハイライト

IntelliJ IDEA 2019.1では三項式の警告ハイライトをより正確になるよう強化しました。nullability 違反が検出された条件のみをハイライトします(以前は、nullabilityが単一の分岐でのみ違反があった場合でも三項式全体をハイライトしていました。)

この機能のおかげで、Switch式でもより正確にハイライトが表示されるようになりました。

数学演算の改善された分析

データフローの分析では数学演算の結果を追跡し、常にtrueかfalseかの条件について警告します。乗算、剰余、ビット単位の数学演算の分析が改善されました。

ソースからコンストラクタの純粋性を推測

IntelliJ IDEA 2019.1では@Contract アノテーションのサポートを改善しました。ソースからコンストラクタの純粋性を自動的に推測できるようになりました。

Javaスタックトレースから行内の関連する位置へ移動

Javaのスタックトレースをクリックすると、IDEはカーソルを移動するために正しい行内の位置を決定するようになりました。以前は一致する行の最初の列にカーソルを移動するだけでした。

 

Gradle

Gradleプロジェクトごとに設定されたGradleへのビルドと実行アクションの委譲

それぞれのプロジェクトに対して、個別にビルドおよび実行アクションをGradleに委譲することができるようになりました。IntelliJ IDEA のプロジェクトがいくつかの Gradle プロジェクトで構成されている場合に、それぞれのGradleプロジェクトにオプションを設定します。さらに、同じプロジェクトのテストランナーとアプリケーションランナーに異なる値を設定することもできます。

IntelliJ IDEA 2019.1では、新規に作成したGradleプロジェクトはデフォルトでビルドと実行アクションがGradleに委譲されます。

エディタから実行するGradleテストタスクの適切な選択

IntelliJ IDEA 2019.1では、テストの実行がGradleに委譲されているいくつかのGradleソースセットを持つプロジェクトのサポートが改善されました。IDEは、特定のテストが実行された時に実行されるべきタスクを正しく解決します。複数のオプションがある選択肢の場合、IDEは選択したテストに対して実行できるタスクの全リストを提供します。

ビルドアクションがGradleまたはMavenに委譲されている場合に動作するHotSwap

Gradleに委譲されたビルドアクションを使用してデバッグする場合、HotSwapがトリガーされ、プロジェクトのビルドによってクラスがリロードされます。

また、HotSwapはビルドアクションがMavenに委譲されている場合でも動作します。

Maven

Mavenのビルド出力をBuildツールウィンドウに表示

Mavenのすべてのビルド出力が1箇所(Buildツールウィンドウ)に表示されるようになりました。RunウィンドウやMessagesウィンドウをチェックする必要はもはやありません。また、ビューを切り替えてビルドの出力をログとして表示することもできます。

改善されたMavenダイアグラム

Mavenダイアグラムが強化され新しいオプションを拡張しました。‘Show Conflicts/Duplicates’を利用することで、簡単にコンフリクトや重複する依存関係を見つけることができるようになりました。ノードへのすべてのパスを参照するには、‘Show Paths: Root -> Selection‘を選択してください。

ノードの依存関係のみを参照したい場合は、‘Show Neighbors of Selected Nodes‘を選択してください。また、ダイアグラムを境界線のないビューに切り替えることもできます。

バージョン管理

Fixup と Squash アクションが VCS ログに追加

VCSログタブのコンテキストメニューからFixupとSquashを呼び出すと、これらのアクションは、正しく fixup! と squash! コミットメッセージと共にコミットが生成されます。

 

VCSログからファイルの一部のみチェリーピック可能に

IntelliJ IDEA 2019.1では、VCSログ上のコミットから選択したファイルをチェリーピックできるようになりました。コンテキストメニューを呼び出し、“Apply Selected Changes”を選んでください。

入出力コミットの表示

ブランチのポップアップにおいて、それぞれのブランチのための入出力コミットの可用性を参照できるオプションがあります。この機能を利用するには、Preferences/Settings | Version Control | Git で’Mark Branches that have incoming/outgoing commits in the Branches popup’ を有効にする必要があります。

削除されたシェルブファイルの復元

最近削除されたすべてのファイルを参照可能になり、便利なシェルブファイルを復元できるようになりました。VCSツールウィンドウのShelfタブにおいて、新しく追加された“Recently Deleted”ノードを利用してください。

 

部分的なGitコミットのための新しい “Uncheck all” チェックボックス

Commit Changes ダイアログの Diff ペインに新しく “Uncheck all” チェックボックスを追加しました。1回ですべてのコードチャンクのチェックを簡単に外せます。

 

VCSアノテーションのためのオーサーのイニシャル表示モード

VCSのアノテーションにおいてフルネームの代わりにオーサーのイニシャルを表示できるようになりました。アノテーションタブで右クリックし、コンテキストメニューからView | Names | Initials を選択してください。

差分

ドラッグドロップでBlank Diffウィンドウへファイル内容を追加

ファイルをBlank Diff ウィンドウへドラッグすることで、テキストをコピー&ペーストできるようになりました。

差分ビューアーで比較されたファイルを入れ替え

2つのファイルを比較、クリップボードを比較、または空白の差分を利用して差分ビューアーを開いた際、サイドを入れ替えることができるようになりました。ファイルを右側に表示するか左側に表示するかを切り替えるには、Swap Sidesを選ぶだけです。

Swap Sidesはディレクトリの比較でも利用できます。

文字単位で差異をプレビュー

差分ビューアーでは以前と同様に、単語単位だけではなく、文字単位で差異を表示できるようになりました。例えば日本語のように異なるアルファベットからの文字列がソースコードに含まれる場合は非常に便利になります。

最近のロケーションをポップアップ表示

JVM デバッガー

デバッガーの評価で‘synchronized’, ‘assert’, ‘switch’ に対応

デバッガーの評価で synchronized, assert, switch に対応しました。

JVMデバッガーでコードブロックからのステップアウト

Javaプロジェクトをデバッグしている場合、現在のブロックのステップアウトができるようになりました。この新しいアクションはメインメニューの Run で利用できます。

 

新しい“Run to mouse pointer”

デバッグモードでマウスを使いたい場合、行の上にマウスを移動することでIDEがこの行をハイライトするようになりました。行番号をクリックすると、IDEはカーソルまで実行アクションを実施します。

Scala

IntelliJ IDEA 2019.1 では for-comprehension のためのサポートを強化しました。エラーのハイライトや暗黙のヒント、GoTo / Quick Definition / Quick Documentation などが含まれます。

implicit の利用箇所の検索

利用箇所の検査は、implicit の定義、apply / unapply メソッド、for-comprehension メソッド、Single Abstract Method (SAM) 型に対して呼び出すことができます。

 

Javaへデコンパイル

Scalaの.classファイルがソースを持っていない場合でも、それらをJavaデコンパイルすることができます。

カスタマイズ可能なScalafmtバージョン

IntelliJ IDEA v2018.2において scalafmt フォーマッターのサポートを追加しましたが、今回のリリースでこの機能を強化しました。IntelliJ IDEA ではカスタムの Scalafmt バージョンを利用できるだけではなく、必要なバージョンをダウンロードできるようになりました。

 

HOCONプラグインを独立

HOCONサポートを別のリポジトリおよびプラグインに抽出しました。オンデマンドでインストールしたりアンインストールすることができます。

 

エラーハイライトの改善

このリリースでは、以下を含むエリアにおいてエラーのハイライトを大幅に改善しました。

  • 部分的なユニフィケーションと型変数のユニフィケーション
  • コンストラクタのハイライト、プライベートコンストラクタへの呼び出し
  • Better-monadic-for コンパイラプラグイン: `implicit0` 機能
  • Kind-projector: 値レベルの多型 lambda
  • Simulacrum: higher-arity 型のコンストラクタ

Groovy

IntelliJ IDEA 2019.1 では実験的な Groovy 3.0 の機能 – Javaスタイルの Lambda シンタックスに対応しました。IDEはコード補完、ハイライト、型の推測をする編集に関するサポートを提供します。Groovy の空気を読む機能およびインスペクションも lambda の本体内部で正しく動作します。フォーマットもJavaスタイルのlambdaで利用可能になっており、Javaスタイルのlamdbaをデバッグすることもできます。

Kotlin

IDEにバンドルされたKotlinプラグインをv1.3.21にアップデートしました。

パラメータのない‘main’を生成するLive Template

Kotlin 1.3からパラメータのないmain関数を利用できるようになりました。それに応じて、IntelliJ IDEAの今回のリリースでは‘main’Live Templateを利用し、パラメータのないmain関数を作成できるようになりました。

デフォルトの‘main’の省略形は、mainメソッドの新しいバージョンを生成します。いくつかの引数を渡す必要がある場合は、‘maina’という省略形を使ってください。

文字列変換の改善

‘Convert concatenation to template’の空気を読む機能では、各パラメータを呼び出す不要な.toString()を削除できるようになりました。

 

lambdaとしてSAMを匿名のオブジェクトに変換するための新しい空気を読む機能

SAMでlambdaを使ってコンストラクタを匿名のオブジェクトに変換する必要がある場合は、この便利で新しい空気を読む機能をご利用ください。

 

コルーチンコードを改善するための空気を読む機能

コルーチンを利用している場合、IntelliJ IDEAは‘Deferred’を返す関数に“Async”サフィックスを追加するよう提案します。

JavaScript と TypeScript

JavaScriptの分割代入のための新しい空気を読む機能

IntelliJ IDEA 2019.1 では JavaScript や TypeScript において、分割代入を使い始めるのを助ける新しいリファクタリングや空気を読む機能に対応しました。

 

Promiseを持つ関数をasync/awaitに変換する空気を読む機能

.then() や.catch() 呼び出しをしている Promise を返す関数を、 async/await 構文を利用する async 関数に変更できるようになりました。クイックフィックスを利用するには、関数名上で Alt-Enter を押し Convert to async function を選択してください。この機能は TypeScript ファイルだけではなく JavaScript や Flow でもご利用いただけます。

CSSやHTMLに関する最新のドキュメント

CSS プロパティ、HTML タグや属性のためのドキュメント (F1) には、MDN からのブラウザサポートに関する最新の説明と情報および MDN の全記事へのリンクも表示されるようになりました。

改善されたJavaScriptデバッガーコンソール

JavaScript と Node.js のデバッグツールウィンドウにおいて、新しく改善されたインタラクティブなデバッガコンソールを利用できます。ツリービューを使用してオブジェクトが表示されるようになり、CSSのログメッセージのスタイルや、console.group() とconsole.groupEnd()を使ってそれらのグループ化をサポートします。 また、あらゆる種類のログメッセージの除外もできるようになりました。

Docker

Dockerコンテナ内でデバッグ可能に

Dockerコンテナ内で実行されているJavaアプリケーションにデバッガーをアタッチできるようになりました。IDEではDockerファイルで構築されたまたはDocker compose (docker-compose.yml)を使って生成されたコンテナ内でデバッグできます。

Kubernetes

外部リソースのサポート

IntelliJ IDEA 2019.1では外部リソースにサポートしました。外部のソースからカスタムリソース定義の仕様をロードできるようになりました。現時点ではローカルファイルからのみ可能です。仕様を追加するには、Preferences/Settings | Languages & Frameworks | Kubernetes でカスタムリソース定義仕様のパスを追加してください。

 

Helmリソースファイル内のチャートでリネームリファクタリング

Helmリソーステンプレートファイルのチャートにおいて、リネームリファクタリング機能を使えるようになりました。Helmリソーステンプレートファイルのサポートを有効にするには Go template プラグインをインストールする必要がありますので、ご留意ください。

エディタ

コードスタイル設定をJSONにエクスポート

すべてのコードスタイル設定をJSONにエクスポートできるようになりました。デフォルトにしか割当たっていなくともエクスポート可能です。Preferences/Settings | Editor | Code Style 画面上のドロップダウンメニューから‘Export | IntelliJ IDEA code style JSON’を選択してください。

ファイルタイプによってソフトラップを有効に

Preferences/Settings | Editor | General 画面のSoft-wrap filesフィールドでファイルタイプを指定することでソフトラップするファイルを限定できます。

 

WindowsのCtrl−Yキーストロークのためのキーマップ設定ダイアログ

WindowsでCtrl+Yのキーストロークを初めて利用する場合、キーマップ設定ダイアログが表示され、ショートカットを行の削除に割り当てるか、それともRedoに割り当てるかの確認がされるようになりました。

 

Sublime Textキーマップ

IntelliJ IDEAに設定済みの新しいキーマップを追加し続けており、v2019.1ではSublime Textキーマップを追加しました。Preferences /Settings | Keymap 画面のKeymapドロップダウンリストからSublime Textを選んでください – それだけです!これでIntelliJ IDEAでSublime Textのショートカットを利用できます。

 

VS Code キーマッププラグイン

設定済みの VS Code キーマップを利用できるようになりました。別途 plugin として利用可能になっています。プラグインをインストールし、Preferences /Settings | Keymap で VS Code キーマップを選択してください。

IntelliJ IDEA 2019.1 では実験的なGroovy 3.0の機能 – Java-style Lambda シンタックスをサポートしています。IDEはコード補完を含む編集のサポートをしています。Groovyの空気を読む機能とインスペクションもlambda内では適切に動作します。フォーマットもJava-style lambda 用に利用可能になっておりJavaスタイル lambda でデバッグも可能です。

Spring Cloud Stream

Spring Cloud Stream の編集をサポート

IntelliJ IDEA は Spring Cloud Stream に対して、シンタックスハイライトや空気を読む機能、クイックフィックス、コード補完(含、application.properties ファイルや application.yml ファイル内の値と参照のバインダー名の補完)といったリッチな編集機能に対応しました。

 

バウントプロデューサーとコンシューマー間の移動

バウンドコンシューマーとプロデューサーメッセージハンドラの間をガターアイコンを使って移動できるようになりました。コンシューマーとプロデューサーは、‘spring.cloud.stream.bindings’ 設定キーを通じて、application.properties ファイルまたは application.yml ファイルに結合されるべきであることは念頭に置いてください。

改善された Thymeleaf サポート

‘th: replace’ および ‘th: include’ 属性で参照されるテンプレートフラグメントへ遷移できるようになりました。コード補完とリネームリファクタリングは、これらの包含され置換されたフラグメントに対しても動作します。

データベースツール

Greenplum, Vertica, Apache Hiveに対応

IntelliJ IDEA はこれらの新しいデータベースに対応しました:

  • Greenplum – PostgreSQLに基づいた分析データベース
  • Vertica – ボリュームの大きいデータを扱うよう設計されたカラム指向のストレージ
  • Apache Hive – データクエリと分析を提供するためのApache Hadoopの上に構築されたデータウェアハウス

接続ダイアログの改善

接続ダイアログの見た目を改善し、いくつかの重要な設定を追加しました。‘startup script’フィールドにSQLクエリを追加できるようになり、接続を確立するたびに実行されます。また、IDEが自動的に接続を切断するまでのタイムアウト時間や、接続されていることを確認するためにN秒ごとにクエリを実行するためのインターバル時間も設定できるようになりました。