GoLand の新機能

GoLand 2021.3 では、WSL 環境の Go プロジェクトがネイティブにサポートされるようになったほか、Inline Function(関数のインライン化)リファクタリングが追加され、ベータ版としてリモート開発がサポートされるようになりました。

このバージョンより、保存時に gofmt を実行する設定がデフォルトで有効になっています。 GoLand 2021.3 では、ARM64 向けの DelveShow Types(型の表示)オプションなどのデバッガーに対する若干の改善が行われています。

文字列を数値に変換するための新しい 2 つの後置補完と testify アサーションを使ったテーブルテスト用の新しいテンプレートが追加されているほか、構造体タグの値の補完が改善されています。

これまでと同様に、新しいバージョンの GoLand ではウェブ開発の機能強化が行なわれており、さまざまなデータベース操作用の新機能が追加されています。

対話的に学習したい方は、ウェルカム画面からアクセスできる「What's New in GoLand 2021.3」(GoLand 2021.3 の新機能)チュートリアルをご利用ください。

WSL のサポート

WSL でのプロジェクト作成と WSL での SDK 選択

WSL 内のプロジェクトを開き、そこにある SDK を指定する機能を追加しました。

WSL で新しいプロジェクトを作成する(または既存のプロジェクトを開く)と、GoLand が該当プロジェクトに WSL の Go SDK を使用する必要があることを伝えます。 Go SDK をダウンロードするか、\\wsl$ サブディレクトリにある既存の SDK を選択できます。

フォーマッター

ファイル保存時のコード整形

保存時の gofmt

保存時に gofmt と GoLand 独自のフォーマッターの両方を実行できる Reformat code(コードの整形)オプションがデフォルトで有効化されるようになりました。

保存時のコード整形に関する通知をポップアップ表示

既存ユーザーがこの変更に戸惑わないようにするため、各プロジェクトで 1 回だけ表示される通知を追加しました。 この通知は、Don’t show again(今後表示しない)をクリックするとオフにできます。

Edit actions on save(保存時のアクションを編集)をクリックすると、IDE の Settings(設定)| Tools(ツール)| Actions on save(保存時のアクション)が開き、そこで設定を管理できます。

リファクタリング

Inline Function(関数のインライン化)と Inline Method(メソッドのインライン化)

関数とメソッドに Inline(インライン化)リファクタリングを使用できるようになりました。 これを試すには、関数、メソッド、または呼び出しにキャレットを置き、Ctrl + Alt + N を押します。

Inline(インライン化)リファクタリングを呼び出すと、複数のオプションを含むポップアップウィンドウが開きます。 そのポップアップから、Refactoring Preview(リファクタリングのプレビュー)を開くこともでき、メソッドまたは関数のすべての呼び出しを見つけることができます。

補完

構造体タグの値に関するさまざまなコード補完オプションが提案されます

構造体タグでの値スタイル処理の改善

構造体フィールドにタグを追加する際のさまざまな複合語(camelCasesnake_case など)の処理方法を改善しました。

タグの入力を開始すると、GoLand が複数のオプションをリスト表示で提案します。 IDE は選択したオプションを記憶し、その構造体の他のフィールドに対しても同じスタイルをリストの先頭で提案するようになります。

Postfix Completion(後置補完)

後置補完による文字列から数値への変換

文字列から数値に変換する新しい後置補完

文字列を数値に変換する新しい後置補完を 2 つ追加しました。 ダブルクォート内に数字を入力してからドットを入力すると、GoLand が parseIntparseFloat という 2 つの数値解析オプションを提案します。

使用箇所の表示

Show Usages(使用箇所の表示)オプション使用時のソースファイル表示

ソースプレビュー

Show Usages(使用箇所の表示)機能が改善され、矩形のアイコンをクリックして検出された使用箇所のソースコードプレビューを有効にできるようになりました。

ターゲットの実行

リモートターゲット上のフォルダーを構成

ソースおよび実行可能ファイル用フォルダーの構成

プロジェクトのソースと実行可能ファイルが保存されているリモートマシン上のフォルダーに意味のある名前を指定できるようになりました。 フォルダーを構成するには、Run(実行)| Manage targets(ターゲットの管理) | Additional Settings(追加設定)に移動します。

プロジェクト全体のデフォルト実行ターゲット設定

プロジェクト全体のデフォルト実行ターゲット

