GoLand 2023.3 の新機能

GoLand 2023.3 にはいくつかの重要な機能が追加されています。

  • JetBrains IDE の生産性を向上させる多数の新機能と改善が盛り込まれた JetBrains AI Assistant が一般公開されました。
  • Dev Container が正式にサポートされるようになりました。現時点では機能セットに取り組んでおり、Dev Container のサポートを活発に開発している最中であるため、「ベータ」のタグが付いています。
  • エラー処理、単一行の return と panic、およびその他のコードに使用するコード折りたたみスタイルを大幅に更新しました。
  • slice 式のヒント、カスタムの printf 系関数のコードインサイト、デバッガーの強化など、生産性を改善する複数のヒント、リファクタリング、およびクイックフィックスを追加しました。

GoLand 2023.3 では Docker と Kubernetes の統合の更新、VCS、およびウェブ開発のいくつかの調整も行われています。早速お試しください!

AI Assistant 一般提供

最新アップデートにはエディター内に直接生成するように強化されたコード生成機能、ユーザーがコードをコピーしなくてもコンテキストを認識してプロジェクト関連のクエリに回答する AI チャット、プロジェクトを認識し、拡張されたコンテキストを使用して包括的な結果を提供する AI アクションが含まれています。新しい差分ビューアーは AI アクションによってコードに適用された変更をより簡単に識別できるように改良されています。

Use AI Assistant in GoLand as a supplemental feature with a JetBrains AI Service subscription.

GoLand の AI Assistant: Rename(名前の変更)

名前を決めるのは簡単ではありません。そのため、GoLand の AI Assistant は可読性を高めるために関数名のアイデアをいくつか提案します。

GoLand の AI Assistant: Write documentation(ドキュメントの作成)

コードのドキュメント化は退屈なものの、日常的に必要とされる作業です。 Write documentation(ドキュメントの作成)アクションを使用すると、数回クリックするだけで適切なコメント付きのコードを簡単に作成できます。

GoLand の AI Assistant: Generate Unit Test(ユニットテストの生成)

AI Assistant は特定の関数またはメソッドに対するテストを作成し、最初のテストクラスが作成された後により多くのテストケースを追加するように提案します。

リファクタリング

別パッケージへの Create function(関数の作成)クイックフィックス

このクイックフィックスでは存在しない関数名を入力し、指定したパッケージに実装を生成できます。

Extract Parameter(パラメーターの抽出)リファクタリング

2023.3 リリースでは待望の Extract Parameter(パラメーターの抽出)リファクタリングが初めて部分的に導入されています。未解決の参照に対して Create Parameter(パラメーターの作成)を使用して未解決の参照を選択し、このクイックフィックスのオプションでパラメーターを作成できます。パラメーターの型があまり明確でない場合に型を変更したり、デフォルト値を指定したり、そのデフォルト値で呼び出しを変更することもできます。

Dev Container ベータ

Dev Container のサポート

GoLand が Dev Container のサポートを開始したことにより、コンテナーをプロジェクトの編集、ビルド、実行用のフル機能を備えた開発環境として使用できるようになりました。 Dev Container は SSH 接続を使用してリモートで実行することも、Docker を使用してローカルで実行することもできます。

Dev Container Features のサポート

GoLand 2023.3 は Dev Container Features をサポートしており、開発に不可欠な追加のツール、ランタイム、およびライブラリを素早く簡単に統合できるようになっています。

Dev Container 内での Docker Compose のサポート

Dev Container 内での Docker Compose のサポートも導入しています。IDE を含むメインコンテナーとデータベースやメッセージキューなどを含む依存関係コンテナーの両方をシームレスに起動できるようになったため、開発を進める際に役立ちます。

コードの折りたたみの改善

単一行の return と panic

単一行の return と panic について、新しい簡潔なコード折りたたみスタイルを使用するオプションが追加されました。このスタイルは元のコードに非常に近いものです。

