GoLand の新機能

GoLand 2021.1 は、Docker / SSH / WSL 2 を使用したリモートでのプログラムのビルドと実行//go:embed などの Go 1.16 で新たにサポートされた新機能、JSON からの迅速なコード生成、および新しいクイックフィックスを使用したより簡単に行えるエラー処理に対応しています。

GoLand は単なる Go IDE ではありません。Go のコードを処理する機能に加えて、JavaScript / TypeScript およびデータベースに対応した新機能を使用できます。

新機能を対話形式の説明で確認したいですか? ウエルカム画面で最新の What's New in GoLand 2021.1コースをご覧ください。

Run Targets

'Run Configuration' ウィンドウで作成済みのターゲットを構成

GoLand 2021.1 では、ローカル環境で使用できるすべてのソースコードを使ってマシン上で開発したり、リモートコンピューターをターゲットにしてコードを実行したりできます。 現在、IDE は Docker / SSH / WSL 2(Windows Subsystem for Linux)をサポートしています。

設定で Run | Manage Targets… を選択し、Add アイコン(+)をクリックしたあと、操作したいターゲットを選択するだけです。 構成を完了したら、Run | Edit Configurations… から Run Configuration(実行構成)を指定して操作するターゲットを選択する必要があります。

Go 1.16

フォルダーを embed ディレクティブに追加

//go:embed のサポート

Go 1.16 以降は、ビルド時にファイルとディレクトリを Go バイナリに埋め込めるようになります。

Embedding works on a few types of variables: string, []byte, and embed.FS. これらの変数はパッケージのトップレベルで宣言する必要があります。 また、埋め込みを機能させるには //go:embed ディレクティブを追加する必要があります。

GoLand はコードのハイライト表示、embed ディレクティブ内の参照からプロジェクト内のファイルやフォルダーへの移動、Rename(名前の変更)リファクタリング、Find Usages(使用箇所の検索)、コード補完、およびいくつかのインスペクションに対応しています。 例えば、GoLand は不正な型の変数にファイルを埋め込もうとしている場合に通知します。

クイックフィックスで 'Fatal' メソッドを 'Error' に置換

(t/b).Fatal の不正な使用箇所を検出

GoLand は、テスト中に作成されたゴルーチン内で testing.T メソッドの Fatal が不正に呼び出されている場合に警告を表示します。

この専用のクイックフィックスは、t.Error を使用してテストの失敗を通知し、return ステートメントを使用してゴルーチンを早く終了させるように t.Fatal(または同様のメソッド)を呼び出すコードを書き換えます。

IDE が警告を表示し、問題解決に適したクイックフィックスを提供します

asn1.Unmarshal の不正な使用箇所を検出

Go 1.16 では、go vetasn1.Unmarshal の不正な使用箇所を検出し、バイト列がマーシャリング解除された値が nil ではないことを保証しています。

GoLand 2021.1 は、この問題を解決するクイックフィックスで同様のチェックを提供しています。

JSON の操作

JSON データのコピーとエディターへの貼り付け

JSON データをコピーしてエディターに貼り付けるだけで、JSON からフィールドとタグを含む構造体をすぐに生成できます。

構造体を生成する前に JSON を調整したい場合は、Alt+EnterGenerate type from JSON(JSON から型を生成)インテンションを呼び出してください。 GoLand が Generate Go type from the JSON(JSON から Go の型を生成)ウィンドウを開き、そこにコピーした JSON が表示されます。 このウィンドウで必要な調整を行い、Generate ボタンを押すと構造体が生成されます。 もちろん、JSON をウィンドウに手動で貼り付けることもできます。

また、すでに存在する空の構造体の中で JSON を変換することもできます。 そのためには、対象となる空の構造体をクリックし、Alt+Enter を押すか Generate(生成)メニューから Generate struct fields from JSON(JSON から構造体フィールドを生成)インテンションを呼び出すだけです。