プロジェクト全体のデフォルト実行ターゲットを設定できるようになりました。 Run(実行)| Manage targets(ターゲットの管理)に移動すると、 Project default target(プロジェクトのデフォルトターゲット)オプションを含むウィンドウが開きます。 プロジェクトに特定のターゲットを選択すると、そのターゲットを使用したまったく新しい構成が作成されます。

SSH 構成ウィンドウのプロキシ設定

SSH 接続用プロキシのサポート

SSH Configurations(SSH 構成)に、プロキシサーバーを指定できる新しい HTTP/SOCKS Proxy セクションを追加しました。 このセクションは、Settings(設定)| Tools(ツール)| SSH Configurations(SSH 構成)にあります。 または、現在開いているプロジェクトから Run(実行)| Manage Targets(ターゲットの管理)| ... に移動します。

デバッガー

デバッガーの新しい nil インターフェース表現

nil インターフェースの表現を改善

Go のインターフェースには、型とその型の値という 2 つの要素があります。 インターフェースが nil となるには、これら両方の要素が nil である必要があります。

int への nil ポインターを含む値を持つインターフェースがある場合、その内部の型は nil ではないため(*int です)、そのインターフェースは nil と同等にはなりません。 これはわかりにくいかもしれません。

このようなケースを検出するため、Debug(デバッグ)ツールウィンドウのVariables(変数)タブでインターフェースの表現方法を変更しました。 例えば、内部の型が *int であるインターフェースがあり、値が nil である場合、{interface{} | *int} *int(nil) のように表示されます。

2021.2 と 2021.3 におけるパッケージ名の表現の違い

Variables(変数)タブのパッケージ名を短縮表示

GoLand がデバッガーの Variables(変数)タブにパッケージの完全名を表示しなくなりました。 今後は完全名の最後の部分だけが表示されます。

Show Types(型の表示)の動作デモ

オブジェクトタイプの非表示/表示

オブジェクトタイプが Variables(変数)タブの表示スペースを取り過ぎている場合は、タブ領域を右クリックして表示されるメニューから Show Types(型の表示)オプションを無効にできます。 同じメニューをもう一度選択すると、再び有効にできます。

ARM64 用にビルドされた Delve 実行可能ファイルが GoLand で使用可能に

Linux ARM64 の Delve

このバージョン以降の GoLand には、ARM64 アーキテクチャ用にビルドされた Delve がバンドルされており、初期状態で Linux ARM でのデバッグが可能になっています。

また、特定のアーキテクチャ用の Delve が GoLand にバンドルされていない場合のエラーメッセージも改善し、 何が問題であるかを明示的に通知するようにしました。

テスト

testify アサーションを使用するコードの生成

testify アサーションのテンプレート

testify アサーションを使用するテーブルテスト用の新しいテンプレートを追加しました。 すでにパッケージで assert を使用している場合は、Alt + Ins を押して必要なオプションを選択すると、GoLand がアサーションを使用するコードを生成します。

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

クイックフィックスによる文字列書式の修正

エラー文字列書式のクイックフィックス

GoLand now has a quick-fix for an inspection that warns you about incorrect formatting of error strings: “Error strings should not be capitalized or end with punctuation”. Alt + Enter を押すと、GoLand が文字列書式の修正を提案します。

クイックフィックスによる型のエクスポート

Export type(型のエクスポート)クイックフィックス

エクスポートされていない型を返すエクスポート済み関数を記述している場合、GoLand はその型をエクスポートするクイックフィックスを提案します。

Go に関連するその他の変更点

context.TODO() に関する情報を表示するポップアップウィンドウ

context.TODO() インスペクション

context.TODO() の使用箇所をハイライトするインスペクションを追加しました。 このインスペクションは、Settings(設定)| Editor(エディター)| Inspections(インスペクション)で有効にできます。 このインスペクションは、記述時点でどの Context が使用されるべきかが不明瞭であった場合に、context.TODO() を変更すべきことを通知するリマインダーとして機能します。

Implement Methods(メソッドの実装)アクションを使用する際に TODO コメントを追加

//TODO implement me コメント

Implement Methods(メソッドの実装)アクションを使用する際に生成されるテンプレートに //TODO implement me コメントを追加するようにしました。 この特殊なコメントはエディターでハイライトされ、インデックス化され、TODO ツールウィンドウにリストされるようになるため、未実装のメソッドについてのリマインダーとして機能します。

リモート開発

GoLand のウェルカム画面に追加された Remote Development(リモート開発)セクション

GoLand でベータ版のリモート開発ワークフローがサポートされるようになりました。

