GoLand 2019.1の新機能

Memory、CPU、Mutex、Blockプロファイラ

GoLandは、Memory、CPU、Mutex、Blockのプロファイラを統合することによってツールのサポートを拡張しました。IDEでアプリケーションのプロファイリングを開始することができ、専用ツールウィンドウ (View | Tool Windows | Profiler) で分析結果をレビューできます。

プロファイラを実行するためには、新しい Run with Profiler ボタンを押し、ナビゲーションツールバーで必要な設定を選択してください。別の方法として、左側のガターの実行アイコンをクリックした際に表示される実行メニューで新しいアクションを選択してください。

コード内で起こりうるパフォーマンスの問題をよりよく理解するためには、Flame Chart、Call Tree、Method List タブを使って、特定のプロファイラタイプごとに有効なメトリクスによって結果をソートしてください。または問題を調査するためにソースコードへ移動してください。

Smart Step Into

呼び出しチェーンおよびネストしたメソッド呼び出しのデバッグは、新しいデバッグアクションSmart Step Into を利用するとより簡単になります。式の任意の呼び出しの場合はステップインし、興味のないメソッドの場合は自動的にステップオーバーします。例えば、fmt.Printf("My name is %s, I am %d!", me.FullName(), me.Age()) のようなコードをデバッグする場合、Age() にステップインすることを明確に選択することができます。Smart Step Into を呼び出すには、Shift+F7 を押すか、Run メニューで Smart Step Into を選択してください。

より詳細は Debugging in GoLand – Improvements in 2019.1 をご覧ください。

新しいリファクタリング

インターフェースの抽出

インターフェース抽出リファクタリングでは、選択したタイプに基づいて新しいインターフェースをすばやく作るのを助けてくれます。実施にはRefactor This を呼び出します。Windows/Linux 上では Ctrl+Alt+Shift+T、macOS 上では ^T を押し、表示されるポップアップメニューで Extract Interfaceを選択してください。

リファクタリングダイアログには新しいインターフェースに変換するために提案されたメンバのリストが表示されます。インターフェース名を指定し、配置するファイルやディレクトリ、パッケージを選ぶことができます。型がすでにあらゆるインターフェイスに実装されている場合は、自動的にリストから除外されます。より詳細は Refactorings in GoLand — Extract Interface をご覧ください。

Extract Interface refactoring dialog

より優れたリネーム

リネームリファクタリングはインターフェース内でメソッドをリネームする場合にも役立ちます。そのようなメソッドをリネームする場合、GoLandは同様に実装もリネームするよう提案します。Find ツールウィンドウ内の Refactoring Preview パネルでは現在のリファクタリングが何に影響を与えるかを表示してくれます。使用箇所はプロジェクト内のタイプや場所によってグループ化されています。

Nilness アナライザ

Goはゼロの値を便利にする方法を提供していますが、その機会が多ければ多いほどトラップに陥りやすくなります。
全く新しい Nilness アナライザ は、様々なケースにおいて変数がnil値を持つか持たないかを即座に検知し、潜在的なエラーや問題をアラートしてくれるコードインスペクションのセットです。
より詳細はNilness Analyzer Inspectionをご覧ください。

デバッガーの改善

スレッドの代わりにゴルーチン

デバッガの出力ではスレッドの代わりにゴルーチンを表示するようになりました。それらを切り替え、スタンダードなGoライブラリにすばやく移動し、コードがどのように実行されているかについてより多くの情報を入手してください。
また、Copy Stack(ゴルーチンリストで右クリック)を使うとフレームスタック全てをクリップボードにコピーしてくれます。

intを2進数、10進数、または16進数として表示

デバッガービューにおいてint変数を2進数、10進数、または16進数のいずれで表示するかを選択できるようになりました。変数で右クリックし、View as 配下で適切なまたは推奨される設定を選んでください。

マウスジェスチャーとしてカーソルを利用