さらに、GoLand は不正な JSON コードが Generate Go type from JSON ウィンドウで使用されている場合に通知を表示します。

'Generate Go type from JSON' ウィンドウで JSON データから構造体を生成

構造体にエクスポートされるすべてのフィールドに JSON / XML のタグを作成するのがはるかに簡単になりました。

構造体や構造体のフィールドで Alt+Enter を使用して Add key to tags(タグにキーを追加)を呼び出すと、GoLand が構造体のすべてのフィールドにフィールド名でタグを追加します。 すべてのタグについてフィールド名のスタイルを変更する場合は、任意のキーで Alt+Enter をもう一度押し、Change field name style in tags(タグにあるフィールド名のスタイルを変更)を選択してください。 サポート対象のスタイルは、fieldName / FieldName / field-name / field_name です。

Update key value in tags(タグ内のキーの値を更新)インテンションアクションを使用すると、すべてのタグ値をまとめて更新できます。 構造体のいずれかのタグ値で Alt+Enter を押すと、GoLand が各フィールドにあるタグ値の末尾にキャレットを追加します。

また、IDE は JSON / XML / ASN.1 コード用の SDK が提供するタグ値内の既知のトークンを補完します。

新たにサポートされたスタイルの JSON ファイル

さらに、GoLand 2021.1 では構造化されたデータやログの処理に使用される改行区切りの JSON Lines をサポートしています。 IDE は .jsonl.jslines.ldjson.ndjson のファイルタイプを認識します。

このフォーマットのファイルには複数の行が含まれており、各行には JSON オブジェクトが改行文字区切りで記述されています。 行頭と行末にはコンマは必要なく、ファイルの内容全体を角括弧や波括弧で囲む必要もありません。

より簡単なエラー処理

'Unhandled Error' コードインスペクションと 'Wrap error handling in a closure' クイックフィックスの動作

Unhandled Error(未処理エラー)コードインスペクションに対応する次のようなクイックフィックスが追加されました。

  • Handle error(エラーの処理)クイックフィックスは呼び出しの結果を変数に代入し、if error not nil チェックを生成します。
  • Wrap error handling in a closure(クロージャーでエラー処理をラップする)クイックフィックスは defer および go ステートメントに対応しており、Handle error と同様のコードを生成します。ただし、すべてをクロージャーでラップする点が異なっています。
  • Ignore explicitly(明示的に無視)の適用範囲を拡張し、defer および go ステートメントを含めるようにしました。 このクイックフィックスは呼び出しの結果を空の変数に代入し、すべてをクロージャーでラップします。

その他のクイックフィックス

新しいクイックフィックスでバイトを文字列に変換

複合リテラルでの型の非互換性に対するクイックフィックス

型の非互換性を解消するクイックフィックスの適用範囲を拡張しました。 また、インターフェースの実装と、複合リテラル内に必要な型への変換を提案するようにしました。

新しいクイックフィックスで必要なすべてのフィールドを含む型を作成

欠落フィールドを生成する Create Type クイックフィックス

Create Type(型の作成)クイックフィックスを使用すると、GoLand が未定義の型を使用していることを検出した際に型の作成できるだけでなく、フィールドを作成することもできます。

'Select Fields' ウィンドウで構造体から getter と setter を生成

getter と setter の一括生成

巨大な構造体に含まれる各フィールドに対して get / set メソッドを生成するのは、かなり退屈な作業になると思われます。 構造体全体に対して getter と setter を一括で生成できるようになりました。

構造体に含まれる任意のフィールド名で Alt+Enter を押し、ドロップダウンメニューから Generate getter and setters(getter と setter の生成)を選択するだけです。 すると、GoLand が Select Fields(フィールドの選択)ウィンドウを開きます。そこで、すべてのフィールドか、必要なフィールドのみに対して get / set メソッドを生成することができます。

リファクタリング

既存の構造体から型を抽出

Extract Type リファクタリング

