【実務・中級編】VS Codeで「キーボードマクロ」を自動化する:Multi-Command拡張機能で複数の操作を1キーに集約する – 軽量・高機能テキストエディタ生産性向上バイブル

こんにちは。開発現場の生産性を極限まで引き上げることに執念を燃やすテックリードだ。

皆さんは日々のコーディングの中で、「この3つの操作、毎回同じ順番でやってるな…」「ファイルフォーマットして、特定のプレフィックスを挿入して、保存する。この一連の流れを1キーで完結させたいのに、VS Codeの標準機能ではできないのか?」と歯痒い思いをしたことはないだろうか。

VS Codeは世界最高峰のエディタだが、標準機能のキーボードショートカットは「1つのキーバインドに対して1つのコマンド」という制約がある。そのため、複数の操作をアトミック(不可分)に連続実行する「キーボードマクロ」をネイティブで組むことができない。

しかし、あきらめる必要はない。今回紹介する拡張機能 `multiCommand` を使えば、VS Codeの内部アーキテクトすら唸るほどの高度なマクロ自動化環境が手に入る。

今回は、単なるプラグインの紹介にとどまらず、実務の現場で開発スピードを異次元へと加速させるための実践的なマクロ構築術を、アーキテクトの視点から徹底解説しよう。

—

1. なぜ標準機能では不十分なのか?(VS Codeのコマンド実行モデルの裏側)

VS Codeのキーボードショートカット(`keybindings.json`)は、内部的にはCommand Paletteに登録されているIDをトリガーしているに過ぎない。

// 標準的なキーバインドの例
{
“key”: “ctrl+shift+f”,
“command”: “editor.action.formatDocument”
}

このモデルの限界は、「コマンドの実行順序の保証」や「コンテキストの受け渡し」が考慮されていない点にある。例えば、「コードを整形する(`editor.action.formatDocument`)」と「ファイルを保存する(ドラマチックな例として `workbench.action.files.save`)」を連続させたい場合、単純にキーを2つ割り当てても、非同期処理のタイミング問題(Race Condition)により、整形が終わる前に保存が走ってしまうという悲劇が起きる。

ここで登場するのが、複数のコマンドをキューイングし、確実に直列実行(Sequencing)させる `multiCommand` 拡張機能だ。

—

2. 絶対入れるべき神プラグイン:`extension.multiCommand`

まずは、マーケットプレイスから以下の拡張機能をインストールしてほしい。

  • プラグイン名: `multiCommand`
  • 作者: Ryuta Ukawa
  • 効果: ユーザー定義の複数のVS Codeコマンドを、単一のカスタムコマンドとして束ね、任意のキーショートカットにバインドできるようにする。

このプラグインの本質的な価値は、VS Codeのコマンドエコシステム全体を「プログラマブルに合成」できる点にある。単なるショートカットの節約ではなく、個々の開発者の指の動き(キーストローク)を「独自のワークフロー・マクロ」へと昇華させられるのだ。

—

3. 実践!実務の生産性を爆上げするマクロ設定例

それでは、`settings.json` に記述する具体的な設定を見ていこう。
実務で頻出する「JSON/YAMLの整形+バリデーション+特定行のジャンプ」といった複合タスクを例にとる。

`settings.json` のベストプラクティス構成

VS Codeのグローバル設定、あるいはプロジェクトの `.vscode/settings.json` に以下を追記する。チーム全体でこのマクロを共有したい場合は、後述する共有化ルールに従ってリポジトリに含めると効果的だ。

{
“multiCommand.commands”: [
{
// マクロの一意の識別子(コマンドパレットやkeybindings.jsonから呼び出すID)
“command”: “multiCommand.formatAndCleanSave”,

// 順番に実行したいコマンドの配列(上から順に同期的に処理される)
“sequence”: [
// 1. 選択範囲、またはドキュメント全体のコード整形を実行
“editor.action.formatDocument”,

// 2. 末尾の不要なホワイトスペースを自動削除(クリーンコードの維持)
“editor.action.trimTrailingWhitespace”,

// 3. 変更内容をステージングせずに即座にファイルを保存
“workbench.action.files.save”,

// 4. 開発者に処理完了を視覚的に伝えるための通知を表示
{
“command”: “vscode.window.showInformationMessage”,
“args”: [“✨ フォーマット、クリーンアップ、保存が完了しました!”]
}
]
},
{
// 【応用例】JSON/YAMLファイルを強制的に検証(Linterの再実行)しつつ保存
“command”: “multiCommand.validateAndSave”,
“sequence”: [
“editor.action.formatDocument”,
“workbench.action.problems.focus”, // エラー・警告パネルにフォーカスを移動
“workbench.action.files.save”
]
}
]
}