Run to Cursor アクションをデバッグ中に行番号を選択して利用できるようになりました。ハイライトするため番号にマウスカーソルを合わせ、Run to Cursor 実行のために行番号をクリックしてください。

ミニダンプのサポート

コアダンプの調査に加え、IDE内にウィンドウミニダンプを開いて分析もできるようになりました。コアダンプのように Run | Open Core Dump を選択するのと同じくらい簡単です。より詳細はbugging in GoLand — Windows Minidumpsをご覧ください。

sudoでGo設定を実行

Run/Debug Configurations がsudoで実施できるようになりました。ユーザーとして特権操作を必要とするアプリケーションをデバッグすることができます。

Run/Debug configuration window with new sudo checkbox

テーマカスタマイズのサポート

新しいUIテーマができました!ダークパープル, ライトシアングレー のテーマをプラグインを通じて利用可能になりました。パープルだけでは不十分ですか?とても退屈?楽しすぎる?もう問題はありません。2019.1では IntelliJ-IDEA を元にしたIDEすべてがUIの要素に、完全にカスタマイズできる色を手に入れることができるようになりました。文字通りあらゆる色を変更できるのです!

このカスタマイズはとても簡単です。自身のテーマを作成およびシェアする方法についてはこちらのチュートリアルをご覧ください。

GoLand in new Dark Purple theme

IDEからあらゆるGo SDKをインストール

GoLandで新しいプロジェクトを作成した時、Beta や RC バージョンを含む、SDKで必要なバージョンをダウンロードおよびインストールするオプションができました。IDEから離れる必要がありませんし、Webを介してサーフィンする必要もありません。選択したSDKバージョンがインストールされるとすぐに、GoLandはEvent Log ウインドウで教えてくれます。

GoLand's welcome screen with the new option to download and install any required version of the Go SDK

Go Module のアップデート

Vendoring mode

Go Module プロジェクトのテンプレートに、新しいVendoring mode チェックボックスが追加されました。このことで外部依存関係やインターネットへの接続なしにベンダーフォルダのライブラリを使うことができます。同じチェックボックスが Preferences | Go | Go Modules (vgo) の設定内にもあります。

Vendoring mode checkbox in Go Modules settings

インポートされていないモジュールの補完

GoLandでは、タイプしている間、モジュールのキャッシュの全モジュールについてコード補完の提案を提供しています。つまり、プロジェクトにおいてモジュールが一度もインポートも利用もされていなくとも、GoLandはそれを認識していることを意味しています。

新しい空気を読むアクション

空気を読む機能の宣言セット

宣言へ/からの括弧の追加/削除、宣言のマージ、宣言の2つのグループへの分割など、宣言を再フォーマットするのに役立つ空気を読む機能のアクションのセットを追加しました。完全な有効なアクションと詳細な説明は Settings/Preferences | Editor | Intentions の Declaration セクションにあります。

空気を読むアクションのエクスポート

新しいエクスポートに関する空気を読む機能アクションでは、プライベート関数、型、またはパッケージ間をスイッチしないフィールドについてエクスポートできます。加えて、GoLandではエクスポートされないシンボルへの参照を解決し、エラーがあることを通知します。

便利な一般的な変更

Sublime Textキーマップ

新しい設定済みの Sublime Text キーマップが Preferences /Settings | Keymap で利用可能になりました。また、設定済みの VC Code キーマップも利用できます。こちらはpluginを通して利用いただけます。

Choosing Sublime Text keymap in settings

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

最近のロケーションをポップアップ (Ctrl+Shift+E / macOSではCmd+Shift+E / ) はプロジェクトで移動する新しい方法です。ロケーションの前後数行で、コードスニペットのように最近訪れた/変更したコードの位置のリストを表示してくれます。結果をフィルタリングするには、タイピングしてコードのマッチした部分にジャンプしてください。

Recent Locations popu

Web開発のためのプロジェクトテンプレート

React App, React Native, HTML5 Boilerplate, Foundation のような Web開発のためのプロジェクトテンプレートがWelcome画面で利用可能になりました。

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

