GoLandの新機能

GoLand 2020.2 には、Go Modules の新機能、コード内の問題のレビューと修正の新しい手法、および新しいコードインスペクションが導入されます。 さらに、待望の Add Caret Per Selected Line などの新しいコード編集機能、ジェネリクスの実験的サポート、エディターから Go プレイグラウンドへのコードの共有機能、Windows での Git 向け WSL 2 サポートなどのバージョン管理への更新が含まれています。

文字よりも実践での学習をご希望ですか? IDE のようこそ画面に表示される What's New in GoLand 2020.2チュートリアルをご利用ください。

Go Modules の改善

Environment Variables ダイアログで、新しい GOMODCACHE 環境変数を設定

Go 1.15 以降、新しい GOMODCACHE 環境変数を使って、モジュールキャッシュのデフォルトの場所を $GOPATH/pkg/mod から別のフォルダに変更できるようになりました。

Preferences/Settings | Go Modules | Environment で GOMODCACHE を設定するだけで完了です。 カスタムの場所は IDE によって認識され、以降の依存関係とのすべてのアクションで使用されるようになります。

go.mod ファイルでモジュール依存関係に関するコメントを作成

go.mod ファイルで Comment With Line Comment(Windows /:Linux では Ctrl+/、macOS では ⌘/)アクションを利用できるようになりました。

GoLand は、go.mod ファイルの replace ステートメントの右波括弧を補完

GoLand で replaceexclude、および require ステートメントの左波括弧を入力すると、即座に右波括弧が追加されるようになりました。

コメントからすべてを取得

コメントからソースコードへのナビゲーション

IDE の Navigate to Declaration or Usages アクション(macOS では ⌘B、Windows/Linux では Ctrl+B/)を使って、コメントから関連するパッケージレベルの宣言への参照を表示してナビゲートできるようになりました。

コードインスペクション

Inspections ウィジェットでファイル内の警告とエラーをナビゲート

新しいInspections ウィジェットでは、コードエディターの右上に、現在のファイルにある警告数、エラー数、タイポ数が表示されるようになりました。 矢印アイコンまたは Next Error アクション(F2)を使用して、これらを確認できます。

ウィジェットでは、ハイライトレベル(なし、エラーのみ、またはすべての問題から選択)の構成、インスペクションのセキュリティレベルの変更、および作業の邪魔にならないように Compact View への切り替えを行えます。

Problems ビューからエラーに移動し、Alt+Enter で修正

Problems ツールウィンドウには、現在のファイル内にある警告やエラーの一覧とそういった問題の説明が表示されます。Alt+Enter を使うと、問題を即時に修正することができます。

Problems ツールウィンドウを開くには、Inspections ウィジェットをクリックするか、View | Tool Window | Problems に移動してください。 問題を右クリックすると、そのエラーが発生しているコードの行に直接移動します。

GoLand は、変換に関する潜在的な問題を警告し、Alt+Enter によって修正を提案

新しいコードインスペクションで、期待される数値文字列表現の x の代わりに、Unicode コードポイント表現の x を返すという潜在的な string(int) 変換の問題を処理できるようになりました。

GoLand は、こういった潜在的なミスをユーザーに通知し、該当するクイックフィックスを提供します。

GoLand は、不正なテスト名を警告し、Alt+Enter によって修正を提案

GoLand では、テストや例の一般的な誤使用方法が通知されるようになったため、go vet を明示的に呼び出す必要がなくなりました。 IDE は、TestmeTestMe に変更するように提案するなど、単純な文字ケース問題のクイックフィックスも提供します。

Malformed struct tag コードインスペクションは、潜在的な問題をユーザーに警告

Malformed struct tag コードインスペクションでは、構造体タグが Go の規約に適合しているかをチェックし、ユーザーに潜在的な問題を通知します。

GoLand は、不可能なインターフェースアサーションをユーザーに警告

Impossible interface type assertion コードインスペクションでは、v の静的型 V が、ターゲットインターフェース T を実装できない可能性のある型のアサーション v.(T) と対応する型の switch ケースをチェックします。

これは、 VT に、名前が同じでもシグネチャが異なるメソッドが含まれる場合に発生します。

コード編集

Show Context Actions は適用できるオプションを表示

インテンションアクションまたはクイックフィックスをコードに適用する前にその適用結果をプレビューするには、Alt+Enter ショートカットを使って Show Context Actions を呼び出し、必要なインテンションアクションまたはクイックフィックスを選択して、macOS では ⌥+Space、Windows と Linux では Ctrl+Shift+I を押します。

Add Caret Per Selected Line アクションは、選択された各行の最後にキャレットを作成

新しい Add Caret Per Selected Line アクションは、選択された各行の最後にキャレットを作成し、行の選択を解除します。 Windows/Linux では Alt+Shift+G ショートカット、macOS では ⌥⇧G ショートカットで呼び出します。

Put arguments on one line インテンションアクションは、式を個別の行に分割

すべての引数、関数パラメーター、および複合リテラル要素の折り返しは、Preferences/Settings | Editor | Code Style | Go | Wrapping and Braces で設定できます。

または、Alt+EnterPut arguments on separate lines および Put arguments on one line インテンションアクションを使って、手動で要素の分割と結合を行えます。

可変個引数の制御

Inline Variable リファクタリングは、スライスを可変個引数にアンパック

Introduce Variable(変数の導入)リファクタリング(Windows と Linux では Ctrl+Alt+V、macOS では ⌘⌥ V)では、複数の可変個引数を新しいスライス変数にパックし、逆に、変数のインライン(macOS では ⌥⌘N、Windows と Linux では Ctrl+Alt+N)、スライスを可変個引数にアンパックすることができます。

Unpack slice クイックフィックスの使用