新しい折りたたみ構文はデフォルトで有効になっています。

case 節にも同様の方法を使用しています。上向きの矢印が廃止され、ダブルコロンのみが折りたたまれるようになっています。

単一の return を含む関数

単一行の return と panic と同様に、単一の return ステートメントを含む関数でも折りたたみを有効にしました。

エラー処理

エラー処理コードの可読性を高めるため、GoLand はエラー処理の if ブロックを自動的に折りたたみます。
エラー処理コードを含む if ブロックについては、GoLand はログ記録の呼び出しなどのすべての単一ステートメントも折りたたみます。

string 書式設定におけるコードの折りたたみの無効化

string 書式指定のコードの折りたたみを無効化し、関連する構文を見やすくしました。さらに、この新しいコードの折りたたみ方法ではコードブロックを展開せずに編集できます。

コード補完

列挙型の switch の生成

GoLand が列挙型の switch ステートメントの記述を支援できるようになりました。コード補完ですべての値に対応する case の生成を提案します。

case が iota を使用して宣言された定数を含む場合に分岐の欠落を警告

このインスペクションは iota 定数の switch 式を追跡するのに役立ちます。 switch で網羅されていない case について警告し、欠落した節の追加か default 節の追加を解決策として提示します。

実行とビルド

プログラムのコードカバレッジプロファイル

この機能を使用すると、正確にどのコードが単一または複数の実行に達したかを確認できます。また、デッドコードの検出にも役立ちます。
以前はテスト実行のみで機能していましたが、main 関数でもカバレッジ付きで実行できるようになりました。

その他の Go 関連機能

slice 式のパラメーターヒント

slice 式は分かりにくい場合があり、これは特にインデックスが 3 つの場合に顕著です。スライスを作成する際に GoLand がヒントを表示するようになりました。

カスタムの printf 系関数のコードインサイト

GoLand は標準の printf 系関数に対し、プレースホルダーのハイライト、エラー検出、コードの折りたたみなどの多数の便利な機能を提供しています。このリリースではユーザー定義の printf 系の関数にこれらすべての機能を使用できるようになりました。

データフロー解析

GoLand 2023.3 では CLion で使用されているエンジンをベースとする洗練されたデータフローアナライザーが導入されています。この機能は潜在的な nil 逆参照、不正または欠落しているエラー処理、常に true/false となる条件といったコードの問題をより広範に検出します。

この機能は現時点では早期アクセスであり、デフォルトでは無効になっていることに注意してください。 Settings(設定)| Editor(エディター)| Inspections(インスペクション)| Go | Data Flow Analysis (experimental)(データフロー解析(実験的)) で有効にできます。フィードバックをお寄せください!

asdf による Go のローカルインストールのサポート

asdf は複数の言語ランタイムバージョンを管理できる CLI ツールです。コミュニティからのフィードバックに応えて、最新バージョンでは asdf のサポートを含めることになりました。最新リリースの GoLand は .tool-versions ファイル内に記載された Go のバージョンを確認し、選択されたプロジェクトに適した Go バージョンを使用します。

Go 1.21 の上位互換性とツールチェーンの管理

Go 1.21 および以降では、より新しいバージョンの Go を必要とするコードのコンパイルミスがないように、細心の注意が払われています。具体的には go.mod の go 行に最低限必要な Go ツールチェーンのバージョンを指定できるようになっていますが、これは過去のリリースではあまり強制力を持たない推奨値でした。

このリリースの GoLand はこのフローを完全にサポートしており、go.mod ファイルの go または toolchain 行で指定されている SDK バージョンを自動的にダウンロードします。指定されているバージョンは Go プロジェクトの設定にも自動的に設定されます。

ベンダリングのサポートのパフォーマンス改善

GoLand 2023.3 は最新の IntelliJ プラットフォーム API への移行が完了しているため、プロジェクトに vendor ディレクトリが含まれる場合は go list -m を再実行しません。キャッシュの使用効率が向上しているため、多数の Go モジュールを含むプロジェクトのパフォーマンスが強化されています。

