GoLandの新機能

GoLand 2020.1では、Go Modulesサポートへの多様なアップグレードのほか、ユーザーの操作をほとんど必要としないコード編集機能、コード補完の機能拡張が導入されています。

さらに、新しいコードインスペクションやクイックフィックスほか、プロジェクトを作成または読み込まずにテキストエディタ内でファイルを開くことのできる新しい LightEdit(ライト編集)モード、インテリジェントなスペルと文法チェック機能、ウェブ開発やデータベースとの連携に使用できる新機能が追加されています。

読むよりも、実際に触りながら学習する方がいいですか? IDE内の Features of GoLand 2020.1(GoLand 2020.1の機能)チュートリアルをご利用ください。

Go Modulesの改善点

新しい Environment Variables(環境変数)ダイアログ内で、GoLandが自動的に提案する direct と off の値を使って、GOPROXYを構成します。

Go 1.13の環境変数であるGOPROXYGOPRIVATEGOSUMDBGONOPROXYGONOSUMBがサポートされました。

Go Modulesプロジェクトテンプレートを使ってデフォルト値を構成できます。 Environment(環境)フィールドのBrowse(参照)アイコンをクリックし、新しいEnvironment Variables(環境変数)ダイアログを開いてください。

置換中の replace キーワード、依存関係名、およびパスをコード補完.

go.modファイルで、gomodulerequirereplaceexclude キーワード、依存関係の名前、ローカルパスとの置換のコード補完機能が提供されました。

GoLand はパッケージのインポートを提案します。

Rename(名前の変更)Move(移動)リファクタリングも利用できます。 replaceステートメントが参照するディレクトリの名前を変更したり移動したりする場合、GoLandは適宜、go.modファイルのパスを変更します。

Find Usages(使用箇所を検索)を使用して、go.modファイルでディレクトリが使用されている場所を検索し、そのソースにナビゲートする.

また、プロジェクトビューからFind Usages(使用箇所の検索)を呼び出して、特定のディレクトリへのパスが使用されているgo.modファイル内の箇所を探ることができるようになりました。

GoLand は欠落している未使用の依存関係をハイライトし、Alt-Enter キーでクイックフィックスを呼び出してそれらを削除・フェッチすることを提案します。

GoLand 2020.1では、Alt-Enterキーを使って、欠落している依存関係をフェッチし、使用していないものを削除できるようになりました。

GoLand は、コミットにローカスパスとの置換が含まれる go.mod ファイルが含まれていることを通知します。

最後に、新しいバージョンでは、コミットにローカルパスとの置換が存在するかどうかがコミット前に通知されるようになりました。誤ったコミットをすることがなくなります。

使い方を学習する必要のないコード補完機能

関数内で 'if' を入力すると、エラー処理パターンを補完します。

GoLand 2020.1 は if err != nil { ... } を提案してエラー処理パターンを補完します。 式内で if を入力してください。

コード補完を使用して 'struct' と 'interface' を宣言できます。

typeキーワードまたはstructinterfaceを入力するだけで、構造体とインターフェースの型を素早く定義できます。

'Fill Fields' はコロンの後にスペースを追加します。

Fill Fields(フィールドを埋める)アクションは、フォーマット規則で必要な場合に、コロンの後にスペースを追加します。 また、複合リテラルの宣言において、ステートメントの最後にコンマを追加します。

GoLand は閉じかっこの後にカーソルを移動します。

マップを扱う場合、キー型を完了した後、コード補完機能は閉じかっこの後にカーソルを移動します。

GoLand は関数の戻り値の型で、ローカル変数を補完する候補を表示します。

関数の戻り値の型については、対応する戻り値の型に適切なローカル変数とゼロ値を提案します。