キーバインドへの割り当て(`keybindings.json`)

上記で定義したカスタムマクロを、自身の手に馴染むショートカットキーに紐付ける。

[
{
“key”: “ctrl+s”, // 一般的な上書き保存キーをハイジャックしてマクロに置き換える
“command”: “extension.multiCommand.execute”,
“args”: {
“command”: “multiCommand.formatAndCleanSave”
},
“when”: “editorTextFocus && !editorReadonly”
},
{
“key”: “alt+shift+s”,
“command”: “extension.multiCommand.execute”,
“args”: {
“command”: “multiCommand.validateAndSave”
},
“when”: “editorTextFocus”
}
]

この設定により、`Ctrl + S`(Macなら `Cmd + S`)を押すだけで、「自動整形 ➔ ホワイトスペース削除 ➔ セーブ ➔ 完了通知」という4つのアクションがコンマ数秒の間に完璧な順序で実行される。開発者がコードの綺麗さを気にするメンタルコストを完全にゼロにできるのだ。

—

4. チーム開発で役立つ設定の共有化ルール

個人のローカル環境だけでこのマクロを動かしているうちは、個人の生産性向上止まりだ。テックリードとしてチーム全体の底上げを図るなら、これをプロジェクトのリポジトリに組み込む必要がある。

VS Codeは、プロジェクトルートの `.vscode/` ディレクトリ配下にある設定ファイルをワークスペース設定として読み込む仕様を持っている。

推奨するプロジェクト構成

my-project/
├── .vscode/
│ ├── settings.json # multiCommandの定義を含むプロジェクト設定
│ ├── keybindings.json # チーム共通のショートカットキー定義
│ └── extensions.json # 必須プラグインの自動推奨リスト

1. `.vscode/extensions.json`(必須プラグインの強制・推奨)

チームメンバーがリポジトリをクローンした際、自動的に `multiCommand` のインストールを促す設定。

{
“recommendations”: [
“ryutapp.vscode-command-variable”, // multiCommandの依存関係として有用な拡張
“ryuta-ukawa.multi-command” // 今回の主役である拡張機能のID
]
}

2. `.vscode/settings.json` のチーム共有における注意点

`multiCommand.commands` はプロジェクト固有のビルドスクリプトやタスクランナーと組み合わせることで真価を発揮する。例えば、特定のテストファイルを叩いた後にログウィンドウを開くといったマクロをチーム全員で共通化すれば、オンボーディングコストを劇的に下げることができる。

—

5. アーキテクトからの提言:マクロ自動化の限界と美学

最後に、キーボードマクロを設計する上でのプロフェッショナルな知見を共有しよう。

1. 「べき等性(Idempotency)」を意識せよ
マクロ内のコマンドは、何度連続で実行しても同じ結果になる(ファイルが壊れない)ものであるべきだ。破壊的なコマンド(行の削除など)を安易にマクロに組み込むと、キー連打時に取り返しのつかないコードロスを招く。
2. 非同期処理の競合に注意せよ
外部CLIツールを叩く拡張機能(例:PrettierやESLint)が絡む場合、VS Codeの内部キューが追いつかないことがある。必要に応じてステップ間にウェイトを挟む、あるいは拡張機能側の自動保存設定と競合させない配慮が必要となる。

キーボードマクロは、単なる「手間の削減」ではない。「思考のスピードとエディタの反応速度を完全に同期させるための究極のチューニング」である。

ぜひ今回の構成を取り入れ、あなたのチームの開発スピードを次の次元へと引き上げてほしい。

タイトルとURLをコピーしました