GoLand 2019.3の新機能

GoLand 2019.3では、CPU消費量の削減と動作の高速化、Go Modulesのサポート強化、新しいクイックフィックスの追加、リファクタリングの強化が提供されます。 Evaluate Expressionにおけるembedされたフィールドのメソッド呼び出し対応、Mozilla rrを使用したアプリケーションのリモートデバッグサポートも追加されました。

また、すべての新規プロジェクトに対するGlobal File Watcherの有効化、MongoDBとの連携などを行えるようになりました!

パフォーマンス

異なるオペレーティング・システム上にあるGoLand 2019.3の始動時間計測グラフ

今年の夏にGoLand 2019.2をリリースして以来、当社はGoLandの高速化とCPU消費量の削減に懸命に取り組んできました。 主なパフォーマンス改善には、起動時間を短縮化したことが挙げられます。IDEが内部的に必要なものをすべてを準備している間に、ウェルカム画面を表示し、プロジェクトのインデックス作成を行うようになりました。

この結果はプロジェクトの規模やお使いのデバイスの使用年数、RAM、ディスク容量にとって変わる場合があります。 今後もこの取り組みを続ける予定で、今後のリリースでは起動時間のさらなる高速化を期待できます。

Go Modulesの改善点

go.modファイルからProjectビューへのナビゲーション

GoLand 2019.3では、go.modファイルに対応したシンタックスハイライトとナビゲーションを提供しています。 あるdependency(依存パッケージ)のインポートパス上で(macOSの場合は⌘+B、Windows/Linuxの場合はCtrl+B)キーを押すと、GoLandがProject View内にあるそのソースまでナビゲートします。

また、Project ViewではGo Modulesのインポートパスが最後の部分だけではなく、完全なインポートパスで表示されます。 各Goモジュールのバージョンは、インポートパスよりも色調を抑えたフォント色で表示されており、容易に確認できるようになっています。

デバッガ更新

呼び出しの結果が表示されたEvaluate Expression(式の評価)ダイアログ

Embedされたフィールドのメソッド呼び出し

デバッガのEvaluate Expression(式を評価)で、embedされたフィールドのメソッドを直接呼び出せるようになりました。

Mozilla rrを使ったデバッグ

Mozilla rrを使ったリモートデバッグ

Goで記述された多くの本番環境のサービスはLinux上で稼働しています。それらに対して、Mozilla rrは再現が困難なバグの調査を支援します。 Mozilla rrを使ったデバッグはGoLand 2018.3からサポートされていますが、Linuxを実行している開発用マシン上でしか動作していませんでした。 このリリースからは、Linuxマシン上でデバッグサーバーを起動し、macOSやWindowsからリモートでトレースをデバッグできるようになりました。 そのためには、以下の手順に従ってください。

  • リモートマシンでrrのトレースを収集します。
  • 次のようにリモートマシン上でデバッガを起動します:dlv --headless --api-version 2 -l localhost:2345 replay /path/to/trace/dir /path/to/binary
  • Go Remote設定経由でリモートマシンに接続します。

Mozilla rrはLinuxマシンでのみ利用できます。

新しいクイックフィックス

Alt+Enterキーを使って式から使用されていないパラメータ名を削除

未使用パラメータの処理

未使用のパラメータがある場合、GoLandがその名前と型の両方を削除可能な場合には両方を、その型がメソッド仕様の実装に使用されている場合には名前のみをハイライトするようになりました。

後者の場合は、2種類のクイックフィックス(Delete parameter namesまたはRename to_)のいずれかを選択できます。 関数型として使用されている関数には同じ動作が適用されます。

また、一度に未使用のパラメータをすべて削除できるようになりました。 Alt + Enter を押し、Delete all unused parameters(未使用のパラメーターをすべて削除)クイックフィックスを使用してください。

見つからない関数の作成

存在しないメソッドや関数の作成

GoLandは不足な関数やメソッドが関数の型で使用されている場合にそれらを作成するクイックフィックスを提供しています。 Alt+Enterを押し、Create method/functionを選択するだけです。

GoLandはパッケージのインポートを提案

パッケージエイリアスの処理を強化

GoLandは、プロジェクト内の任意のファイルで Alt + Enter を使用して、使用されているエイリアスに基づいてパッケージをインポートすることを提案します。

リファクタリング

パラメータの型はParameters(パラメータ)タブとResult Parameters(結果パラメータ)タブに表示される

署名の変更

Change SignatureParametersタブとResult parametersタブでパラメータの型を常に表示するようになりました。 Signature Preview内に表示される結果パラメータで連続した型指定を省略するには、新しいReuse typesチェックボックスにチェックを入れてください。