スマートなコード補完(Ctrl+Shift+Space

GoLand は、構造体の初期化子へのポインタを提案します。

スマートなコード補完は、構造体の初期化子へのポインタを提案します。

GoLand はアサーションで互換性のある型を提案します。

また、アサーションと型のSwitch caseで互換性のある型も提案します。

GoLand はアサーションで代入された変数の型を提案します。

型のアサーションでは、代入された変数の型を提案します。

GoLand は 'Smart Code Completion' 経由で式で使用可能なポインタをリストで表示します。

最後に、式で可能性のあるポインタの提案リストを示します。

基本的なコード補完(Ctrl+Space

GoLand はコメントブロック内の関数名を補完します。

コメントに使用できる Basic Code Completion 機能が追加されました。ドキュメントの記述が非常に楽になります。 現在のパッケージの宣言に使用する名前や、関数とメソッドのパラメータ名を提案します。

GoLand は式内で変換を提案します。

その他、Basic Code Completion 機能は、リテラルと変換を提案します。

コード編集

GoLand はカンマを入力した後に 'int' 型の周りに丸括弧を追加し、次の戻り値の型を追加できるようにします。

GoLand 2020.1は、複数の値のretun関数のシグネチャーを記述する際、コンマの後の戻り値の型をかっこで囲みます。

GoLand は文字列列リテラルでテキストを貼り付けた後に二重引用符をエスケープします。

文字列リテラルでテキストを貼り付ける場合、IDEは二重引用符をエスケープ処理します。

ユーザーの操作を必要としない編集機能については、「Editing Features You Didn’t Know About(ユーザーが知らないGoLand編集機能)」の記事を参照してください。

Go 1.14 のサポート

GoLand 2019.3 と 2020.1 は、重複インターフェースに対応しているかどうかという点が異なります。

重複インターフェースのサポート

Go 1.14の重複インターフェースの組み込みに合わせて、GoLandでもサポートすることになりました。 重複インターフェースを使用して型のさまざまな側面を記述する際、GoLandは、そのメソッドの重複を検出してもエラーとして報告しません。

'Go Modules' セクションに新しい設定が追加されました。

自動ベンダリングモード

Go 1.14 では、モジュールのルートにベンダー・ディレクトリが含まれる場合、ベンダリングモードが自動的に有効化されます。 GoLand 2020.1に関しては、バージョン1.13以前のGoに対して同様の振る舞いを実装することにしました。 IDEは、モジュール内に vendor/ フォルダがある場合、インポートを自動的にそのフォルダに解決します。

デバッガの更新

'Debug' ウィンドウでプロファイララベル付きの go ルーチンを調査できます。

プロファイララベルのサポート

デバッグ中またはコアダンプ解析中にgoルーチンをより簡単に区別できるよう、プロファイララベルを追加しました。

詳細は、「How to Find Goroutines During Debugging(デバッグ中にgoルーチンを検索するには)」を参照してください。

'Run/Debug Configurations' の 'Program arguments' フィールドで新しい 'Macros' ダイアログから定義済みのマクロを選択しています。

マクロのサポート

マクロをパラメータとして使用し、アプリケーションを実行またデバッグできるようになりました。 Run/Debug Configurations(実行/デバッグの構成)ダイアログで、Go Tool(Goツール)またはProgram arguments(プログラムの引数)フィールドの「+」をクリックし、使用できるマクロのリストが記載された新しい Macros(マクロ)ダイアログを開いてください。

また、プロジェクトに構成ファイルを保存できるようになりました。 プロジェクトファイルのオプションとして、Run/Debug Configurations(実行/デバッグの構成)ダイアログの上部にあるStore(保存)を選択してください。

Postfix Completion(後置補完)

'.else 後置補完テンプレートの実際の動きです。

.elsePostfix Completion(後置補完)テンプレートを使うと、ifステートメントを素早く追加して、式がfalseであるかどうかをチェックできます。

クイックフィックス

Println から Printf への変換

Alt+Enterキーを押すと、書式設定ではない呼び出しを即時に書式設定の呼び出しに変更できます。

'Create variable’ は式に期待される型を補完することを提案します。

Create variable(変数の作成)クイックフィックスでは、期待される型のヒントが表示されるようになったため、正しい値の入力がさらに簡単になりました。

コードインスペクション

GoLand はポインタレシーバ以外でのポインタメソッドの無効な呼び出しを警告し、対応するクイックフィックスを提供します。

この新しいコードインスペクションは、ポインタレシーバでないものに対するポインタメソッドの無効な呼び出しに関して警告し、クリックフィックスを提供します。

GoLand は unsafe.Pointer の誤用の可能性を警告します。

uintptrからunsafe.Pointerの無効な変換を検査するコードインスペクションでは、整数からポインタに変換する際にuintptrunsafe.Pointerが誤って使用されていることが警告されます。

GoLand は 'Unmarshal' 関数の引数にポインタ型を指定する必要があることを警告します。

Unmarshal is called with incorrect argument(誤った引数でUnmarchalを呼び出し)インスペクションでは、json.Unmarshalや、encoding/jsonencoding/xml、およびencoding/gobパッケージの類似する関数への呼び出しが解析されます。

GoLand は引数にポインタ型を指定する必要があることを警告します。

Locks mistakenly passed by value(値で誤って渡されたロック)コードインスペクションでは、ロックを含む値を誤ってコピーしないようにすることができます。

Live templates(ライブテンプレート)

'var' と 'consts' を宣言します。

宣言のグループを素早く作成するための新しいテンプレートを追加しました。 constsvarstypesimportsなどが含まれます。 こういったテンプレートを使用すると、GoLandは宣言名を波括弧で囲みます。

'fori' テンプレートの実際の動きです。

foriテンプレートは、従来のforループのボイラープレートコードをボイラープレートを挿入します。

リファクタリング

'Extract Method' は実行後も元の順序を維持します。

Extract Method(メソッドの抽出)リファクタリングは、親関数とメソッドのパラメータの元の順を維持します。

Alt+Enter を押すと、'Rename' が使用箇所の名前変更を提案します。

Rename(名前を変更)リファクタリングは、宣言の名前変更を自動的に検出するようになりました。 手動で宣言の名前を変更すると、IDEは、そのすべての使用箇所で名前を変更するように、ガターアイコンを示します。

ナビゲーション

'Find Usages' はインターフェースメソッドの使用箇所を表示します。

Navigate to implementations(実装にナビゲート)Ctrl+Alt+B)とNavigate to Declaration or Usages(宣言または使用箇所にナビゲート)Ctrl+B)は、最初に現在のプロジェクトの結果を表示するようになりました。

