VS Codeのユーザーレベルタスク活用例


こんにちは!
クラウドソリューション開発部の石崎です。

VS Codeのタスク機能といえば、通常は .vscode/tasks.json を作成し、プロジェクト(ワークスペース)単位で管理する使い方が一般的かと思います。しかし、特定のプロジェクトに依存せず、どのファイルを開いていても共通で呼び出せる「ユーザーレベルタスク(User Tasks)」という便利な機能が存在することをご存知でしょうか?

プロジェクトメンバーと共有する .vscode/tasks.json に自分専用のタスクを追加してコミットするわけにはいきませんが、ユーザーレベルタスクを使えば、自分好みの開発環境をどのプロジェクトからでも安全に呼び出すことが可能です。複数のプロジェクトを横断して開発を行うエンジニアや、使い慣れたローカルツール(外部エディタなど)とVS Codeを連携させたい方に最適な機能ですので、今回はその活用例と設定のコツを詳しく紹介します。

なぜ「ユーザーレベルタスク」なのか?(ワークスペース設定との違い)

ワークスペースレベル(.vscode/tasks.json)のタスクと比較した、ユーザーレベルタスクのメリットは以下の通りです。

  • チーム共有のリポジトリを汚さない: ワークスペース内の tasks.json はGitリポジトリにコミットしてチームで共有するのが一般的です。そこに個人が使っているローカルツールのパス(例: C:\Program Files\...)を書き込むと、他のメンバーの環境で動作せず混乱を招いたり、リポジトリを汚してしまうことになりますが、ユーザーレベルタスクは C:/Users/アカウント名/AppData/Roaming/Code/User/tasks.json(Windowsの場合) に保存されるのでリポジトリを汚すことがありません。
  • プロジェクト横断で利用可能: ユーザーレベルタスクは、個人のVS Code環境全体に適用されます。新規プロジェクトを開いた際にも再設定する必要がなく、いつでも同じタスクを呼び出せます。

ユーザーレベルタスクの開き方

  1. Ctrl + Shift + P(macOSは Cmd + Shift + P)でコマンドパレットを開きます。
  2. 「タスク: ユーザー タスクの構成 (Tasks: Open User Tasks)」 と入力して選択します。
  3. テンプレートの選択画面が出た場合は「その他 (Others)」などを選択すると、ユーザー領域の tasks.json が開きます。

ここに記述した設定は、どのフォルダやリポジトリを開いていても共通で有効になります。

tasks.json の設定例

以下は、私が実際に登録しているタスクの例です。
“command”に書いているソフトをインストールしていなければ動作しませんのでご注意ください。

登録しているタスクの説明

1. 開いているファイルを「Notepad++」で開く

VS Codeで編集中のファイルを、便利な行操作やマクロ機能が使えるNotepad++で即座に開きます。VS Codeに拡張機能を入れるほどではないけれど、一時的に外部エディタの便利機能を使いたい時に重宝します。

2. 開いているファイルのコミット履歴を「TortoiseGit」で見る

Gitのコミット履歴を詳しく見たいとき、VS Code標準のタイムラインビューよりも、使い慣れたTortoiseGitのログダイアログで見たい場合があります。このタスクを実行すれば、アクティブなファイルのコミット履歴を即座にTortoiseGitの画面で表示できます。

快適に使うための設定プロパティ解説

外部ツールをスムーズに起動するために、tasks.json に含めている重要なプロパティの役割を解説します。

  • 変数 ${file} の活用:
    args 内で使用している ${file} は、現在VS Codeでアクティブになっているファイルの絶対パスに自動置換されます。他にも、ファイルが属するディレクトリパスを取得する ${fileDirname} や、相対パスを取得する ${relativeFile} などがあり、実行したいツールに応じて使い分けることができます。
  • "presentation": { "reveal": "never", "close": true }
    外部ツールを起動する際、デフォルトのままだとVS Code下部にターミナルパネルが開いてしまいます。"reveal": "never" を指定してパネルを非表示にし、"close": true" でバックグラウンドのターミナルセッションを自動終了させることで、画面を散らかさずに起動できます。
  • "problemMatcher": []
    エラーログの自動解析をスキップし、タスク初回実行時のダイアログ表示を防ぎます。

設定時の注意点と補足

タスクを設定する際の注意点と補足をまとめました。

  1. Windowsのパス区切り文字(バックスラッシュのエスケープ)
    JSONファイル内では、パスの区切り文字である \\\ とエスケープして記述する必要があります(例: "C:\\Program Files\\...")。エスケープを忘れると構文エラーになります。
  2. パスに含まれるスペースの扱い
    "type": "process" を使用し、args を配列形式で渡している場合、パスにスペースが含まれていてもVS Codeが適切に処理するためクォーテーションで囲む必要はありません(逆に \"${file}\" と書くとエラーの原因になります)。

タスクの呼び出し方法

登録したタスクはコマンドパレットから呼び出すことができます。

コマンドパレットの「タスクの実行」をクリックすると、登録したタスクが表示されます。

ショートカットキーの割り当て

タスクを毎回コマンドパレットから選択することが手間だと感じる場合は、 keybindings.json に設定を追加することで、ショートカットキーで呼び出すこともできます。

設定手順

  1. Ctrl + Shift + P を開き、「基本設定: キーボード ショートカット (JSON を開く)」 を選択します。
  2. 開いた keybindings.json に以下の設定を追記します。

args に指定する文字列は、tasks.json"label" で定義した名前と完全に一致させてください。

これで、Ctrl + Alt + N を押すだけで現在開いているファイルがNotepad++で立ち上がり、Ctrl + Alt + T でTortoiseGitのコミット履歴が開くようになり、作業効率が格段に向上します。

おわりに

今回はVS Codeの「ユーザーレベルタスク」を活用して、どんなプロジェクトからでも自分専用の便利なツールを呼び出す方法を紹介しました。
今回紹介したもの以外にもVS Codeと外部ツールの便利な組み合わせがたくさんあると思いますので、みなさんも自分専用のユーザーレベルタスクを探してみてください。

エコモットでは、一緒にモノづくりをしていく仲間を随時募集しています。弊社に少しでも興味がある方はぜひ下記の採用ページをご覧ください!