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コースをご覧ください。
GoLand 2021.1 では、ローカル環境で使用できるすべてのソースコードを使ってマシン上で開発したり、リモートコンピューターをターゲットにしてコードを実行したりできます。 現在、IDE は Docker / SSH / WSL 2(Windows Subsystem for Linux)をサポートしています。
設定で Run | Manage Targets… を選択し、Add アイコン(+)をクリックしたあと、操作したいターゲットを選択するだけです。 構成を完了したら、Run | Edit Configurations… から Run Configuration(実行構成)を指定して操作するターゲットを選択する必要があります。
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 は不正な型の変数にファイルを埋め込もうとしている場合に通知します。
GoLand は、テスト中に作成されたゴルーチン内で testing.T
メソッドの Fatal
が不正に呼び出されている場合に警告を表示します。
この専用のクイックフィックスは、t.Error
を使用してテストの失敗を通知し、return ステートメントを使用してゴルーチンを早く終了させるように t.Fatal
(または同様のメソッド)を呼び出すコードを書き換えます。
Go 1.16 では、go vet が asn1.Unmarshal
の不正な使用箇所を検出し、バイト列がマーシャリング解除された値が nil ではないことを保証しています。
GoLand 2021.1 は、この問題を解決するクイックフィックスで同様のチェックを提供しています。
JSON データをコピーしてエディターに貼り付けるだけで、JSON からフィールドとタグを含む構造体をすぐに生成できます。
構造体を生成する前に JSON を調整したい場合は、Alt+Enter で Generate 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 ウィンドウで使用されている場合に通知を表示します。
構造体にエクスポートされるすべてのフィールドに 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 が提供するタグ値内の既知のトークンを補完します。
さらに、GoLand 2021.1 では構造化されたデータやログの処理に使用される改行区切りの JSON Lines をサポートしています。 IDE は .jsonl
、.jslines
、.ldjson
、.ndjson
のファイルタイプを認識します。
このフォーマットのファイルには複数の行が含まれており、各行には JSON オブジェクトが改行文字区切りで記述されています。 行頭と行末にはコンマは必要なく、ファイルの内容全体を角括弧や波括弧で囲む必要もありません。
Unhandled Error(未処理エラー)コードインスペクションに対応する次のようなクイックフィックスが追加されました。
if error not nil
チェックを生成します。 defer
および go
ステートメントに対応しており、Handle error と同様のコードを生成します。ただし、すべてをクロージャーでラップする点が異なっています。 defer
および go
ステートメントを含めるようにしました。 このクイックフィックスは呼び出しの結果を空の変数に代入し、すべてをクロージャーでラップします。 型の非互換性を解消するクイックフィックスの適用範囲を拡張しました。 また、インターフェースの実装と、複合リテラル内に必要な型への変換を提案するようにしました。
Create Type(型の作成)クイックフィックスを使用すると、GoLand が未定義の型を使用していることを検出した際に型の作成できるだけでなく、フィールドを作成することもできます。
巨大な構造体に含まれる各フィールドに対して get
/ set
メソッドを生成するのは、かなり退屈な作業になると思われます。 構造体全体に対して getter と setter を一括で生成できるようになりました。
構造体に含まれる任意のフィールド名で Alt+Enter を押し、ドロップダウンメニューから Generate getter and setters(getter と setter の生成)を選択するだけです。 すると、GoLand が Select Fields(フィールドの選択)ウィンドウを開きます。そこで、すべてのフィールドか、必要なフィールドのみに対して get
/ set
メソッドを生成することができます。
Extract Type(型の抽出)リファクタリングを使用すると、既存の型からの型の抽出や、匿名の構造型から名前付き型への変換を実行できます。 このリファクタリングは、Ctrl+Alt+Shift+T で呼び出せます。
あるモジュールをプロジェクトで十分に検証し、初期の作業をすべて終えた後、そのモジュールの名前を変更する必要がある場合があります。 そこで、go.mod ファイルに対応した Rename リファクタリングを追加しました。 このリファクタリングを使用すると、モジュール名を安全に新しい名前に変更できます。古いモジュール名を置換するのに、プロジェクトツリーで検索と置換を実行する必要はありません。
モジュール名で Shift+F6 を押して Rename リファクタリングを呼び出します。 GoLand が Rename ウィンドウを開きます。そこで、現在の名前を変更したり、コメントと文字列にある名前を変更するかどうかを指定できます。また、リファクタリングのプレビューを開くこともできます。 Refactoring Preview(リファクタリングプレビュー)タブからは、対象モジュール名のすべての使用箇所に移動できます。 リファクタリングを使用して実装したすべての変更は、「元に戻す」を使用してすぐに取り消すことができます。
エラーを返す識別子の後に .varCheckError
を入力すると、IDE が自動的にデフォルトの変数名を追加し、関数からエラーを返します。
組み込みのフォーマッターが goimports -local と同じようにインポートをグループ化できるようになりました。
この機能を有効にするには、Settings | Editor | Code Style | Go | Imports を開き、インポートのグループ化を有効にしてください。 その後、別々のブロックにグループ化するインポートを指定できるようになります。
GoLand 2021.1 では、拡張した sudo セッションを実行できます。 初回実行時には、GoLand が sudo の実行を継続するか、即座に終了するかを確認するメッセージを表示します。 この回答を変更したい場合は、Settings | Appearance & Behavior | System Settings | Process Elevation を開いてください。
このオプションを有効にすると、GoLand とすべてのサードパーティ製プラグインがご利用のシステムにアクセスできるようになります。ご注意ください。
機械学習を使ったコード補完を有効化しました。 この変更により、初期段階の機械学習(ML)ベースのコード補完が標準のランク付けメカニズムに替わって導入されます。
Settings | Editor | General | Code Completion の Mark position changes in completion popup(コード補完ポップアップで変更のあった位置をマーク)にチェックを付けると、ML 補完が再ランク付けした候補を補完リストにある上下の矢印アイコンでマークできます。
旧バージョンの IDE では左下にあった Configuration(構成)ウィジェットが、クイックアクセスメニューに置き換えられました。 この新しいメニューは、右上に表示されます。 歯車アイコンを押すと、テーマやキーマップの切り替え、プラグインへの移動、設定への移動を行えます。
Windows でタスクバーやスタートメニューの GoLand アイコンを右クリックして、最近使用したプロジェクトにアクセスできるようになりました。
ツールチップが重ならないよう、ツールチップが 1 つずつ表示されるようになりました。
Settings | Editor | Font パネルからフォントのバリエーションを選択できるようになりました。
HTML ファイルをすばやくプレビューできる、新しい組み込みのブラウザープレビューを追加しました。 IDE で HTML ファイルに行った変更や、リンク先の CSS / JavaScript ファイルの変更は即座に保存され、その場でプレビューに反映されます。
プレビューを開くには、エディターの右上にあるウィジェットの GoLand ロゴをクリックしてください。
分割したエディターで複数ファイルを同時に編集する際に、もう少し広い作業スペースを確保したいですか? 操作中のタブをダブルクリックすると、そのタブに合わせてエディターのウィンドウが最大化されます。 タブをもう一度ダブルクリックするだけで、元のサイズに戻すことができます。
GNU Make をサポートする Makefile Language プラグイン(以前はサードパーティ製でした)が、デフォルトでバンドルされるようになりました。 GoLand 2021.1 から、Makefile に対応した構文ハイライト、クイックドキュメント、ターゲットに対応した Find Usages、いくつかのナビゲーションとコード補完アクションを初期状態で使用できるようになりました!
JetBrains の共同開発およびペアプログラミング用の新サービスである Code With Me が、GoLand にバンドルされました。
プロジェクトに必要なアクセスレベスを設定し、ゲストにリンクを共有できます。 相手は共同作業を行うために、IDE をインストールする必要すらありません。 組み込みの音声/ビデオ通話とチャットメッセージ機能が、コードに関するチームの議論や知識の共有、効率のよい共同作業を支援します。
特にセキュリティに対する配慮が必要な企業の場合、オンプレミス版の Code With Me を社内のプライベートネットワークにインストールして安全に運用できます。
現在ご利用中の JetBrains ライセンスで Code With Me を使用できるかどうかを価格ページでご確認ください。
Run/Debug Configuration(実行/デバッグ構成)ダイアログに対し、以下のような複数の改善を実施しています。
プロジェクトのビルドを大幅に高速化する BuildKit のサポートを実験的に開始しました。 このオプションは、Run/Debug Configurations で Modify options をクリックして Enable BuildKit (experimental) を選択するだけで有効にできます。
ステージ名の横にあるハンマーアイコンをクリックするだけで、IDE が BuildKit を使用してイメージをビルドします。 Run/Debug Configurations に Run セクションを追加すると、アイコンが変化します。 そのアイコンをクリックすると、イメージをビルドしてコンテナーを実行できます。
Dockerfile で複数の FROM
ステートメントを使用すると、各 FROM
命令について新しいステージが開始されます。 GoLand 2021.1 では、ステージを折りたたんでステージ間に目立つ区切り線を表示できるようになりました。
Dockerfile の実行を停止したい場合は、Services ツールウィンドウで簡単に実行できます。 実行中の項目を選択してからコンテキストメニューを呼び出し、Stop Deploy(デプロイを停止)クリックするだけです。
バインドマウントを使用する際、ホストマシン上のパスをよりすばやく入力できるようになりました。 補完メカニズムにより、Run/Debug Configurations(実行/デバッグ構成)の Bind mount(バインドマウント)オプションでマクロと環境変数を選択できます。
最後に付け加えますが、イメージ名に対応した補完を追加しました。
GoLand に MDN ドキュメントがバンドルされるようになりました。 これによって MDN の Web サイトとの接続に関する問題を回避し、エディター内に HTML / CSS / JavaScript ファイルをより高速に表示できるようになります。 また、エディター内に表示されるドキュメントの情報がさらに拡充されました。例えば、JavaScript API のサポート対象ブラウザーバージョンに関する情報を確認できます。
Stylelint による CSS コードのインスペクションがより簡単になりました。 数回クリックするだけで、この評価の高いリンターを使用して問題箇所を修正できるようになりました。 ファイル内の問題箇所にマウスカーソルを合わせるか、キャレットを配置したあと、Alt+Enter を押してから Stylelint: Fix current file(Stylelint: 現在のファイルを修正)を選択するだけです。
また、Settings | Languages & Frameworks | Style Sheets | Stylelint の対応するフィールドで構成ファイルのパスを指定できるようになりました。
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 ポップアップに表示することもできます。
データのソート処理を改善しました。
これは、単純なステートメントをデータベースエクスプローラーから直接生成できるソリューションです。 一般的なライブテンプレートは、単純なクエリをすばやく記述する必要のあるさまざまなケースに対応しています。 しかし、JetBrains はデータベースエクスプローラーを使用している時点ですでに目的のオブジェクトに注目している場合があることを理解しているため、対象のオブジェクトから単純なクエリを取得できる便利な仕組みを用意しています。
Select first N rows from a table は一般的なテンプレートのように見えます(実際、同様の使い方ができます)。 この特殊な構文をすべてのデータベースで使用することはできないため、対応するダイアレクトがテンプレートに設定されています。 主な違いは、特殊な式 dbObjectName
を $table$
変数に使用することで、このテンプレートをデータベースエクスプローラーで使用できるようにしていることです。
オブジェクトを変更する際に権限を編集するための UI を追加しました。
データベースエクスプローラーのユーザーに対して Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。
この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。