また、Find Usages(使用箇所の検索)Alt+F7)アクションは、常にデフォルトでインターフェースのメソッドの使用箇所を検索するようになりました。 以前のように、現在のメソッドの使用箇所を検索するには、 Alt+Shift+Ctrl+F7 を使用してください。

VCSの改善

エディター内に差分を表示する新しい 'Commit' ツールウィンドウです。

新しいコミットツールウィンドウ

新しい Commit(コミット)ツールウィンドウに、Local Changes(ローカルの変更)タブとShelf(シェルフ)タブが統合されました。 このツールウィンドウで、diffのチェック、コミットするファイルとチャンクの選択、コミットメッセージの入力など、コミット関連のすべてのタスクを実行できます。 Commit ツールウィンドウは縦型で画面の左側に配置されているため、エディタ全体でdiffを表示することができます。

'Branches' ポップアップ

改善された Branches ポップアップ

Branches(ブランチ)ポップアップは、次のように改善されています。

  • 既存のリモートブランチとローカルブランチを検索できるように、明示的な検索フィールドを追加しました。
  • Refresh(リフレッシュ)ボタンを使用して、既存のリモートブランチを更新できるようになりました。
  • 受信 (青) と送信 (緑) のコミットインジケーターがステータスバーに追加されました。
'Rebasing Commits' ウィンドウ

