GoLand の新機能

GoLand 2022.2 では、ジェネリクスおよび go.work 関連の新機能が提供されています。 また、ファズテストのサポートも追加されました。

SQL ステートメントが自動検出されるようになったため、包括的なコード補完機能を使用できるようになりました。

GoLand が WebSocket 接続をサポートするようになり、HTTP と WebSocket プロトコルでの GraphQL クエリの送信が可能になりました。

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

ジェネリクス

空のインターフェースを any に置換するインテンションアクション

空のインターフェースを any に置換するインテンションアクション

GoLand に空のインターフェースの使用箇所を型または型制約として報告するインスペクションが追加されました。

また、interface{}any に置換するインテンションアクションも追加されています。 インテンションアクションのポップアップから、ファイル内にあるすべての空のインターフェースを置換できます。

空のパラメーターリストを持つ型パラメーターを削除するクイックフィックス

空のパラメーターリストを持つ型パラメーターを削除するクイックフィックス

空のパラメーターリストを持つ型パラメーターがエラーとして報告されるようになりました。 このような型パラメーターを削除するクイックフィックスが追加されています。

未使用の型パラメーターのインスペクション

未使用の型パラメーターのインスペクション

未使用の型パラメーターを報告する新しいインスペクションが追加されました。 このような型パラメーターはグレー表示されていますが、マウスポインターを合わせると警告が表示されます。

共用体でのメソッドを含むインターフェースのインスペクション

インターフェースとメソッドの直和 (union) に対するインスペクション

インターフェースとメソッドの直和 (union) を使用しようとすると、IDE がエラーを報告するようになりました。

制約として使用されている型パラメーターのインスペクション

制約として使用されている型パラメーターのインスペクション

型パラメーターを制約として使用しようとすると、GoLand がエラーを表示します。

メソッドの作成中に GoLand が型パラメーターの識別子を挿入します。

メソッドのレシーバーを入力する際の型パラメーター補完

メソッドを作成中にレシーバーを追加すると、GoLand が型パラメーターの識別子を挿入します。

「使用箇所の検索」に新しいグループを追加

Find Usages」(使用箇所の検索) に新しい型パラメーターのグループを追加

ジェネリクスの「Find Usages」(使用箇所の検索)に「Type parameter declaration」(型パラメーター宣言)グループが新たに追加されました。

ファズテスト

GoLand でのファズテストの実行

ファズテストの実行

GoLand からファズテストを実行できるようになりました。 ファズテストの横のガターにある緑色の三角形のアイコンをクリックすると、テストを実行するための各種オプションが表示されます。 テストが失敗すると、失敗したシードコーパスエントリがファイルに書き込まれ、testdata フォルダーのパッケージディレクトリに配置されます。

このファイルへのパスは、コンソールにもクリック可能なリンクとして表示されます。 そのリンクをクリックすると、IDE でファイルが開き、ファイルの上部に緑色の三角形アイコンが表示されます。 このアイコンをクリックすると、失敗したシードコーパスエントリを使って go test が実行されます。

From GoLand you can also run fuzz tests just like normal unit tests.

Go SDK をファジングをサポートするバージョンに変更するクイックフィックス

Go SDK を変更するクイックフィックス

ファジングをサポートしないように Go SDK を構成した場合、GoLand のガターに実行ボタンが表示されないようになりました。 現在の Go SDK がファジングをサポートしていない場合に Go SDK を変更するクイックフィックスが追加されています。

Go ワークスペース

複数の use ディレクティブを 1 つのディレクティブにグループ化するクイックフィックス

複数の use ディレクティブをグループ化するクイックフィックス

go.work ファイル内の複数の use ディレクティブを 1 つのディレクティブにグループ化するクイックフィックスが追加されました。

Go 1.19

Appendf 書式文字列引数の追加

fmt.Appendf のサポート

fmt.Appendf のサポートが追加され、GoLand が文字列内の書式動詞を認識するようになりました。 そのため、Add a format string argument(書式文字列引数の追加)インテンションアクションなど、書式設定関数が提供するすべての機能を Appendf 関数で使用できるようになりました。

unix ビルド制約のサポート

GoLand がすべての Unix または Unix 系システムを認識する新しい unix ビルドタグをサポートするようになりました。

Arch リストへの loong64 の追加

Go 1.19 では、loong64 という新しいアーキテクチャが導入されています。 このアーキテクチャは、Settings(設定) | Go | Build Tags & Vendoring(ビルドタグとベンダリング)Arch(アーキテクチャ )に追加されています。

クイックドキュメント

