GoLand 2023.1 では、脆弱性チェッカー、gRPC コード間の移動操作の改善、およびジェネリクスレシーバー対応の Rename(名前の変更)リファクタリングが導入されました。
非標準ライブラリパッケージを使用するスクラッチファイルの実行、正規表現による独自の検索と置換インスペクションの作成、raw 文字列リテラルとダブルクォートで囲まれた文字列リテラルの迅速な相互変換を行えるようになりました。 Implement interface(インターフェースの実装)インテンションアクションがエクスポートされていないインターフェースに機能するようになりました。
その他、新しい UI に対する複数の改善、Docker と Kubernetes 関連のアップデート、ウェブ開発に関する改善も行われています。
対話的に学習したい方は、「Welcome」(ようこそ)画面からアクセスできる「What's New in GoLand 2023.1」(GoLand 2023.1 の新機能)チュートリアルをご利用ください。
GoLand が go.mod
内で既知の脆弱性のあるパッケージが強調表示されるようになりました。 強調表示されたコードにマウスポインターを合わせるか、Alt+Enter を押して Show vulnerability info for …(脆弱性情報を表示...)を選択すると、GoLand が脆弱性と詳細な説明へのリンクが記載されたリストを表示します。 脆弱性に関するデータは、ソフトウェアセキュリティ会社の Checkmarx により提供されております。
go.mod
で強調表示されたパッケージにカーソルを置き、Alt+Enter を押して Change package-name version to v0.x.x(パッケージ名バージョンを v0.x.x に変更)クイックフィックスを選択すると、依存関係が脆弱性のないバージョンに更新されます。
GoLand のエディターでは既知の脆弱性のあるパッケージに含まれるメソッドの呼び出しも強調表示されます。 ハイライトされたコードにマウスポインターを合わせると、脆弱性に関する情報と詳細な説明へのリンクがポップアップ表示されます。
Code(コード)| Analyze Code(コードの解析)| Show Vulnerable Dependencies(脆弱性のある依存関係を表示)からアクセスできます。
GoLand の HTTP クライアントは現在、gRPC リクエストの実行をサポートしています。 gRPC リクエストは Endpoints(エンドポイント)ツールウィンドウからでも実行可能です。
このバージョンでは、gRPC 機能セットに新たに有用な機能が追加されています。 Go コードからはメッセージ、サービス、メソッドの宣言に、.proto
ファイルからは Go の実装に移動・アクセスできるようになりました。
これには、メッセージ、サービス、メソッド、またはそれらの実装の宣言の横にある専用のアイコンをクリックします。
非標準ライブラリの Go 依存関係を使用するスクラッチファイルを実行できるようになりました。 プロジェクトファイルからスクラッチファイルにコードをコピーして Run(実行)ボタンを押すと、GoLand が -overlay
フラグを使用する Run(実行)構成を作成します。 このフラグは、元のプロジェクトでファイルパスを go.mod
と go.sum
にマッピングする JSON ファイルで使用されます。
構造体で型パラメーターの名前を変更した場合、Rename(名前の変更)リファクタリングがそれに応じてレシーバーの変更を提案するようになりました。
ジェネリクスコードでインターフェース、実装、およびメソッドの仕様間の移動操作に影響していた複数の問題を解決しました。 また、ジェネリクスに関連する誤検出に対する複数の追加修正も行いました。
raw 文字列リテラル(バッククォートで囲まれた文字列)とダブルクォートで囲まれた文字列リテラルを相互に素早く変換するためのインテンションアクションが追加されました。
これまでは整数を文字列に変換する必要がある場合、GoLand は Convert to ‘string’(‘文字列’ に変換)クイックフィックスを提案していました。 この変換を正しく完了するには、その後に Convert integer to string using strconv.Itoa() call(strconv.Itoa() の呼び出しを使用して整数を文字列に変換)という別のクイックフィックスを使用する必要がありました。
このワークフローを単純化し、GoLand が直接 Convert integer to string using strconv.Itoa() call(strconv.Itoa() 呼び出しを使って整数を文字列に変換)クイックフィックスを提案するようにしました。
Implement interface(インターフェースの実装)インテンションアクションがエクスポートされていないインターフェースに機能するようになりました。
GoLand に //go:embed
のような Go ディレクティブの先頭にあるスペースを検出して除去するのに役立つインスペクションとクイックフィックスが追加されました。
前のリリースでは、Intention Preview(インテンションのプレビュー)をデフォルトで有効にしました。
この機能を使用すると、IDE の提案を適用した場合にコードがどのように変化するかをすぐに確認できます。
今回はそのサポート対象を広げ、Introduce local variable(ローカル変数の導入)、Create variable/global variable(変数/グローバル変数の作成)、Create constant/global constant(定数/グローバル定数の作成)、Create field(フィールドの作成)、Merge declaration up(宣言を上にマージ)、Delete all unused parameters(未使用のパラメーターをすべて削除)、Create function(関数の作成)、Create method(メソッドの作成)、Fill all fields(すべてのフィールドを埋める)の各インテンションアクションとクイックフィックスでもプレビューできるようにしました。
Scanning files to index…(インデックス作成対象のファイルをスキャン中...)プロセスをスマートモードで実行することで、IDE の起動エクスペリエンスを改善しました。この改善により、IDE の全機能を起動プロセスの非常に早い段階で使用できるようになっています。 プロジェクトを開くと、GoLand が前のセッションのキャッシュをプロジェクトに使用し、同時にインデックス作成対象のファイルを探します。 スキャンによって変更が見つからなければ IDE を完全に使用できる状態になるため、これまで起動時のインデックス作成で生じていた遅延がなくなります。
Windows Defender のリアルタイム保護が機能している場合にトリガーされる新しい通知が追加されています。 このようなウイルス対策チェックは IDE の速度を大幅に低下させる可能性があるため、GoLand は指定されたフォルダーを Defender の除外リストに追加するように提案します。 この通知では、これらの設定を自動的に再構成するか、Defender の構成手順を確認してから手動で再構成するかのオプションが提供されます。
Code Vision 機能を更新しました。 GoLand がインターフェースの実装数とメソッドの仕様を表示するようになりました。
前のバージョンではすべての関数と型の近くに使用状況の表示が導入され、現在のプロジェクト内での関数や型の参照数が示されるようになりました。 また、バージョン管理の統合が有効な場合はコード作成者が表示されるようになっています。
正規表現を使用して独自の検索置換インスペクションを作成できるようになりました。 このようなインスペクションは、スタイルまたはフォーマットの問題をハイライトする場合に特に有用です。
Settings(設定)| Editor(エディター)| Inspections(インスペクション)に移動します。 リストから Add RegExp Search Inspection(正規表現の検索インスペクションを追加)を選択すると、新しいインスペクションをセットアップできるダイアログに移動します。 目的の言語を選択し、左側のパネルのヒントを使用して正規表現を作成してから必要な置換を指定します。 プロジェクト内の問題を IDE にどのようにハイライトさせるかを指定することも可能です。
2022.3 バージョンでは、Go Playground の機能を GoLand に統合しました。
このバージョンではその機能が改善されています。 まず、開発バージョンか以前のバージョンを選択した場合にバージョンパラメーターが共有 URL に含まれるようになりました。
また、Playground でコードを共有する許可を求めるポップアップウィンドウをオフにするオプションも追加されています。 このポップアップは、Settings(設定)| Go | Ask before sharing in Go Playground(Go Playground で共有する前に確認する)で無効にできます。
コピーまたは切り取った行を選択範囲を指定せずに貼り付ける場合のユーザーエクスペリエンスを改良しました。 内容の貼り付け位置を制御できる特別な設定が追加されています。
Settings(設定)| Advanced Settings(高度な設定)で、Editor(エディター)セクションに移動し、ドロップダウンリストから希望する Paste(貼り付け)アクションの動作を選択します。
Settings(設定)| Editor(エディター)| General(全般)| Appearance(外観)| Show Whitespace(空白の表示)に、コードを選択した場合にのみ IDE の空白が小さなドットで表示されるように設定できる Selection(選択)チェックボックスが追加されました。
Typo(タイポ)インスペクションを更新し、ハッシュと特殊な値のスペルチェックを行わず、スペルミスとして報告しないようにしました。 この更新は以下の値に対応しています。
関数呼び出しに Call(呼び出し)グループという新しい Find Usages(使用箇所の検索)のグループを追加しました。
また、Find Usages(使用箇所の検索)ウィンドウの一般的なコード要素の使用箇所の表現にいくつかの修正を実装しました。
GoLand 全体を拡大・縮小し、すべての UI 要素のサイズをまとめて増減できるようになりました。 メインメニューから、View(表示)| Appearance(外観)| Switch Zoom IDE(IDE のズームを切り替え)を選択して、IDE の表示倍率を調整します。
サイドツールウィンドウの幅を統一するか、レイアウトのカスタマイズに合わせてサイズを自由に調整する機能を保持する新しいレイアウトオプションを導入しました。 Settings(設定)| Appearance(外観)| Appearance & Behavior(外観 & 振る舞い)| Tool Windows(ツールウィンドウ)で新しい Remember size for each tool window(各ツールウィンドウのサイズを記憶する)チェックボックスを使用できるようになりました。
この設定は新しい UI ではデフォルトでオフになっているため、表示されるツールウィンドウの幅はすべて同じになり、ウィンドウを切り替えても同じサイズが維持されます。 このオプションは以前の UI ではオンになっているため、複数のツールウィンドウはそれぞれ異なる幅を持ちます。この設定をオフにすれば、いつでも幅を調整できます。
複数のツールウィンドウレイアウトを保存して管理し、必要に応じてレイアウトを切り替えられるようになりました。
新しいレイアウトを保存するには、希望どおりにツールウィンドウを配置し、Window(ウィンドウ)| Layouts(レイアウト)| Save Current Layout as New(現在のレイアウトを新規として保存)に移動します。 配置を調整したら、Save Changes in Current Layout(現在のレイアウトに変更を保存)オプションを使って現在使用されているセットアップを更新するか、これらの変更を別のカスタムレイアウトとして保存することができます。 保存したレイアウトを有効にするには、Window(ウィンドウ)| Layouts(レイアウト)のリストでレイアウトを見つけ、名前にマウスポインターを合わせて Apply(適用)をクリックします。
このバージョンには、新しいプロジェクトの Actions on Save(保存時のアクション実行)の動作を事前定義するオプションが追加されています。
この機能を使用するには、File(ファイル)| New Projects Setup(新規プロジェクトのセットアップ)| Preferences For New Projects(新規プロジェクトの環境設定)| Tools(ツール)| Actions on Save(保存時のアクション実行)に移動し、プロジェクトで変更内容を保存する際にトリガーするアクションを選択します。
昨年は GoLand と他の JetBrains IDE に新しく、よりミニマルな UI を導入しました。 この新しい UI には皆さんのフィードバックを基にさらなる改良を加えています。 このリリースに含まれる新しい UI への主な変更点については、続きをお読みください。 Settings(設定)| Appearance & Behavior(外観 & 振る舞い)の New UI(新しい UI)チェックボックスをオンにすると、新しい UI を試すことができます。
新しい UI の詳細については、こちらのページをご覧ください。
小さめの画面での新しい UI のユーザーエクスペリエンスを改善するため、外観をより集約させた Compact Mode(コンパクトモード)を導入しました。このモードでは、ツールバーとツールウィンドウヘッダーの高さ、間隔とパディング、アイコンとボタンが縮小されています。
Compact Mode(コンパクトモード)をオンにするには、View(表示)メニューに移動し、Appearance(外観)| Compact Mode(コンパクトモード)を選択してください。
また、Zen モードと Distraction Free(集中)モードのトップツールバーが表示されなくなっています。
新しい UI では、ツールウィンドウエリアを分割してウィンドウを使いやすく整理できるオプションを導入しました。
このエリアにツールウィンドウを追加して下の方に配置するには、サイドバーに沿ってアイコンをドラッグし、セパレーターの下にドロップします。 または、アイコンを右クリックしてコンテキストメニューを呼び出し、Move to(移動)アクションを使ってツールウィンドウの新しい位置を割り当てます。
複数のプロジェクトを開いている場合、メインツールバーの下に表示されるプロジェクトタブを使ってプロジェクトを簡単に切り替えられるようになっています。 これを行うには、Window(ウィンドウ)| Merge All Project Windows(すべてのプロジェクトウィンドウをマージ)に移動します。
新しい UI に Show Hidden Tabs(非表示タブの表示)機能を追加しました。 開いているタブの全リストを表示するドロップダウンが追加されています。以前は非表示になっていることがありました。
エディターのタブが非表示になっている場合に現在開いているファイルの名前を表示するペインを追加することで、新しい UI のユーザーエクスペリエンスを向上させました。
IDE ウィンドウの上部にある Run(実行)ウィジェットを再設計しました。 アイコンの色が緑になり、落ち着きのある目に優しい外観になっています。以前はアイコン周辺の領域が色で強調されていました。
このビルドでは、testcontainers-go
パッケージを使用する際にコンテナー名を補完する機能を追加しました。
コンテナー名を入力すると、すでに実装済みの Pull Docker image(Docker イメージのプル)アクションを使用できます。
Docker-compose ノードの Dashboard(ダッシュボード)タブにすべての Docker Compose コンテナーのログを集め、すべてをまとめて表示できるようになりました。リアルタイムで更新されます。
Azure Container Registry に簡単に接続できるようになりました。 Settings(設定)| Build, Execution, Deployment(ビルド、実行、デプロイ)| Docker | Docker Registry に移動し、Registry(レジストリ)入力フィールドで Docker V2 オプションを選択して設定します。
Docker バインドマウントに :z 構成フラグを追加して、ボリュームを SELinux ワークステーションの Docker コンテナーに接続する機能が導入されました。 この機能を有効にするには、Settings(設定)| Advanced Settings(高度な設定)| Docker に移動します。
新しい Kubernetes ファイルをより簡単に作成できるよう、Project(プロジェクト)ツールウィンドウを右クリックすると表示される New(新規)メニューに Kubernetes Resource(Kubernetes リソース)アクションを新たに追加しました。
Kubernetes Resource(Kubernetes リソース)オプションを選択すると、Pod、Deployment, ConfigMap などの最も一般的なリソースタイプのリストが記載されたポップアップが表示されます。
Kubernetes Secret を作成するための新しいダイアログを導入しました。
キーと値を手動で入力して新しい Secret を作成できます。 または、作成される Secret の値に使用される内容を含むファイルを指定できます。
クラスターのリソースに View YAML(YAML の表示)アクションを使用して開いているファイルを変更する際、IDE がガター内ですべての編集箇所を色分けしたマークでハイライトするようになりました。 これにより、リソースの必要な箇所に変更が行われたことを確認してから、クラスターに適用することができます。
また、Compare with Cluster(クラスターと比較)アイコンを使うと、リソースの現在のバージョンをクラスターから取得してローカルバージョンと比較する Diff ペインを開くことができます。
Services(サービス)ビューで kubeconfig ファイルに簡単にアクセスし、それをエディターで開けるようになっています。 GoLand の外部で kubeconfig ファイルを変更すると、IDE がそれを検出し、Services(サービス)ツールウィンドウの構成を自動的に再読み込みします。 さらに、IDE で kubeconfig ファイルのコードハイライトとコード補完がサポートされるようになりました。
Forward Ports(ポートの転送)、Delete Resource(リソースの削除)、Describe Resource(リソース情報の取得)など、Services(サービス)ビューのほとんどの Kubernetes アクションにショートカットを割り当てられるようになりました。 カスタムショートカットを設定するには、Settings(設定)| Keymap(キーマップ)| Plugins(プラグイン)| Kubernetes に移動します。
新しいインテンションアクションを使って Markdown ファイルのテーブルの書式を修正できます。 Alt+Enter ショートカット から、または黄色い電球アイコンを押して表示されるリストから Reformat table(テーブルの整形)をクリックすると、このクイックフィックスにアクセスできます。
Markdown ファイルで Fill Paragraph(段落の整形)エディターアクションがサポートされ、長いテキストを長さが同じ複数の行に分割できるようになりました。 これを行うには、編集する段落内にキャレットを置いて Edit(編集)メニューからアクションを呼び出すか、Search Everywhere(どこでも検索)(Shift を 2 回)を使って Fill Paragraph(段落の整形)コマンドを検索して実行します。
Markdown の環境設定の構成と編集を行える専用のページを Settings(設定)| Editor(エディター)| General(全般)| Smart Keys(スマートキー)に追加しました。 これまで Settings(設定)| Languages & Frameworks(言語とフレームワーク)に含まれていた単一のチェックボックスに代わって、各種エディター機能のチェックボックスが個別に提供されているため、このページを使うと環境設定の管理が楽になります。
Branches(ブランチ)ポップアップのユーザビリティを改善しました。 たとえば、ブランチが展開可能なリストにグループ化されて保管されるようになり、ブランチ間の移動操作がより簡単になっています。
Create New Branch(新規プロジェクトの作成)ポップアップに補完が実装されました。 Ctrl+Space を押すと、IDE が既存のローカルブランチの名前に基づいて関連する接頭辞を提案します。
ファイルの変更を追跡しやすくするため、Structure(構造)ツールウィンドウに色ヒントを追加しました。 ツールウィンドウでは、変更されたオブジェクトの名前が青色になり、新たに追加されたオブジェクトの名前が緑でハイライト表示されます。
Git と Mercurial のコミットチェックの動作を改良し、コミットプロセス全体を高速化しました。 コミット後のプッシュ前チェックがバックグラウンドで実行されるようになっています。
Pull Request(プルリクエスト)ツールウィンドウを改良しました。 プルリクエストを開くたびに専用のタブが表示されるようになっています。 このタブには変更されたファイルのリストが瞬時に表示されますが、提供される情報は以前よりも少なくなっています。 このため、現在のタスクにより専念できるようになります。 プルリクエストの現在の状態に応じて最も重要と考えられるアクションを簡単に実行できる専用のボタンも追加されました。
GoLnad に Astro のサポートが導入されました。 このサポートは、Settings(設定)| Plugins(プラグイン)からインストールできる新しい Astro プラグインを使って得られます。 このプラグインには、構文ハイライト、自動インポートのコード補完、リファクタリング、ナビゲーション、適切な書式設定などの基本機能が備わっています。
GoLand に ${
を入力するたびに、シングルクォートまたはダブルクォートで囲まれた文字列がテンプレートリテラルに自動変換されるようになっています。 これは、生の文字列だけでなく、JSX プロパティにも機能します。
Vue テンプレートに TypeScript のサポートを追加しました。script
タグの lang
属性を ts
に設定すると有効になります。 従来は script
タグの lang
属性の設定に関係なく JavaScript が使用されていました。
注意: バージョン 2023.1 でのウェブ開発に関するすべての改善は、WebStorm の新機能ページで詳しく紹介しています。