Extract Type(型の抽出)リファクタリングを使用すると、既存の型からの型の抽出や、匿名の構造型から名前付き型への変換を実行できます。 このリファクタリングは、Ctrl+Alt+Shift+T で呼び出せます。

Go モジュール

'Rename' リファクタリングでモジュールの名前を変更

go.mod ファイルに対応した Rename リファクタリング

あるモジュールをプロジェクトで十分に検証し、初期の作業をすべて終えた後、そのモジュールの名前を変更する必要がある場合があります。 そこで、go.mod ファイルに対応した Rename リファクタリングを追加しました。 このリファクタリングを使用すると、モジュール名を安全に新しい名前に変更できます。古いモジュール名を置換するのに、プロジェクトツリーで検索と置換を実行する必要はありません。

モジュール名で Shift+F6 を押して Rename リファクタリングを呼び出します。 GoLand が Rename ウィンドウを開きます。そこで、現在の名前を変更したり、コメントと文字列にある名前を変更するかどうかを指定できます。また、リファクタリングのプレビューを開くこともできます。 Refactoring Preview(リファクタリングプレビュー)タブからは、対象モジュール名のすべての使用箇所に移動できます。 リファクタリングを使用して実装したすべての変更は、「元に戻す」を使用してすぐに取り消すことができます。

Postfix Completion(後置補完)

新しい後置補完の動作

新しい varCheckError 後置補完

エラーを返す識別子の後に .varCheckError を入力すると、IDE が自動的にデフォルトの変数名を追加し、関数からエラーを返します。

フォーマッター

'Import' の設定

組み込みのフォーマッターが goimports -local と同じようにインポートをグループ化できるようになりました。

この機能を有効にするには、Settings | Editor | Code Style | Go | Imports を開き、インポートのグループ化を有効にしてください。 その後、別々のブロックにグループ化するインポートを指定できるようになります。

実行&デバッグ

'Process Elevation' の設定

GoLand 2021.1 では、拡張した sudo セッションを実行できます。 初回実行時には、GoLand が sudo の実行を継続するか、即座に終了するかを確認するメッセージを表示します。 この回答を変更したい場合は、Settings | Appearance & Behavior | System Settings | Process Elevation を開いてください。

このオプションを有効にすると、GoLand とすべてのサードパーティ製プラグインがご利用のシステムにアクセスできるようになります。ご注意ください。

コード補完

機械学習を使ったコード補完をオンにしてコード補完を実行した結果

機械学習を使ったコード補完を有効化しました。 この変更により、初期段階の機械学習(ML)ベースのコード補完が標準のランク付けメカニズムに替わって導入されます。

Settings | Editor | General | Code CompletionMark position changes in completion popup(コード補完ポップアップで変更のあった位置をマーク)にチェックを付けると、ML 補完が再ランク付けした候補を補完リストにある上下の矢印アイコンでマークできます。

UI の改善

新しいクイックアクセスメニューで IDE のテーマを変更

クイックアクセスメニュー

旧バージョンの IDE では左下にあった Configuration(構成)ウィジェットが、クイックアクセスメニューに置き換えられました。 この新しいメニューは、右上に表示されます。 歯車アイコンを押すと、テーマやキーマップの切り替え、プラグインへの移動、設定への移動を行えます。

Windows で最近使用したプロジェクトにすばやくアクセス

Windows の「スタート」メニューから最近使用したプロジェクトにすばやくアクセス

Windows でタスクバーやスタートメニューの GoLand アイコンを右クリックして、最近使用したプロジェクトにアクセスできるようになりました。

新しいツールチップ表示

ツールチップ表示の改善

ツールチップが重ならないよう、ツールチップが 1 つずつ表示されるようになりました。

'Typography' の設定

フォントのバリエーション

Settings | Editor | Font パネルからフォントのバリエーションを選択できるようになりました。

その他の変更

新しい組み込みのブラウザープレビューの動作

組み込みの HTML プレビュー