Interactively Rebase from Here(ここからインタラクティブにリベースする)ダイアログ

Interactively Rebase from Here(ここからインタラクティブにリベースする) の大幅な改善を試みました。 このダイアログでは、コミット履歴の直線性を高めて把握しやすくするために、過去のコミットを編集、結合、および削除することができます。

このダイアログを起動するには、Git ツールウィンドウのLog タブに移動し、一連のコミットから編集しようとしている最も古いコミットを選択し、右クリックして Interactively Rebase from Here を選択してください。

データベースの更新

結果がコードエディターに表示されています。
  • Run configurations(実行の構成)を使ってスクリプトファイルとコードスニペットを実行できるようになりました。 そのため、複数のファイルを一度に実行し、起動前に並べ替え、新しいファイルの追加、ほかのプログラムまたは構成の実行を行えます。
  • コードエディタ内で結果を確認できるようになりました。 このオプションはデフォルトで無効になっています。 この機能を有効化するには、Settings/Preferences | Database | General | Show output results in the editor の順に選択してください。
  • SSHトンネルの構成を作成し、多数のデータソースやプロジェクトで使用できるようになりました。
  • データをExcelファイルにエクスポートする機能を追加しました。
  • また、エクストラクターのドロップダウンメニューから希望するデータ形式を選択できるようになりました。

ウェブ開発

Alt+Enter を押すと、GoLand は既存コードのオプショナルチェーンや null 合体演算子への変換を提供します。

JavaScriptとTypeScriptの新しいスマートインテンションとインスペクション

新しいスマートインテンションと分析 (Alt+Enter) を使って、よりスピーディにコーディングしましょう! 例えば、JavaScript と TypeScript の最新バージョンに導入された構文である、オプションの chaining および / または nullish coalescing (null合体演算子) に既存のコードを素早く変換することができます。

Documentation ポップアップはシンボルの型と、そのシンボルの定義箇所を表示します。

さらに役に立つクイックドキュメンテーション

JavaScriptとTypeScriptでは、Documentation(ドキュメント)ポップアップに、シンボルの型と可視性に関する詳細やそのシンボルが定義されている場所など、さらに有益な情報が表示されるようになりました。

その他の変更

新しい 'LightEdit Mode' を使えば、プロジェクトを作成したり読み込んだりせずにテキストエディター内でファイルを開けます。
  • JetBrainsの新しい JetBrains Mono フォントがデフォルトで使用できるようになりました。 このフォントの詳細は、こちらのページをご覧ください。
  • IDEで記述するテキストに対してインテリジェントなスペルト文法チェック機能を提供するGrazieプラグインが、デフォルトでバンドルされるようになりました。
  • 新しいLightEdit Mode(ライト編集モード)で、プロジェクトを作成したり読み込んだりせずに、テキストエディタ内でファイルを開けるようになりました。 この新機能を使用するには、まず、Tools | Create Command-line Launcher からコマンドラインランチャーを作成する必要があります。その方法は、こちらをご覧ください(JetBrains Toolbox App をご利用の場合のステップは多少異なります)。 ファイルを開く手順、ファイルの比較/マージ手順、およびコードインスペクションの実行手順については、こちらのウェブヘルプのセクションを参照してください。
  • 邪魔と思われる機能を取り除き、コードへの完全集中を支援する新しい Zen Mode を追加しました。 基本的に、これは、Distraction Free Mode(集中モード)Full Screen Mode(全画面モード)が組み合わさったモードです。 このモードを有効化するには、View | Appearance | Enter Zen Mode に移動するか、Quick Switch Scheme ポップアップ(Ctrl+` | View mode | Enter Zen Mode)から選択してください。
  • External Documentation(外部ドキュメント)は、https://godoc.org ではなく https://pkg.go.dev を開くようになりました。
  • Defaultカラースキームを新しい Classic Light という名前で追加し直しました。