また、2つの新しいインテンションアクションが追加されています。1つはパラメータの定義を単一の宣言にマージするReuse signature typesで、もう1つはAlt+Enterで各パラメータに型を追加するExpand signature typesです。

Extract Variable(変数の抽出)がerror型の式に対しerrを提案

Extract Variable(変数の抽出)とRename(名前の変更)

Extract VariableRenameで名前の提案をさらに改善しました。 例えば、型エラーの式の場合はerrが、context.Contextの場合はctxが提案されます。

コードインスペクションの動作を改善

2019.2と2019.3バージョンにおけるコードインスペクションの振る舞いの比較

GoLandのコードインスペクションの対象がより絞り込まれました。 個々のコード片に最も関連性の高いクイックフィックスやインテンションアクションを表示できるよう、Alt+Enterを使用してコンテキストメニューを呼び出した際にコードエディタで検出された問題をハイライト表示する範囲を縮小しました。

コード編集

ルーン・リテラルのエラーメッセージの例

ルーン(rune)リテラルレキサーの改善

ルーンリテラルレキサーに対し、以下のような複数の改善を実施しています。

  • GoLandは、式が不正である理由を説明するエラーメッセージをより明確かつ簡潔に表示するようになりました。
  • GoLandは、編集後の正しいルーンリテラルをエラーとしてハイライトしません。
  • 不正なルーンリテラルの解析処理が安定化されました。
GoLandは、宣言の左側で再代入をハイライト表示する

再代入のハイライト表示

Goでは短いvar宣言の左側で既存の変数を使用できます。 そのため、似たような2つの構文が異なる意味を持つ場合があります。 このような状況を分かりやすくするため、このような再代入に対するシンタックスハイライトを導入しました。

複合リテラルのコードの折りたたみ例

複合リテラルコードの折りたたみ

GoLand 2019.3では複合リテラルコードを折りたたむことができます。 コード片の折りたたみや展開は、コードの折りたたみ用のトグルを使用するか、所定のキー(Windowsの場合はCtrl+数字キーのマイナス/Ctrl+数字キーのプラス 、macOSの場合は⌘+数字キーのマイナス/⌘+数字キーのプラス)を押してください。 デフォルトのコードの折りたたみ動作をは、Settings/Preferences | Editor | General | Code Foldingで設定できます。

ライブテンプレートの強化

ライブ・テンプレートは行を値として提案する

ライブテンプレート「for」と「forr」で適切な変数名が提案されるようになりました。 例えば、インデックスの場合はiindexのような名前が提案され、値の場合はsstringlineが提案されます。

ライブテンプレートの meth は、レシーバー名のコード候補を提供するようになりました。

ナビゲーション

選択した範囲のみで検索

選択範囲内のみを検索

Find(macOSの場合は⌘+F、Windows/Linuxの場合はCtrl+F)を使用すると、選択範囲内のみを検索できます。 エディタ内で必要なコード片を選択してFindを呼び出すだけで、IDEが選択範囲内のみを検索します。 ファイル全体内の検索に簡単に切り替えるには、⌘+F/ Ctrl+Fを2回押すか、バーにあるIn Selectionオプションを切り替えてください。

ファイル・マスク・オプションが有効な状態で「Find in Path(パスで検索)」を使って検索

ファイルマスクオプション付きの ‘Find in Path’ の使用

ファイルマスクを使用してFind in Pathダイアログを検索する際、GoLandがそれに応じて検索結果にファイル拡張子を表示するようになりました。 これにより、同じ名前でもファイル拡張子が異なるファイルを簡単に区別できるようになりました。

すべての新規プロジェクトに対してGlobal File Watcherを有効化

すべての新しいプロジェクトでgolangci-lintを有効化

GoLand 2018.2では、ProjectGlobalを使用して異なるプロジェクト間でFile Watcherの設定を共有できるオプション(Global File Watcher)を追加しました。

しかし、相変わらず新規プロジェクトを作成するたびにこのWatcherを有効化しなければなりませんでした。 このリリース以降は、作成または開くすべての新規プロジェクトでデフォルトでFile Watcherを有効にできるようになりました。

FileメニューでOther Settings | Settings for new projectsを選択し、Tools | File Watchersに移動してから新しいGlobal File Watcherを追加します。その後、その隣にあるチェックボックスを選択すると、そのGlobal File Watcherをすべての新規プロジェクトで有効化することができます。

チュートリアル

Extract Variable(変数の抽出)リファクタリングの新機能の演習

