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 をご覧ください。
より優れたリネーム
リネームリファクタリングはインターフェース内でメソッドをリネームする場合にも役立ちます。そのようなメソッドをリネームする場合、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で実施できるようになりました。ユーザーとして特権操作を必要とするアプリケーションをデバッグすることができます。
テーマカスタマイズのサポート
新しいUIテーマができました!ダークパープル, ライトシアン, グレー のテーマをプラグインを通じて利用可能になりました。パープルだけでは不十分ですか?とても退屈?楽しすぎる?もう問題はありません。2019.1では IntelliJ-IDEA を元にしたIDEすべてがUIの要素に、完全にカスタマイズできる色を手に入れることができるようになりました。文字通りあらゆる色を変更できるのです!
このカスタマイズはとても簡単です。自身のテーマを作成およびシェアする方法についてはこちらのチュートリアルをご覧ください。
IDEからあらゆるGo SDKをインストール
GoLandで新しいプロジェクトを作成した時、Beta や RC バージョンを含む、SDKで必要なバージョンをダウンロードおよびインストールするオプションができました。IDEから離れる必要がありませんし、Webを介してサーフィンする必要もありません。選択したSDKバージョンがインストールされるとすぐに、GoLandはEvent Log ウインドウで教えてくれます。
Go Module のアップデート
Vendoring mode
Go Module プロジェクトのテンプレートに、新しいVendoring mode チェックボックスが追加されました。このことで外部依存関係やインターネットへの接続なしにベンダーフォルダのライブラリを使うことができます。同じチェックボックスが Preferences | Go | Go Modules (vgo) の設定内にもあります。
インポートされていないモジュールの補完
GoLandでは、タイプしている間、モジュールのキャッシュの全モジュールについてコード補完の提案を提供しています。つまり、プロジェクトにおいてモジュールが一度もインポートも利用もされていなくとも、GoLandはそれを認識していることを意味しています。
新しい空気を読むアクション
空気を読む機能の宣言セット
宣言へ/からの括弧の追加/削除、宣言のマージ、宣言の2つのグループへの分割など、宣言を再フォーマットするのに役立つ空気を読む機能のアクションのセットを追加しました。完全な有効なアクションと詳細な説明は Settings/Preferences | Editor | Intentions の Declaration セクションにあります。
空気を読むアクションのエクスポート
新しいエクスポートに関する空気を読む機能アクションでは、プライベート関数、型、またはパッケージ間をスイッチしないフィールドについてエクスポートできます。加えて、GoLandではエクスポートされないシンボルへの参照を解決し、エラーがあることを通知します。
便利な一般的な変更
Sublime Textキーマップ
新しい設定済みの Sublime Text キーマップが Preferences /Settings | Keymap で利用可能になりました。また、設定済みの VC Code キーマップも利用できます。こちらはpluginを通して利用いただけます。
最近のロケーションをポップアップ
最近のロケーションをポップアップ (Ctrl+Shift+E / macOSではCmd+Shift+E / ) はプロジェクトで移動する新しい方法です。ロケーションの前後数行で、コードスニペットのように最近訪れた/変更したコードの位置のリストを表示してくれます。結果をフィルタリングするには、タイピングしてコードのマッチした部分にジャンプしてください。
Web開発のためのプロジェクトテンプレート
React App, React Native, HTML5 Boilerplate, Foundation のような Web開発のためのプロジェクトテンプレートがWelcome画面で利用可能になりました。
コードスタイル設定をJSONにエクスポート
コードスタイル設定をJSONにエクスポートできるようになりました。すでに利用可能になっているXMLへのエクスポート加え、Preferences/Settings | Editor | Code Style 画面上で利用可能になっています。
バージョンコントロールに関する改善
部分的なGitのための新しい “Uncheck all” チェックボックス
部分的なGitコミット (git add -p
) のための新しい “Uncheck all” チェックボックスは、1回ですべてのコードチャンクのチェックを簡単に外せます。コミットしたいものも選択できます。
‘Fixup’ と ‘Squash Into’ アクション
VCS内のログタブでFixupとSquash Into アクションを呼び出すと、正しい fixup! と squash! メッセージと共にコミットが生成されます。また、コミットから選択したファイルをチェリーピックするために、Logタブ上のコンテキストメニューを利用できるようになりました。
Preferences/Settings | Version Control | Git メニューで “Mark Branches that have incoming/outgoing commits in the Branches popup” を選択すると、入出力コミットがそれぞれのブランチに利用可能かどうかをIDEに表示してくれます。
アノテーションでのオーサーのイニシャル
加えて、VCSのアノテーションにおいてフルネームの代わりにオーサーのイニシャルをIDEに表示できるようになりました。
さらなる変更点
- Switchの複数のデフォルトコードインスペクションでは、switch文内の冗長なデフォルトのケースを警告し、重複したデフォルトへすばやくナビゲートしてくれます。
- ドットインポートで重複した場合、重複名のコードインスペクションから通知されるようになりました。
- プロジェクトビューでは、無視されているファイルやフォルダは、他のファイルと区別するのを助けるためにオリーブグリーンを使用するようになりました。これらの色はPreferences/Settings | Version Control | File Status Color で変更することもできます。
- JetBrains が作成したプラグインの設定が、Preferences/Settings ダイアログで検索可能になりました。
- ファイルをBlank Diff ウィンドウへドラッグすることで、テキストをコピー&ペーストできるようになりました。別の方法として、ファイルナビゲーションを通して同じことができます。
Web 開発
JavaScriptとTypeScriptでの分割代入
分割代入は配列やオブジェクトから値をアンパックし、非常に簡潔なシンタックスを使った変数に代入してくれます。GoLand 2019.1 では、コード内のオブジェクトや配列について簡単に分割代入を始めることを助けるため、空気を読む、クイックフィックスといった新しいリファクタリングのセットを導入しました。
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 で動作します。
CSSのための最新ドキュメント
CSS プロパティ、HTML タグや属性のためのドキュメント (F1) に、MDN からのブラウザサポートに関する最新の説明と情報が表示されるようになりました。また、Preferences/Settings | Editor | Inspections – CSS 内のブラウザの互換性設定を通して、新しく互換性の調査も利用できるようになりました。シンプルにターゲットとしたいブラウザバージョンのミニマムを選択してください。
データベースに関するアップデート
- Greenplum, Vertica, Apache Hive データベースがサポートされました。
- Remember password 機能にパスワード保存のための2つのオプション Forever と For session ができました。
- 接続ダイアログを完全に作成し直しました。
- 新しい keep-alive と auto-disconnect オプションを追加しました。
- データエディタ内のフィルターがクリップボードを提案するようになりました。