GoLand のウェルカム画面から直接、リモート開発ワークフローをセットアップできます。 または、すべてのリモートバックエンドへのエントリポイントとして機能する新しい JetBrains Gateway アプリケーションを使用することができます。

リモート開発の開始手順については、こちらのページをご覧ください。

HTTP クライアント

http ファイルへの grpc リクエストの追加

gRPC リクエストのサポート

GoLand の HTTP クライアントが gRPC リクエストをサポートし、対応する補完機能を提供するようになりました。 GRPC キーワードでリクエストを開始すると、HTTP クライアントがそれを gRPC リクエストとして処理します。

proto ファイルのガターアイコンをクリックして gRPC リクエストを生成

.proto ファイルのガターアイコンをクリックすると、HTTP クライアントで自動的に gRPC リクエストを生成できます。

サーバーストリーミングリモートプロシージャコールを実行

現在のところ、HTTP クライアントは単項およびサーバーストリーミング PRC を実行できます。 通常の HTTP リクエストと同様に、このリクエストの本体とレスポンスはプレーンな JSON ファイルです。

HTTP クライアントの改善点は他にもいくつかあります。詳細は、こちらをご覧ください。

VCS 関連の機能強化

Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)アクションを実行

リモートブランチ対応の Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)

Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)アクションを使うと、選択したブランチをチェックアウトし、現在チェックアウトされているブランチでリベースすることができます。 このアクションをリモートブランチでも使用できるようになりました。

Push All up to Here(ここまでのすべてをプッシュ)アクションを実行

新しい Push All up to Here(ここまでのすべてをプッシュ)アクション

送信可能なコミットと作業中のコミットが混在しており、 確実に送信できるコミットのみをプッシュすることを検討する場合があります。

Git ツールウィンドウの Log(ログ)タブで選択したコミットまでのコミットをプッシュできるようになりました。 この操作を行うには、最後にプッシュするコミットを選択し、それを右クリックしてコンテキストメニューを呼び出し、Push All up to Here(ここまでのすべてをプッシュ)アクションを選択してください。

バージョン管理の設定

VCS 設定の再構成

VCS の設定がより見つけやすくなり、構造化されました。 Settings(設定)の Version Control(バージョン管理)ノードに、すべての使用可能な設定がリストされるようになっています。

UI の改善

Variables(変数)タブの Evaluate expression(式の評価)バー

Variables(変数)タブの Evaluate expression(式の評価)

Debug(デバッグ)ツールウィンドウの Variables(変数)タブで、Evaluate expression(式の評価)機能を使用できるようになりました。

Run(実行)ツールウィンドウのタブによる分割

Run(実行)ツールウィンドウのタブによる分割

タブをハイライトされた領域にドラッグアンドドロップして、Run(実行)ツールウィンドウを分割できるようになりました。 ウィンドウの分割を解除するには、上部ペインを右クリックし、コンテキストメニューから Unsplit(分割解除)を選択します。

Bookmarks(ブックマーク)ウィンドウの使用

新しい Bookmarks(ブックマーク)ウィンドウ

新しい Bookmarks(ブックマーク)ツールウィンドウが追加されました。 今後、F11 ショートカットで重要としてマークしたすべてのファイルとフォルダーはこのウィンドウに表示されます。

プロファイラー

2 つのスナップショットを比較した差分をフレームグラフで可視化

スナップショットの差分を可視化

2 つのスナップショットの差分をフレームグラフ上で可視化できます。 Shift を 2 回押し、検索バーに「Open Profiler Snapshots(プロファイラーのスナップショットを開く)」と入力します。 リストからスナップショットを開き、同じ操作を繰り返して別のスナップショットを開きます。

次に、片方のスナップショットのタブにある Compare With Baseline(基準と比較)ボタンをクリックします。 そのメニューから、比較対象のスナップショットを選択します。 すると、別の Diff(差分)タブが開き、比較結果が表示されます。

ターミナル

Windows の組み込みターミナルでの 24 ビットカラーサポートのデモ

ConPTY

GoLand’s terminal supports the new ConPTY API on Windows. We addressed several problems users were having with the old implementation, which was based on winpty, and enabled PTY on Windows by default.

ConPTY では、組み込みターミナルで 24ビットカラーがサポートされています。

リモートマシンで作業中に先行入力がサポートされた GoLand のターミナルで入力

先行入力

以前はリモートマシンで作業中に GoLand のターミナルで文字を入力する際にレイテンシが発生していたため、IDE がローカルマシンと同等の表示速度で文字を表示することはできませんでした。