さらに、Unpack slice クイックフィックスを使って、アンパックされた可変個引数に関する問題を処理できるようになりました。

プロジェクトをテンプレートとして保存

Save Project as Template ツールウィンドウ

プロジェクトやファイルをカスタムプロジェクトテンプレートとして保存することで、それらを再利用できるようになりました。Tools | Save Project as Template を選択してください。 IDE によって、ファイル、フォルダ、およびビルと構成が備わったプロジェクトツリーが作成されます。

Go Playground

ドロップダウンメニューの Share in Playground アクション

エディター内をダブルクリックすると、Go Playgroundにコードを共有して実行できるようになりました。 ドロップダウンメニューから Go Tools | Share in Playground を選択するか、Tools | Go Tools | Share in Playground を選択するか、macOS では ⌥⇧⌘S を、Windows/Linux では Ctrl+Alt+Shift+S を押してください。

また、go2 ファイルのジェネリクスを試す場合にも使用できます。その場合、GoLand から新しい https://go2goplay.golang.org/ にリダイレクトされます。

Generics a.k.a. 型パラメーター

構文ハイライトと基本的な参照解決を示すエディター内の go2 ファイル

Go チームは先日、ジェネリクスのドラフト設計を発表しました。 この概念の全容については、Golang ドキュメントを参照してください。

GoLand 2020.2 では、ジェネリクスを試すための実験的サポートを適用しています。Enable experimental support for generics a.k.a. type parameters 設定(Settings/Preferences | Go)を有効にしてください。

この初期サポートでは、構文ハイライトと基本的な参照解決が提供されており、go2 ファイルのみで機能します。

内部処理

Alt+Enter による Sync dependency

ベンダリングモードが有効である場合、プロジェクトの Vendor フォルダに保存されている依存関係パッケージのみでアプリケーションを構築します。

プロジェクトに vendor フォルダがあり、Settings/Preferences | Go | Go ModulesEnable vendoring mode automatically 設定がオンになっている場合は、vendor/ フォルダのみを使用して解決され、モジュールキャッシュが確認されなくなりました。

GoLand は、go list の進捗をプログレスバーに表示

GoLand は go list コマンドを順次に実行し、プログレスバーでキュー内の実際の go list コマンド数に関する情報を示します。

バージョン管理

Windows における Git の WSL2 サポート

Windows における Git の WSL2 サポート

GoLand 2020.2 では、WSL2 から Git を使用することができます。これは、Windows 10 バージョン 2004 の 5 月アップデートでネイティブ提供されるようになりました。 Windows に Git がインストールされていない場合、GoLand は自動的に WSL で Git を検索し、そこから Git を使用するようになります。 また、WSL から開いたプロジェクトについては、WSL から Git に自動的に切り替えられます( \wsl$ path より)。

Git 操作ダイアログの改善

Git 操作ダイアログの改善

MergePull、およびRebaseといったアクションにさらに一貫性を持たせ、わかりやすい情報を提供できるように、Git 操作ダイアログを再設計しました。 また、どの Git コマンドが実行されるのかを把握しやすくし、Pull ダイアログに –rebase オプションを、Mergeダイアログに –no-verify オプションを追加しました。

コメントアクションによるレビューの開始

GitHub プルリクエストの完全サポート

GitHub プルリクエストを完全サポートしました! GoLand を閉じることなく、プルリクエストの閲覧 / 割り当て / 管理 / マージ、タイムラインとインラインコメントの表示、コメントとレビューの送信、変更の承認を行うことができます。

Compare branches 結果の表現の改善

Compare branches 結果の表現の改善

GoLand で 2 つのブランチを比較する場合、比較されているブランチのコミットを 1 つのビューで閲覧できるようになりました。 IDE は、比較されている両ブランチのログを VCS ツールウィンドウではなく、エディターに開きます。VCS ツールウィンドウには、すべての情報を表示できるだけのスペースがありませんでした。

データベースの更新

セルの値を独立したエディターで操作

セルの値を独立したエディターで操作

セル内に巨大な値がある場合に、それを独立したパネルで表示または編集できるようになりました。 また、右側のツールバーを使用してソフトラップモードを切り替えられるようになりました。 コードエディターのすべての機能をデータの確認や編集に活用してください!

データエディターの DML プレビュー

データエディターの DML プレビュー

このバージョン以降、変更を表すクエリをデータエディター内でレビューできるようになりました。 保留中の変更がある場合、DML ボタンが有効になります。

さらに、DML プレビューのダイアログが表示されます。 GoLand は JDBC ドライバーを使用してテーブルを更新するため、このクエリはデータ変更用の正確な SQL ではありませんが、ほとんどの場合は同じものになります。

ブール値用の新しい UI

ブール値用の新しい UI

ブール値をより便利に表示および編集できる手段が追加されました。 true 値が箇条書きでマークされ、他のすべての値と区別できるようになりました。

Google BigQuery ダイアレクトのコーディング支援

Google BigQuery 言語

新しい SQL 言語、Google BigQuery を追加しました。 BigQuery はまだ完全にサポートされていませんが、部分的なサポートから開始します。 GoLand は Google BigQuery を使用している場合にクエリを正確にハイライトし、コーディング支援機能を提供することができます。

JavaScript と TypeScript

新しいスマートなインテンション

新しいスマートなインテンション(Alt+Enter)は、一部のアクションをより高速に実行するのに役立ちます。 例えば、数字インデックスを使った for ループを forEach 配列メソッドにすばやく変換できます。 また、エディター内に JavaScript および TypeScript ファイル内のドキュメントコメントが直接表示されるようになったため、これらのコメントを参照するのが楽になり、集中力の低下を最小限に抑えられるようになりました。