クイックドキュメントを改善しました。

  • GoLand が 25 個の各 Go キーワードについて、関連キーワードのセマンティクスを説明する有意義なキーワードツールチップを表示するようになりました。
  • チャンネルの方向情報が表示されるようになりました。 このデータは、chan キーワードにマウスポインターを合わせたとき、チャンネルの送受信操作時、チャンネルの型へのすべての参照の 3 つのタイミングまたは場所でツールチップに表示されます。
  • iota のクイックドキュメントに、使用方法に関する追加情報が含まれるようになりました。 定数が iota グループの一部である場合、制約が暗黙的に定義されている場合でも、補完ボックスにその値が表示されます。
  • 型の switch の動作を説明する新しいツールチップも追加されています。
 
  • 型パラメーターでクイックドキュメントを呼び出すと、GoLand がジェネリクスの仕組みに関する簡単な説明と Go チームによるチュートリアルへのリンクをツールチップに表示します。
  • 型アサーションのツールチップに、型アサーションに関する追加情報と例が含まれるようになりました。
  • マップ、配列、スライス、および構造体を初期化する際に波括弧内の領域にマウスポインターを合わせると、GoLand が追加情報を表示します。
  • 空の識別子にマウスポインターを合わせると、GoLand が空の識別子の内容とその動作に関する情報をツールチップに表示します。

Go に関するその他の改善

パフォーマンスの最適化

~/go/pkg/modcache サブディレクトリには IDE の正常動作に必要な情報が含まれていないため、GoLand がそのディレクトリをスキャンしなくなりました。 このフォルダーは非常に大きい場合があるため、スキャンから除外することでパフォーマンスが向上すると考えられます。

go:linkname ディレクティブのサポート

以下の go:linkname コンパイラーディレクティブのサポートが追加されました。

//go:linkname localname [importpath.name]

このディレクティブは、ソースコードで localname として宣言されている変数または関数のオブジェクトファイルシンボル名として importpath.name を使用するようにコンパイラーに指示します。

iota の非標準的な使用箇所のインスペクション

iota の非標準的な使用箇所のインスペクション

GoLand に、iota が非標準的に使用されていることを警告する新しいインペクションが追加されました。

iota という名前の定数に値を代入しようとした場合の警告

iota とその他の組み込み定数に対し、Reserved word used as name(名前として使用されている予約語)というインスペクションも有効になっています。 このインスペクションは、iotatrue、または false という定数に値を代入しようとした場合にトリガーされます。

値レシーバーとポインターレシーバーの両方に対するメソッドを持つ型に関する警告

値レシーバーとポインターレシーバーの両方に対するメソッドのインスペクション

Go のドキュメントでは、特定の型のすべてのメソッドには値レシーバーまたはポインターレシーバーのいずれかを指定することが推奨されています。

GoLand に、型に値レシーバーとポインターレシーバーの両方に対するメソッドがあることを警告する新しいインスペクションが追加されました。

SQL の自動検出

GoLand が SQL ステートメントを検出しています。

SQL ステートメントが自動的に検出され、特定のパターンに一致するすべての文字列リテラルに言語が注入されるようになりました。 文字列リテラルに言語を注入すると、リテラルを編集する際に包括的なコード支援を利用できます。

パターンを編集するための設定

Settings(設定)| Editor(エディター)| Language Injections(言語インジェクション)では、パターンの検索と編集、および独自のパターンの追加を行えます。

なんでも実行

Run Anything(なんでも実行)アクション

GoLand が実行/デバッグ構成、アプリケーション、スクリプト、コマンド、タスクを素早く起動し、最近のプロジェクトを開ける Run Anything(なんでも実行)アクションをサポートするようになりました。 このアクションを使用するには、Ctrl を 2 回押して検索バーに入力を開始します。

HTTP クライアント

WebSocket 接続によるメッセージの送信

WebSocket エンドポイントのサポート

GoLand が WebSocket 接続をサポートするようになりました。 リクエストを作成できるだけでなく、メッセージの送受信も行えます。

GraphQL クエリの送信

GraphQL エンドポイントのサポート

GoLand が初期状態で HTTP および WebSocket プロトコルを介して GraphQL クエリを送信できるようになりました。 http://https:// では単純な HTTP リクエストが使用され、ws://wss:// は WebSocket 実行プログラムに処理が委譲されます。

HTTP クライアントでの実行環境の選択

実行環境の選択

ガターの再生アイコンから実行環境を選択する方法が追加されました。 この機能を有効にするには、Run with(実行)コンボボックスから Select Environment Before Run(実行前に環境を選択する)オプションを選択してください。

リモート開発

GoLand のウェルカム画面にある Remote Development(リモート開発)セクション

GoLand の ウェルカム画面にある Remote Development(リモート開発)セクションを更新しました。 ここでは、バックエンドオーケストレーションに優先するメソッドを選択できます。 また、ポート転送機能をターミナルで実行されているプロセスでも使用できるようになりました。

新しいリモート開発機能の詳細については、こちらのブログ記事をご覧ください。

Space

Space の連携機能が GoLand にバンドルされました

JetBrains Spaceは、開発環境を通じて JetBrains IDE のプロジェクト管理、課題追跡、Git ホスティング、コードレビュー、継続的インテグレーション、パッケージリポジトリ、リモートバックエンドオーケストレーション機能を提供する包括的なソフトウェア開発プラットフォームです。

