本文へ移動

VSCodeのtasks.json入門。よく使うコマンドを安全に登録する

VSCodeのtasks.json入門。よく使うコマンドを安全に登録するの説明画像

Visual Studio CodeのTasksは、毎回打っているコマンドを「思い出す作業」から外してくれる

開発をしていると、同じコマンドを何度も入力します。

  • Railsサーバーを起動する
  • テストを実行する
  • RuboCopを回す
  • フロントエンドのビルドを確認する

1回ずつは小さな手間です。

ただ、毎回ターミナル履歴を探したり、オプションを打ち間違えたりしていると、地味に集中が切れます。

そこで使いやすいのが、Visual Studio Codeの tasks.json です。

この記事では、VS CodeのTasksを使って、よく使うコマンドを安全に登録する方法を整理します。この記事のコード例と説明は、Visual Studio Code の公式TasksドキュメントとTasks schemaを、2026年9月1日に確認した内容を前提にしています。

tasks.jsonは、コマンドをワークスペースに残すための設定ファイル

VS CodeのTasksは、ビルド、テスト、lint、スクリプト実行のような外部ツールを、VS Code内から呼び出すための仕組みです。

ワークスペース固有のタスクは、基本的に .vscode/tasks.json に書きます。

たとえば、Railsサーバーを起動するだけなら、次のように登録できます。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Railsサーバーを起動",
      "type": "shell",
      "command": "bin/rails",
      "args": ["server"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "reveal": "always"
      },
      "problemMatcher": []
    }
  ]
}

ここで最低限見るのは、次の4つです。

  • label: VS Code上に表示されるタスク名
  • type: shell ならシェル経由、process ならプロセスとして実行
  • command: 実行するコマンド
  • args: コマンドに渡す引数

以前の自分は、command に長い文字列をそのまま入れがちでした。

それでも動くケースはあります。

ただ、引数に空白や記号が入ると、シェルの解釈に依存して分かりにくくなります。単純なコマンドなら、commandargs を分けて書くほうが、後から読み返したときに意図が残りやすいです。

よく使う確認コマンドから登録すると失敗しにくい

最初から複雑な自動化を作ろうとすると、tasks.json自体の管理が面倒になります。

まずは、普段よく打つ確認コマンドを1つだけ登録するくらいで十分です。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "RuboCopを実行",
      "type": "shell",
      "command": "bundle",
      "args": ["exec", "rubocop"],
      "group": "test",
      "presentation": {
        "reveal": "always",
        "panel": "shared"
      },
      "problemMatcher": []
    }
  ]
}

このくらいの小ささだと、登録する意味が分かりやすいです。

「このプロジェクトでは、品質確認の最初に何を回すのか」がファイルとして残ります。

未来の自分や次に入った人が、READMEを探し回らなくても、VS CodeのTasksから同じ確認を始められます。

入力を短縮するというより、作業の入口を揃える効果が大きいと感じています。

ショートカットに割り当てると、さらに呼び出しやすくなる

VS Codeでは、登録したタスクをキーボードショートカットから呼び出すこともできます。

keybindings.json に、たとえば次のように書きます。

{
  "key": "ctrl+alt+r",
  "command": "workbench.action.tasks.runTask",
  "args": "RuboCopを実行"
}

WindowsやLinuxでは Ctrl+Shift+B、macOSでは Shift+Command+B でデフォルトのビルドタスクも呼び出せます。

ただ、ショートカットは増やしすぎると逆に覚えられません。

自分なら、毎日使うものだけに絞ります。

ショートカット全般の整理は、VSCodeのショートカットキーは、文章編集でも活用できる でも書いています。Tasksも同じで、「よく使う操作だけを身体に寄せる」くらいがちょうどよいです。

dependsOnを使うと、複数タスクをまとめられる

Tasksでは、dependsOn を使って複数のタスクをまとめられます。

たとえば、lintとテストをまとめて実行したいときは、次のように書けます。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "RuboCopを実行",
      "type": "shell",
      "command": "bundle",
      "args": ["exec", "rubocop"],
      "problemMatcher": []
    },
    {
      "label": "Railsテストを実行",
      "type": "shell",
      "command": "bin/rails",
      "args": ["test"],
      "problemMatcher": []
    },
    {
      "label": "品質確認をまとめて実行",
      "dependsOn": ["RuboCopを実行", "Railsテストを実行"],
      "dependsOrder": "sequence",
      "problemMatcher": []
    }
  ]
}

ここで気をつけたいのは、dependsOn に複数タスクを書いた場合、順序指定がなければ並列で実行されることです。

順番が重要な確認なら、dependsOrdersequence にします。

一方で、互いに依存していないlintと型チェックなら、並列のままでもよいかもしれません。

この判断を明示できるのも、tasks.jsonの良いところです。

危ないコマンドを登録しない基準も決めておく

便利になるほど、危ないコマンドも簡単に実行できてしまいます。

だから、自分はtasks.jsonに登録するコマンドを、少し安全側に倒したいです。

たとえば、削除系の rm -rf、データベースを作り直す db:reset、クラウドやKubernetesの delete 系操作は、何も考えずにショートカット化しないほうがよいです。

これらは、ローカルでもデータ削除や環境破壊につながります。

本番環境の資格情報を使うコマンド、課金、公開、送信、削除、権限変更を起こすコマンドも、tasks.jsonに気軽に置かないほうが安全です。

どうしても登録するなら、タスク名に影響範囲を入れる、presentation.revealalways にする、READMEに前提を書く、確認用のdry-runを別タスクにする、などの工夫が必要です。

Tasksは「速くする道具」ですが、速く危険な操作をするための道具にはしたくありません。

使い続けるコツは、作業の意図をlabelに残すこと

自分も、Railsの起動、lint、テスト、ちょっとした確認コマンドをtasks.jsonに寄せることがあります。

使っていて便利なのは、コマンドを忘れても呼び出せることだけではありません。

label を見るだけで、何のための作業なのか思い出せることです。

{
  "label": "DB状態を確認してからテストを実行",
  "type": "shell",
  "command": "bin/rails",
  "args": ["test"],
  "problemMatcher": []
}

ラベルが「test」だけだと、未来の自分には少し不親切です。

「何を確認したいのか」「どの場面で使うのか」まで名前に残しておくと、タスク一覧が小さな運用メモになります。

まとめ

VS Codeの tasks.json は、よく使うコマンドを登録して呼び出せる便利な仕組みです。

ただ、自分にとって大事なのは、単に入力を短くすることではありません。

  • よく使う確認手順をファイルに残す
  • commandargs を分けて、意図を読みやすくする
  • dependsOndependsOrder で実行順序を明示する
  • 危ないコマンドを気軽にショートカット化しない
  • label に作業の目的を残す

このあたりを意識すると、tasks.jsonはただの時短設定ではなく、プロジェクトの小さな作業手順書になります。

まずは、毎日1回は打っている安全な確認コマンドを1つだけ登録するところから始めるとよさそうです。

この記事をシェア

管理人プロフィール

あゆの塩焼きのプロフィール画像

あゆの塩焼き

現役Webエンジニア。日々の開発で得た学びや思ったことを記録しています。

詳しいプロフィールを見る

次の学びも、見逃さずに。

AIの実例・研究・ブログ・読書の更新を、RSSリーダーでまとめて購読できます。

RSSを購読する

Loading...