HTML ファイルをすばやくプレビューできる、新しい組み込みのブラウザープレビューを追加しました。 IDE で HTML ファイルに行った変更や、リンク先の CSS / JavaScript ファイルの変更は即座に保存され、その場でプレビューに反映されます。

プレビューを開くには、エディターの右上にあるウィジェットの GoLand ロゴをクリックしてください。

エディター内のタブサイズを変更

分割表示でのエディタータブの最大化

分割したエディターで複数ファイルを同時に編集する際に、もう少し広い作業スペースを確保したいですか? 操作中のタブをダブルクリックすると、そのタブに合わせてエディターのウィンドウが最大化されます。 タブをもう一度ダブルクリックするだけで、元のサイズに戻すことができます。

IDE の 'Plugins' ページにインストールされた 'Makefile Language' プラグイン

Makefile Language プラグインをデフォルトで使用可能

GNU Make をサポートする Makefile Language プラグイン(以前はサードパーティ製でした)が、デフォルトでバンドルされるようになりました。 GoLand 2021.1 から、Makefile に対応した構文ハイライト、クイックドキュメント、ターゲットに対応した Find Usages、いくつかのナビゲーションとコード補完アクションを初期状態で使用できるようになりました!

Code With Me

「Code With Me」の実際の動き

JetBrains の共同開発およびペアプログラミング用の新サービスである Code With Me が、GoLand にバンドルされました。

プロジェクトに必要なアクセスレベスを設定し、ゲストにリンクを共有できます。 相手は共同作業を行うために、IDE をインストールする必要すらありません組み込みの音声/ビデオ通話とチャットメッセージ機能が、コードに関するチームの議論や知識の共有、効率のよい共同作業を支援します。

特にセキュリティに対する配慮が必要な企業の場合、オンプレミス版の Code With Me を社内のプライベートネットワークにインストールして安全に運用できます。

現在ご利用中の JetBrains ライセンスで Code With Me を使用できるかどうかを価格ページでご確認ください。

Docker

'Run Options' フィールドでのコード補完

実行/デバッグ構成の改善

Run/Debug Configuration(実行/デバッグ構成)ダイアログに対し、以下のような複数の改善を実施しています。

  • 必要なすべてのビルドオプションを追加するには、Modify options(オプションの変更)をクリックします。実行オプションを追加するには、Modify(変更)をクリックします。 IDE は互換性を確保するため、それぞれのオプションを検証するようになりました。
  • Docker-compose に関しては、既存のすべてのオプションをサポートしています。サポート対象には、環境変数ファイル (.env) を宣言するためのオプションも含まれます。
  • Dockerfile に関しては、コード補完が Run Options(実行オプション)フィールドで機能するため、すべての実行コマンドを記憶する必要はありません。
  • Docker Images に関しては、コード補完を使用して Image ID または name フィールドにイメージ名を入力できます。
IDE が BuildKit を使用してイメージをビルドします

BuildKit のサポート

プロジェクトのビルドを大幅に高速化する BuildKit のサポートを実験的に開始しました。 このオプションは、Run/Debug ConfigurationsModify options をクリックして Enable BuildKit (experimental) を選択するだけで有効にできます。

ステージ名の横にあるハンマーアイコンをクリックするだけで、IDE が BuildKit を使用してイメージをビルドします。 Run/Debug ConfigurationsRun セクションを追加すると、アイコンが変化します。 そのアイコンをクリックすると、イメージをビルドしてコンテナーを実行できます。

エディター内でステージを折りたたむ

マルチステージ Dockerfile での UI 改善

Dockerfile で複数の FROM ステートメントを使用すると、各 FROM 命令について新しいステージが開始されます。 GoLand 2021.1 では、ステージを折りたたんでステージ間に目立つ区切り線を表示できるようになりました。

Services ツールウィンドウにある専用ボタンを使った Docker の停止

Docker の実行停止

Dockerfile の実行を停止したい場合は、Services ツールウィンドウで簡単に実行できます。 実行中の項目を選択してからコンテキストメニューを呼び出し、Stop Deploy(デプロイを停止)クリックするだけです。