デバッガー

Run to Cursor(カーソル位置まで実行)インレイオプション

デバッグ中に特定のコード行まで素早く移動するための Run to Cursor(カーソル位置まで実行)インレイオプションが新たに導入されました。プログラムが一時停止したら、実行を続けたいコード行にマウスポインターを合わせます。その後、Run to Cursor(カーソル位置まで実行)ポップアップを利用してカーソル位置の行に到達するまでのコードを実行できます。

VCS

GitLab スニペットのサポート

GitLab の統合機能を拡張し、GitLab スニペットのサポートを追加しました。 IDE 内で公開または非公開のスニペットを直接作成できるようになっています。

Kubernetes

ファイルからクラスターのコンテキストを追加するオプション

必要なシステムの外部ディレクトリにあるクラスターから kubeconfig コンテキストを簡単に追加できるようになりました。プロジェクトに kubeconfig ファイルへのリンクを含めることで、プロジェクトで作業する際にこのようなクラスターを使用できるようになります。この方法で追加された kubeconfig の内容はシステム (~/.kube/config) 側にコピーされたり、システム側で変更されたりすることはありません。この機能はクラウドまたはオンプレミス環境から Kubernetes クラスターの追加と除去を頻繁に行う場合に特に便利です。詳細はこちらを参照してください。

Kubernetes ツール一式の自動インストール

Kubernetes プラグインを使用し始める際、kubectl や Helm のインストールが必要になる場合があります。これらがマシンにインストールされていない場合は IDE が自動的にインストールすることを提案します。

Telepresence によるデバッグの改善

Telepresence を使用すると、自分のワークステーションがクラスターのメンバーであるかのように Kubernetes アプリケーションのマイクロサービスをローカルでデバッグできます。このリリースでは、Telepresence のワークフローをクラスターのコンテキストメニューに移動してアクセスしやすくしました。また、よりスムーズにデバッグできるようにインターセプトの管理を合理化しました。

Terraform での import ブロックのサポート

GoLand は Terraform 構成言語のバージョン 1.5 以降のトップレベル import ブロックをサポートしています。 import ブロックを使うと、現在のインフラストラクチャを Terraform の管理下に置くことが可能です。コードブロック内で import が使用されている場合、インフラストラクチャが標準の plan および apply サイクルに組み込まれ、状態操作が停止されます。 Terraform がインポートされたリソースの自動コード生成を実行するため、インフラストラクチャをコード化する際の時間を節約できます。

その他の更新

TypeScript 関連の改善

GoLand 2023.3 では import type ステートメントを追加する際に発生していたいくつかの矛盾が解決されています。型をインポートする際の TypeScript の型指定子または import type ステートメントの使用方法を構成するオプションを追加しました。また、TypeScript ファイル用の package.json の exports フィールドの動作も改善しました。

HTTP クライアントの改善

大きな .http ファイル内でのナビゲーション操作を強化するため、Structure(構造)ビューを改善しました。このアップデートではリクエストタイプに応じてラベルを色分けし、そのコンテンツをより分かりやすくリスト表示するようにもなっています。また、@ を使用した変数の宣言と OAuth 2.0 のパスワードおよびクライアント資格情報付与タイプによる認証のサポートも追加されています。

Cypress と Playwright のサポート

GoLand が Cypress テストと Playwright テストを自動的に検出するようになるため、ワンクリックで実行とデバッグを行えます。このサポートには Test Tree(テストツリー)内を自由に参照し、結果を詳しく調べて問題を発見する機能も含まれています。

オールインワンの差分ビューアー

コード変更のレビュー方法がレベルアップしました。ファイルを 1 つずつ調査するのではなく、変更セットに含まれるすべての変更済みファイルを 1 つのスクロール可能なフレームで確認できるようになっています。詳細はこちらを参照してください。