
テックタッチのバックエンドエンジニアの taisa です。
社内勉強会で、Visual Studio Code(以降 VSCode と記載)ナレッジ共有会を実施したのでその内容を紹介します。
今回の趣旨は「VSCode で各自がよく使う機能やショートカット、ちょっとしたノウハウを共有することで開発効率を向上させたい」というものです。自分自身 VSCode を使いこなせておらず、他のメンバーの使い方に興味がありました。共有会では、みんなで順番に画面共有しながら進めていきました。
コマンドパレット編
まずはコマンドパレットです。コマンドパレットを使えば、ショートカットコマンドを割り当てたり、覚えてなくても様々な機能が実行できるので大変便利な機能です。以下のショートカットからウィンドウを開き実行したいコマンドを実行します。
| Mac | Windows |
|---|---|
| cmd + shift + P | ctrl + shift + P |

例えば「>View: Split Editor Right」を実行するとエディタ表示の分割ができます。これはタブ上で右クリック > Split Right を選択したのと同じ動作です。

また、バックエンド開発は Golang で行っているので、Go を例にすると、プラグイン をインストールすれば、>Go:と入力して必要なコマンドを選択するだけで、開発する上での便利なコマンドが実行可能になります。
例えば、struct 定義内で下記コマンドを実行すると struct にタグが自動生成できます。
>Go: Add Tags To Struct Fields