Space の連携機能が GoLand にバンドルされました。 With this first-class integration, you can browse Space projects and clone repositories, then start working on them directly. 変更の準備ができたら、IDE 内からマージリクエストを作成してコードレビューを実行できます。

リモート開発用の Space 開発環境を GoLand 内で直接管理できるようになりました

リモート開発用の Space 開発環境を GoLand で直接管理できるようになりました。

IDE が Space 組織に接続されると、すべての既存の開発環境が同期されます。 リポジトリとブランチ用の新しい開発環境を作成して、すぐにコーディングを開始できます。 作業が終了したら、開発環境を休止状態にしてリソースの消費を節約するか、そのまま削除することが可能です。

ユーザーインターフェース

プロジェクトウィンドウのマージ

macOS の Merge All Project Windows(すべてのプロジェクトウィンドウをマージ)アクション

macOS ユーザー向けに、開いているすべてのプロジェクトウィンドウを単一のウィンドウ内のタブに変換してマージする機能が導入されました。 これを行うには、Window(ウィンドウ)| Merge All Project Windows(すべてのプロジェクトウィンドウをマージ)に移動します。

ショートカットによるフォントサイズの変更

フォントサイズを変更するキーボードショートカット

エディター内全体のフォントサイズを変更するキーボードショートカットが導入されました。 フォントサイズを大きくするには Alt+Shift+. を押し、小さくするには Alt+Shift+, を押します。

エディター内のコード表示を拡大・縮小する際に、現在のフォントサイズとサイズをデフォルトに戻すオプションを表示するインジケーターを使用できるようになりました。

ブックマーク追加時に「説明」フィールドを使用する

ニーモニックブックマークの新しい説明フィールド

ブックマークのオプションの説明を追加できるように、Description(説明)フィールドを Add Mnemonic Bookmark(ニーモニックブックマーク)ダイアログに組み込みました。 ニーモニックブックマークを追加するには、ブックマークする行の横のガターを右クリックし、コンテキストメニューから対応するオプションを選択します。 または、Ctrl+F11 ショートカットを使用することも可能です。

ウェルカム画面

「リポジトリをクローン中」進捗バー

Cloning repository(リポジトリをクローン中)進捗バーが、Projects(プロジェクト)リストに表示されるようになりました。

コード補完設定にアクセスできるポップアップウィンドウ

コード補完設定への高速アクセス

コード補完ポップアップの縦三点リーダーメニューボタンからコード補完設定にアクセスできるようになりました。

エディター

コード補完設定

丸括弧の自動挿入制御

コード補完時の IDE による丸括弧の自動挿入を切り替えるオプションが追加されました。

設定ウィンドウの右下にある新しい Highlighting in editor(エディター内ハイライト)ドロップダウンメニュー

インスペクションのハイライトスタイルの変更

インスペクションのハイライトスタイルは、Settings(設定)| Editor(エディター)| Inspections(インスペクション)に追加された新しい Highlighting in editor(エディター内のハイライト)ドロップダウンメニューを使って調整できます。

このメニューにより、インスペクションをさらにカスタマイズできるようになります。 たとえば、特定のインスペクションの重要度レベルを Warning(警告)に設定し、ハイライトスタイルを Error(エラー)に変更することが可能です。

Docker

Copy Docker Image(Docker イメージのコピー)アクション

Docker イメージのコピー

新しい Copy Docker Image(Docker イメージのコピー)アクションを使用して、Docker デーモンから別の Docker デーモンにイメージをコピーできるようになりました。このアクションは、イメージをファイルに保存して、選択された接続にプッシュします。

IDE 再起動時の Docker 自動接続

GoLand が IDE の再起動後に Docker へ自動接続できるようになりました。 この新しい設定は Settings(設定)| Advanced Settings(高度な設定)| Docker にあり、デフォルトで有効になっています。

Colima と Rancher との統合

Colima と Rancher との統合により、GoLand がさらに多くのオプションで Docker デーモンへの接続を確立できるようになりました。

データベース

複数 CSV ファイルのインポート

複数 CSV ファイルをインポートするオプション

複数の CSV ファイルを選択し、まとめてインポートできるようになりました。

Script(スクリプト)と Playground(プレイグラウンド)解決モード

データベースの解決モード

データベースを操作する際に、Playground(プレイグラウンド)と Script(スクリプト)の 2 つのファイル解決モードを使用できるようになりました。

Playground(プレイグラウンド)は未接続のクエリを含む場合、Script(スクリプト)はシーケンスロジックを含むクエリがある場合に使用します。

その他の改善

信頼済み SSL 証明書のインポート

GoLand がシステムのトラストストアから信頼済み SSL 証明書をインポートできるようになりました。 エンタープライズ環境に固有のカスタム証明書が自動的に使用されます。 その他の操作は必要ありません。 初期設定の状態で、すべて動作します。

JSON および YAML ファイルのクリック可能な URL

JSON および YAML ファイルでは、http://https:// で始まる値に Web 参照が自動的に挿入されるようになりました。 Web ブラウザーでこれらのリンクを開き、HTTP クライアントでリクエストを生成できます。