この問題は、先行入力を新たにサポートすることで解決できました。 組み込みターミナルがテキストの変更を予測し、それをライトグレーで即時に表示します。

ウェブ開発

ES6 ファイルのインポートパスにクイックフィックスを使用してリモート ES6 モジュールをダウンロード

import ステートメント内の URL をサポート

ES6 ファイルのインポートパスにクイックフィックスを使用して、リモート ES6 モジュールをダウンロードできます。 このモジュールは、すべての依存関係を含めてダウンロードされます。 この動作を試すには、インポートパスにキャレットを置き、Alt + Enter を押して Download module(モジュールのダウンロード)を選択してください。

html ファイルへのコード入力と補完候補の受け入れ

HTML コード補完の改善

HTML でコード補完が機能する仕組みを改善しました。 エディターにタグ名または略語を入力するか、コード補完を呼び出すと、GoLand がすぐに関連性の高い候補を表示します。

以前は、開始山括弧(<)を先頭に入力しなければ表示されませんでした。 文字エンティティ参照のコード補完も改善されています。

Update ‘package name’ to the latest version(‘パッケージ名’ を最新バージョンにアップデート)クイックフィックスで npm パッケージをアップデート

依存関係アップデート用の新しいインスペクション

エディターから npm パッケージを最新バージョンに直接アップデートすることができます。 package.json ファイルを開き、アップデートするパッケージバージョンにキャレットを置いて Alt + Enter を押すと、Update … to the latest version(… を最新バージョンにアップデート)を選択できます。

JavaScript ファイルの要素を別々の行に配置し、1 行に戻す

複数の行に要素を配置

GoLand にコンマ区切りの要素を別々の行に素早く配置し、必要な場合に 1 行に戻せる JavaScript プロジェクト用のインテンションアクションが追加されました。

データベース関連の改善

データベースのセル範囲の Aggregate(集計)ビュー

セル範囲の Aggregate(集計)ビュー

セル範囲の Aggregate(集計)ビューを表示する機能を追加しました。 ビューで表示するセル範囲を選択し、右クリックして Show Aggregate View(集計ビューの表示)を選択してください。 1 つの集計値がステータスバーに表示され、どの値に指定するかを選択できます。

エディタータブの分割

独立したエディタータブ

エディターを分割して同じテーブルを開くと、そのデータエディターは完全に独立して開きます。 それぞれに異なるフィルターオプションや表示順オプションを設定できます。

WHERE 句と HAVING 句のブール式に対応した新しいインスペクション

ブール式のチェック

WHERE 句と HAVING 句のブール式に対応した新しいインスペクションを追加しました。

明示的にブール式でないように見える式を黄色でハイライトし、そのようなクエリを実行する前に警告を発します。

この機能は、ClickHouse、Couchbase、Db2,H2、Hive/Spark、MySQL/MarinaDB、Redshift、SQLite、および Vertica で動作します。 その他すべてのデータベースでは、エラーとしてハイライトされます。

選択したセルから関連データへの移動

複数値を指定した外部キーへの移動

データエディターでは、複数の値を選択して対応するデータに移動できます。

CSV ファイルの列の型を検出し、ポップアップウィンドウに表示

CSV ファイルの列の型を自動検出

GoLand は CSV ファイルの列の型を検出し、データを数値で並べ替えられるようになりました。 以前は、列のデータはテキストとして処理されていたため、期待どおりに並べ替えられませんでした。

MongoDB フィルター演算子に表示されるコード補完候補

MongoDB: filter {}sort {} の補完

MongoDB コレクションでデータをフィルタリングする際に、コード補完が機能するようになりました。

エディターと IDE の他の部分を異なるフォントで表示

データエディターのカスタムフォント

データエディターのフォントを IDE の他の部分とは別に設定できます。 フォントを選択するには、Settings(設定)| Tools(ツール)| Database(データベース)| Data views(データビュー)| Use custom font(カスタムフォントの使用)に移動してください。

アクセシビリティに関する更新

スクリーンリーダーを使った作業をより楽に行えるように、アクセシビリティに関する問題をいくつか解決しました。 マウスオーバーで表示されていたツールウィンドウウィジェットのポップアップとクイックドキュメントのポップアップを無効にしています。

macOS でのアクセシビリティサポートも改善されました。 VoiceOver のフォーカスに関する複数の問題を解決し、スクリーンリーダーを使ってプロジェクトを作成できるようになっています。 コーディング中の集中力低下を最小限に抑えるため、音声付きヘルプツールチップの数も減らしました。