type User struct { // このカッコ内でコマンドを実行する ID int Email string FirstName string LastName string }
デフォルトではjson: "snake_case, omitempty"が自動生成されます。
type User struct { ID int `json:"id,omitempty"` Email string `json:"email,omitempty"` FirstName string `json:"first_name,omitempty"` LastName string `json:"last_name,omitempty"` }
.vscode/settings.jsonに下記を追加すると、camelcaseにしてomitemptyを無くすことが可能です。
{ "go.addTags": { "tags": "json", "options": "json=", "promptForTags": false, "transform": "camelcase" } }
type User struct { ID int `json:"id"` // このカッコ内でコマンドを実行する Email string `json:"email"` FirstName string `json:"firstName"` // `json: "camelCase"`になる LastName string `json:"lastName"` }
シンボル検索編
次はシンボル検索です。シンボル検索は、開いているファイルの function や struct(Golang であれば)を検索する機能です。下記のショートカットからウィンドウを開き検索したいシンボルを入力します。
| Mac | Windows |
|---|---|
| cmd + shift + O | ctrl + shift + O |

「@」に加えてコロン「@:」を入力するとシンボルがグルーピングできます。

また、下記ショートカットを実行するとプロジェクト内すべてのシンボルが検索できます。
| Mac | Windows |
|---|---|
| cmd + T | ctrl + T |

ショートカット編
次はショートカットです。コードの編集機能は vim プラグインを使っていたり人それぞれなので、VSCode 共通でよく使う機能だけピックアップしました。
最近開いたプロジェクトを開く
下記のショートカットで、プロジェクト選択後「enter」を実行すると、現在開いているプロジェクトが切り替わりますが「ctrl + enter」を実行すると新しいウィンドウでプロジェクトが開けます。
| Mac | Windows |
|---|---|
| ctrl + R | ctrl + R |

最近開いたファイルを開く / ファイルを検索する
最近開いたファイル一覧を表示しつつ、入力するとプロジェクト内のファイルが検索できます。これは誰もが使っているであろうショートカットですね。
| Mac | Windows |
|---|---|
| cmd + P | ctrl + P |

サイドバーを開く/ 閉じる、パネルを開く/ 閉じる、エクスプローラを開く
開発時にエディタを広く使いたい、ターミナルに移動したい、エクスプローラに移動したいときに良く使うショートカットです。
| アクション | Mac | Windows |
|---|---|---|
| サイドバーを開く/ 閉じる | cmd + B | ctrl + B |
| パネルを開く/ 閉じる | cmd + J | ctrl + J |
| エクスプローラを開く | cmd + shift + E | ctrl + shift + E |

指定のエディタに移動する
エディタを複数に分割しながら開発している時にエディタ間を移動するショートカットです。
| Mac | Windows |
|---|---|
| cmd + 1 / cmd + 2・・ | ctrl + 1 / ctrl + 2・・ |

Grep する
下記のショートカットを実行して Grep したい文字を入力後、F4 で「次へ」「次へ」「次へ」、Shift と併せると「前へ」「前へ」「前へ」と Grep 結果を見ていけます。
| Mac | Windows |
|---|---|
| cmd + shift + F | ctrl + shift + F |

特定の文字列を選択して置換する
選択したコードを順番に複数選択するショートカットです。置換したいコードを一つずつ確認しながら選択していくときによく使います。
| Mac | Windows |
|---|---|
| cmd + D | ctrl + D |

定義へ移動、直前の場所に戻る、直前の場所に進む
こちらもよく使うショートカットですが、特に Mac ユーザーの場合「直前の場所に進む」のは以外と使ってないのではということでピックアップしました。
| アクション | Mac | Windows |
|---|---|---|
| 定義へ移動 | F12 | F12 |
| 直前の場所に戻る | ctrl + - | alt + ← |
| 直前の場所に進む | ctrl + shift + - | alt + → |
シンボル名を変更する
F2 でシンボル名を変更すると参照されているシンボル名も書き換えられます。
| Mac | Windows |
|---|---|
| F2 | F2 |

Git 編
GitLens を入れておけば「SOURCE CONTROL」でやりたいことは大体可能になります。

コマンドパレットの GitLens コマンドでも実行可能です。

特定の行をハイライトした状態のURLを取得する
Git のちょっと便利だなと思った機能として「特定の行をハイライトした状態のURLを取得する機能」がありました。
コード上で「右クリック > Copy As > Remote File url」とすると、GitHub などのリモートファイルの特定の行をハイライトした状態のURLが取得できるので、ここってピンポイントで伝えたいときに便利です。

Extension 編
次は Extension です。話題に出た Extension をざっと紹介します。
Jest Runner
特定のテストに対してクリックでテスト実行ができます。フロント開発のテストでは Jest を利用しているので入れています。

Breakpoint をおいて「Debug」実行するとステップ実行も可能です。

Turbo Console Log
console.logが簡単に埋め込めます。

| Mac | Windows |
|---|---|
| ctrl + option + L | ctrl + alt + L |
対象の変数を選択して上記ショートカットを実行すると下記のようなconsole.logが自動生成されます。

Code Spell Checker
スペルミス箇所にはゲジゲジがついてスペルミスをお知らせしてくれます。


indent-rainbow
インデントが見やすくなります。

わかりにくいですが、タブ毎に色が変わってます。

Bracket Pair Colorizer 2
indent-rainbow と組み合わせると結構カラフルになりますが、カッコの対応が分かりやすくなります。

自分が今いるカッコに線がついて対象のカッコが分かりやすくなります。

Todo Tree
TODO や FIXME が一覧で確認できるツリーアイコンがアクティビティバーに追加されます。


設定編
最後に簡単に設定についてです。設定については主に下記が話題にあがりました。
- .editorconfig
- プロジェクトのエディタの設定を統一するのに便利
- Settings Sync
- 複数環境で VSCode を使って開発するときに便利
- extensions.json
- 最低限この拡張だけは入れといてくれってするのに便利
まとめ
テックタッチ社内で行った VSCode ナレッジ共有会で出た内容をピックアップして紹介しました。ランチタイムの1時間だけですが、普段使っているツールでも話しながら共有してみると新しい発見があるのでためになりました。
テックタッチでは定期的に Spark Lunch という名の社内勉強会を行っています。Spark Lunch については、以下の記事で紹介しているのでぜひ読んでみてください。