Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

ノリで使っていたGoLandをちゃんと使う

この記事は Gunosy Advent Calendar 2019 13日目の記事です。
昨日の記事は 石川(@takaishikawa42) さんのKaggle Days Tokyo 参加レポートでした!

はじめに

画面の前の皆様、こんにちは。おはようございます。こんばんは。
19卒で4月からGunosyのグノシーでサーバーサイドエンジニアをしている新卒の竹中です。 ここ数年の個人的な流行りはVTuberです。グノシーアプリにも富士葵さんのアイコンのVTuberタブがあるので気になる人はインストールしてタブを追加してみてください。
11月終わりくらいにコードを書いていると後ろをCTOが「アドベントカレンダーというものがあってですね。」と繰り返しつぶやきながら歩いていたので久しぶりにブログを書きます。

ブログを書くに至ったキッカケ

ある日テックリードとペアプロをしていると同じIDEを使っているはずなのにテックリードのIDEは全く別物のように見えました。 そこで大きな衝撃を受けたのでGoLandのドキュメント、ブログを読んだり、とりあえずなんかよくわからないGoLandにあるボタンを適当に押して見るなどしていると思った以上に便利だったので、 今回はGoLandにある便利機能/ショートカットたち(日頃から便利に使っている人にとっては当然という機能が多いかもしれません)を10個くらいお話します。
(この記事を準備している途中の12月上旬にGolandの新バージョン、2019.3が出ました。そこで追加された Tutorial という機能についても9番目あたりで触れています。ぜひ試してみてはいかがでしょうか。)  

GoLand の便利機能/ショートカットたち

以下のGoLandの機能はmac上のGoLand2019.3では動くことを確認していますが、その他のバージョンでは動かないかもしれません。また、Idea Vim のPlugin をいれているのでいくつかのショートカットキーが変わっているかもしれません。ご了承ください。 gifを貼ってないのはけっしてめんどうだったからとかではなく、実際に試してみてほしいからです。

1. Go を書いているときにたまに感じるアレを解決する

さてGoを書いていると以下のようなコードを書くことがよくあると思います。

b, err := json.Marshal(x)

if err != nil{
    return nil, err
}
// 以降の処理

if err != nil{あたりを書くの、めんどくさいですよね。 でもGoLand ならちょっとは面倒くささが改善されます。

b, err := json.Marshal(x)
err.reterr

ここまで入力すると補完が出てきていると思うのでそのままエンターを押すと if err != nil { の部分がよしなに入ります。 これは後置コード補完 というもので、reterr 以外にもいろいろな物があって便利なのでぜひドキュメントを見たりしてみてください。forだけは使ってたんですが、reterr (他にもnil, nn)を知ったときは何かから開放された気持ちになりました。
 

2. 代入書くのすらめんどくさいとき

さっきも出てきたこの1文。

b, err := json.Marshal(x)

左辺書くのが面倒なときもありますよね。
そんなときには

json.Marshal(x)

のあとに opt + cmd + v を押してみてください。よしなに左辺が現れます。

3. structを埋めたい

テストを書くときにstructを作る際、フィールド埋めるのめんどくさいですよね。
例えば以下のような struct

type Cat struct{
    name string
    weight float32
    Cuteness float64
}

まだ3つしかないからいいですが、世の中のコードの中には10を超えるフィールドを持つものもあったりします。 さてそんなときは

cat := Cat{}

{} あたりにカーソルを置き、 opt + Enter から Fill All fields を選んでみてください。便利。

4. タブの移動

cmd + shift + [ で左のタブへ、 cmd + shift + ] で右のタブに移動できます。 これを知るまではPlugin のちからを借りて Vimでのタブ移動ショートカットである gt で移動していました。gtはVimのままなので便利でした。

5. GoLand が何かを言いたそうにしている時のアレ

GoLand、警告、エラーがあるとソースに下線をつけてお知らせしてくれますよね。
いつもなんだろうと思ってマウスオーバーで見てたんですけど、実はcmd + F1でポップアップで教えてくれます!もうマウスカーソルを操作しなくて良い! 他にもF2を押すと、開いているファイル内で、GoLandが何かを言いたげなところに一発で飛べたりします。

6. 最近編集したやつをまた編集したい

cmd + e で最近編集したファイル一覧から選ぶと便利です!ctrl + tab でも似たことができます。
その他にもshiftを2回押してなんでも検索を召喚してそこから検索するのも便利です。

7. コメントアウト

cmd + / でコメントアウトできます! 今まで Vim を使っていたときに caw.vim でしてたみたいにスッとコメントアウトができました!これも知ったときはなかなか嬉しかったです。 (これ知るまではVim の矩形編集使って行頭に // をいれてました )

8. なにかと便利な補完

補完出したくなったらctrl + space で basic completion を召喚しましょう。だいたい補完してくれます。

9. Learn

GoLandの左端、見たことありますか? そこには Project 以外に Learn の文字列が。僕は今日始めて知りました(2019.3から?)。

人知れず追加されていたLearn
ここで新機能について tutorial が行われ実際に自分で体験することができます! ちなみに私もやってみましたが、Mac でのキーボードショートカットのあの謎の記号の esc を知らずこのアイコンはなんだと小一時間GoLandの中にあのアイコンがないか探しました。 あとIdea Vim 入れてると esc のイベントとってくれなくなるので tutorial するときだけ plugin 切っておくのがおすすめです。
ついでに ctrl + space でIMEの切り替えのショートカットも切っておくのがおすすめです。
言われたとおりにやっても認めてくれないときは cmd + shift + a から実行すれば認めてくれることがあるのでめげずに頑張ってみるのも良いかもしれません。
一応この記事を書くにあたって、全部終わらせました。
tutorial終了

10. Action の一覧から探して実行

ここまでいろいろなショートカットを紹介してきましたが、当然まだまだあります。 どんな Action があるのか探してたいときは cmd + shift + a で Action を検索することができます。
ここでよく使うものを自分の押しやすいキーに当てていくことで個々人のぼくのかんがえたさいきょうのIDEに近づけるのではないでしょうか。

この記事を書いていたときに追加で教えてもらったものとか

11. Productivity Guide

メニューバーのHelpにある Productivity Guide、すごいですね。 よく使う機能、使わない機能をリストアップしてくれます。たまに眺めると勉強になる系です。 さっきひらいたら僕のはこんな感じでした!

Productivity Guide

12. いい感じの範囲選択

opt + ↑で選択範囲の拡張ができます。選択範囲がよしなに(行単位、ブロック単位など)広がっていきます。 opt + ↓で範囲を狭めることもできます。

13. 定義ジャンプ

もはや使いすぎてかくの忘れてました。 cmd + b 関数、変数、型などの宣言にジャンプできます。最高すぎてわすれてました。 似たもので、cmd + opt + b で実装に移動できます。

おわりに

いかがでしたか?
GoLandにはまだまだ知らない機能、謎のボタンもあるので、本当は GoLandのボタン全部押す くらいしようと思ったのですが、1記事にするのは大変そうだったのでやめました。 今までゲームの説明書は読まないようにIDEのドキュメントも読んでなかったんですが、思った以上に便利な機能が多くさすがは統合開発環境だなと思いました。 (今度からはゲームの説明書も読みます…。最近ついてないですが。)
基本的に opt + enter, ctrl + space, shift2回押し の3つだけでも十分便利感ありますが、cmd + shift + a とかで action を眺めてみるとより便利なものをバンバン見つけられるかもしれません。
今後も進化していくであろうGoLandの新機能に目が離せませんね!

明日は阿部さんです。よろしくおねがいします!

参考