'Bind Mounts' ウィンドウでのコード補完

Docker マウントの環境変数とマクロ

バインドマウントを使用する際、ホストマシン上のパスをよりすばやく入力できるようになりました。 補完メカニズムにより、Run/Debug Configurations(実行/デバッグ構成)の Bind mount(バインドマウント)オプションでマクロと環境変数を選択できます。

Dockerfile のイメージをコード補完

Dockerfile のイメージ補完

最後に付け加えますが、イメージ名に対応した補完を追加しました。

ウェブ開発の変更

エディター内に MDN ドキュメントを含むツールチップを表示

MDN ドキュメントのバンドル

GoLand に MDN ドキュメントがバンドルされるようになりました。 これによって MDN の Web サイトとの接続に関する問題を回避し、エディター内に HTML / CSS / JavaScript ファイルをより高速に表示できるようになります。 また、エディター内に表示されるドキュメントの情報がさらに拡充されました。例えば、JavaScript API のサポート対象ブラウザーバージョンに関する情報を確認できます。

Stylelint の動作と対応するクイックフィックス

Stylelint のサポート改善

Stylelint による CSS コードのインスペクションがより簡単になりました。 数回クリックするだけで、この評価の高いリンターを使用して問題箇所を修正できるようになりました。 ファイル内の問題箇所にマウスカーソルを合わせるか、キャレットを配置したあと、Alt+Enter を押してから Stylelint: Fix current file(Stylelint: 現在のファイルを修正)を選択するだけです。

また、Settings | Languages & Frameworks | Style Sheets | Stylelint の対応するフィールドで構成ファイルのパスを指定できるようになりました。

セレクターに対するドキュメントポップアップ

CSS セレクターの詳細度

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. あるいは、セレクターにフォーカスがある状態で Ctrl+Q を押し、この情報を Documentation ポップアップに表示することもできます。

データベース操作

テーブル内の新しい 'ORDER BY' フィールド

ソート処理の改善

データのソート処理を改善しました。

  • 新しい ORDER BY フィールドは、WHERE フィールド(以前は フィルター と呼ばれていたもの)と同様の動きをします。使用する句を入力して、それをグリッドのクエリに適用します。
  • デフォルトの状態では、ソート処理を「重ねる」ことはできません。 つまり、データをソートする列名をクリックすると、他の列を条件にしたソートは無効になります。 ソート処理を重ねたい場合は、Alt キーを押したまま列名をクリックしてください。
  • クライアント側でソート処理を使用したい場合は(この場合、GoLand はクエリの再実行も現在ページ内のデータのソートも行いません)、Sort via ORDER BY(ORDER BY でソート)のチェックを外してください。
  • 数値型の主キーを基準にした定義済みの条件を使用してテーブルを開くこともできます。
エディターでの 'Select first N rows from a table'

コンテキストライブテンプレート

これは、単純なステートメントをデータベースエクスプローラーから直接生成できるソリューションです。 一般的なライブテンプレートは、単純なクエリをすばやく記述する必要のあるさまざまなケースに対応しています。 しかし、JetBrains はデータベースエクスプローラーを使用している時点ですでに目的のオブジェクトに注目している場合があることを理解しているため、対象のオブジェクトから単純なクエリを取得できる便利な仕組みを用意しています。

Select first N rows from a table は一般的なテンプレートのように見えます(実際、同様の使い方ができます)。 この特殊な構文をすべてのデータベースで使用することはできないため、対応するダイアレクトがテンプレートに設定されています。 主な違いは、特殊な式 dbObjectName$table$ 変数に使用することで、このテンプレートをデータベースエクスプローラーで使用できるようにしていることです。

新しいウィンドウによるオブジェクトへの権限付与

権限付与用の UI

オブジェクトを変更する際に権限を編集するための UI を追加しました。

データベースエクスプローラーのユーザーに対して Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。

この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。