コードスタイル設定をJSONにエクスポートできるようになりました。すでに利用可能になっているXMLへのエクスポート加え、Preferences/Settings | Editor | Code Style 画面上で利用可能になっています。Export 'Code Style' settings to JSON option in settings

バージョンコントロールに関する改善

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

部分的なGitコミット (git add -p) のための新しい “Uncheck all” チェックボックスは、1回ですべてのコードチャンクのチェックを簡単に外せます。コミットしたいものも選択できます。

‘Fixup’ と ‘Squash Into’ アクション

VCS内のログタブでFixupとSquash Into アクションを呼び出すと、正しい fixup! と squash! メッセージと共にコミットが生成されます。また、コミットから選択したファイルをチェリーピックするために、Logタブ上のコンテキストメニューを利用できるようになりました。

Fixup and Squash Into actions

コミットの入出力インジケータ

Preferences/Settings | Version Control | Git メニューで “Mark Branches that have incoming/outgoing commits in the Branches popup” を選択すると、入出力コミットがそれぞれのブランチに利用可能かどうかをIDEに表示してくれます。

New checkbox for incoming and outgoing commits in settings

アノテーションでのオーサーのイニシャル

加えて、VCSのアノテーションにおいてフルネームの代わりにオーサーのイニシャルをIDEに表示できるようになりました。Author initials in annotations

さらなる変更点

  • Switchの複数のデフォルトコードインスペクションでは、switch文内の冗長なデフォルトのケースを警告し、重複したデフォルトへすばやくナビゲートしてくれます。
  • ドットインポートで重複した場合、重複名のコードインスペクションから通知されるようになりました。
  • プロジェクトビューでは、無視されているファイルやフォルダは、他のファイルと区別するのを助けるためにオリーブグリーンを使用するようになりました。これらの色はPreferences/Settings | Version Control | File Status Color で変更することもできます。
  • JetBrains が作成したプラグインの設定が、Preferences/Settings ダイアログで検索可能になりました。
  • ファイルをBlank Diff ウィンドウへドラッグすることで、テキストをコピー&ペーストできるようになりました。別の方法として、ファイルナビゲーションを通して同じことができます。

Multiple defaults in switch code inspection

Web 開発

JavaScriptとTypeScriptでの分割代入

分割代入は配列やオブジェクトから値をアンパックし、非常に簡潔なシンタックスを使った変数に代入してくれます。GoLand 2019.1 では、コード内のオブジェクトや配列について簡単に分割代入を始めることを助けるため、空気を読む、クイックフィックスといった新しいリファクタリングのセットを導入しました。

Using JavaScript destructuring

Promiseをasync/awaitに変換

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

テストで失敗した箇所をハイライト

GoLandは、テストが失敗した問題がどこで起きたのかをすぐに見つけてくれます。IDEはエディタ内の関連するコードをハイライトします。マウスカーソルを合わせると、テストランナーからのエラーメッセージを確認できます。これはJest, Karma, Mocha, Protractor で動作します。

Highlighting for failed line in test

CSSのための最新ドキュメント

CSS プロパティ、HTML タグや属性のためのドキュメント (F1) に、MDN からのブラウザサポートに関する最新の説明と情報が表示されるようになりました。また、Preferences/Settings | Editor | Inspections – CSS 内のブラウザの互換性設定を通して、新しく互換性の調査も利用できるようになりました。シンプルにターゲットとしたいブラウザバージョンのミニマムを選択してください。

Updated docs and browser compatibility

データベースに関するアップデート

  • Greenplum, Vertica, Apache Hive データベースがサポートされました。
  • Remember password 機能にパスワード保存のための2つのオプション Forever と For session ができました。
  • 接続ダイアログを完全に作成し直しました。
  • 新しい keep-alive と auto-disconnect オプションを追加しました。
  • データエディタ内のフィルターがクリップボードを提案するようになりました。

New supported databases