プロジェクトを完了させて納期に間に合わせる必要がある一方、現在ご利用中の製品に関する新機能ページ、リリースページ、ならびにブログ投稿を読む暇がないことはよくあるかと思います。 そのため、ご都合の良い時にGoLandの機能を学習できるチュートリアルを追加しました。

Tutorials(チュートリアル)はウェルカム画面のプロジェクトリストの上にあります。 IDEを新バージョンにアップグレードすると、新リリースの機能を紹介するレッスンが表示されます。 または、任意のプロジェクトから対応するツールウィンドウを使ってTutorialsにアクセスできます。

その他の変更

Hiearchy(階層)ツール・ウィンドウで呼び出し元と呼び出し先を切り替える

Hierarchyツールウィンドウ

Hierarchyツールウィンドウは、呼び出し先のメソッド階層を解析するための新しいオプションを提供します。 また、選択したメソッドの呼び出し元と呼び出し先を切り替える専用のボタンを2つ追加しました。 さらに、メニュー内で専用のボタンをクリックしてツリー内の要素をアルファベット順に並べ替えできるようになりました。 Tool WindowsリストでHierarchyツールウィンドウを表示するには、先に階層を構築してからNavigate | Call Hierarchy or Navigate | Type Hierarchyに移動してください。

IDEを再起動せずにテーマ・プラグインを切り替える

テーマとキーマッププラグインをその場で切り替え

GoLand 2019.3では、IDEを再起動せずに任意のテーマやキーマッププラグインをインストール・アンインストールできます。

設定で「Focus Editor(エディタをフォーカス)」アクション用に「Add Keyboard Shortcut(キーボード・ショートカットの追加)」を選択

フォーカスをエディタに戻すためのカスタムショートカット

ESCを使用する代わりに、エディタにフォーカスを戻すアクション用のカスタムショートカットを設定できます。 Preferences/Settings | KeymapFocus Editorアクションを探して右クリックし、ドロップダウンからAdd Keyboard Shortcutを選択してください。

エディタのスクロール・バーの可視性を向上

スクロールバーの視認性向上

スクロールバーの視認性を向上させるオプションを追加しました。 このオプションを使用するには、Preferences/Settings | Appearance & Behavior | AppearanceUse contrast scrollbarsチェックボックスを選択してください。

バージョン管理の改善

リポジトリのリストが記載された新しい「Clone(クローン)」ダイアログ

Cloneダイアログの改良

CloneダイアログはVCS | Get from Version controlの下にあります。 このダイアログからログインすると、またはログイン済みの場合、アカウントや組織別にグループ化されたすべてのリポジトリのリストをすぐにプレビューできます。

「Show Details(詳細の表示)」は競合する変更を示すウィンドウを開く

マージの競合に関する詳細な情報

merge、rebase、cherry-pick操作を実行中に発生する競合をより簡単に調査できるようになりました。 Show Detailsリンクをクリックするだけで、最終的なコードの状態を引き起こしたコミットのリストを取得できます。また、Mergeダイアログに変更対象のソースに関するより詳細な情報が表示されます。

データベースの更新

データベース・エクスプローラでコレクションとフィールドを表示

MongoDBのサポート

GoLand 2019.3はMongoDBの基本的なサポートを提供しています。 以下を行えるようになりました:

  • データベースエクスプローラー内でコレクションやフィールドを表示できます。
  • 任意のコレクションを開き、クエリの結果を監視できます。 カラムで並べ替えたり、値を絞り込んだりすることもできます。
  • クエリを実行し、結果を取得できます。 Ctrl/⌘+Enterを押すか、ツールバーのPlayボタンを使用して選択したステートメントを実行できます。
接続エラーの例

接続エラーを調査

接続エラーを調査しやすくなりました。 接続に失敗した際はIDE内の専用ボタンをクリックするだけで、Google検索エンジンを使ったエラーの検索結果に遷移できます。

ウェブ開発

CSSライブラリを使ってクラス名をコード補完

CDN上のCSSライブラリの補完

HTMLファイル内でBootstrapや別のCSSライブラリを使用し、それをCDNにリンクしている場合、当該ライブラリのソースをプロジェクトに追加することなくそのクラス名を補完できるようになりました。

新しい変数のコード提案

新しいシンボル名の提案

JavaScriptやTypeScriptで新しい変数やパラメータの名前を追加する際、使用中のプロジェクト、標準ライブラリ、および依存関係で定義されているクラス、インターフェース、type aliases(型エイリアス)の名前に基づいた名前が提案されるようになりました。

新しい変数、関数、クラス、インターフェースの場合は、同じ範囲で使用済みであるものの、未定義になっている名前も提案されます。