Visual Studio Codeでデバッグの引数を実行の度に入力したり選択したりする

Visual Studio Codeでデバッグの引数を設定できるのはlaunch.jsonですが、引数をころころ変えたいときがあります。そんな時、いちいちlaunch.jsonを修正したり、launch.jsonでファイルを指定してそのファイルを編集するのは面倒くさいです。

この記事では、launch.jsonに記述できる入力変数であるinputsを用いて、ころころと変わる引数に対応できるようにしたいと思います。

以下3つのような特徴があり、一つずつおさえていきます。

  • デフォルト指定
  • 毎回入力
  • 毎回選択

参考としたVisual Studio Codeの公式ホームページ(英語)

例としてPythonを使って説明しますが、ほかの言語でもできると思います。

launch.jsonを作成

launch.jsonを作成する前に、pythonファイルを作ります。ファイル名をprint_arg.pyとして、以下のようなスクリプトを書きました。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("arg", help="This argument will be printed")

args = parser.parse_args()

print("**********")
print(args.arg)

アクティビティバー(vscode画面の左側)にある実行をクリックし、launch.jsonファイルを作成しますをクリックします。

すると、launch.jsonファイルが開きます。引数を指定したいため、"console"の下に"args"を追記します。以下のようなjsonファイルになります。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": ["これが引数です。"]
        }
    ]
}

先ほどのprint_arg.pyを実行するとコンソールにこれが引数です。と表示されると思います。

inputsを記載

さて、ここからが本題のinputsの記載方法になります。launch.jsonファイルにinputsを記載します。

以下の表にあるkeyとvalueの組を記述します。

key value
type promptString, pickString, commandから選択
id IDを記述、参照するときに使用
description 説明を記述
options 選択肢を記述(typeがpickStringのとき)
default 既定の値を記述

inputsを指定したら、configurationsの中で${input:id}のように記述して使います。

指定するほうはinputs、使うときはinputなので注意してください。

pickStringの場合

図のようなプルダウンから引数を選択することができます。

以下の4つが必須項目です。

  • type
  • id
  • description
  • options

launch.jsonのサンプルは以下のようになります。

{
    "version": "0.2.0",
    "inputs": [
        {
            "type": "pickString",
            "id": "choice",
            "description": "引数を以下の選択肢から選んでください。",
            "options": ["選択肢A", "選択肢B", "選択肢C"],
            "default": "選択肢A"
        }
    ],
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": ["${input:choice}"]
        }
    ]
}

promptStringの場合

図のように引数を入力できるようになります。

以下の3つが必須項目です。

  • type
  • id
  • description

launch.jsonのサンプルは以下のようになります。

{
    "version": "0.2.0",
    "inputs": [
        {
            "type": "promptString",
            "id": "prompt",
            "description": "引数を入力してください。",
            "default": "デフォルトの文字列です。"
        }
    ],
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": ["${input:prompt}"]
        }
    ]
}

組み合わせ

複数のinputsを組み合わせることもできます。以下の例では、まず選択肢が表示され、そのあと文字列入力を受け付けます。

選択したものと入力した文字列を引数に入れて、Pythonファイルが実行されます。

{
    "version": "0.2.0",
    "inputs": [
        {
            "type": "pickString",
            "id": "choice",
            "description": "引数を以下の選択肢から選んでください。",
            "options": ["選択肢A", "選択肢B", "選択肢C"],
            "default": "選択肢A"
        },
        {
            "type": "promptString",
            "id": "prompt",
            "description": "引数を入力してください。",
            "default": "デフォルトの文字列です。"
        }
    ],
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "preLaunchTask": "trimTrailingWhitespace",
            "args": ["${input:choice}", "${input:prompt}"]
        }
    ]
}

Commandについてはlaunch.jsonでの使い方がわからず、tasks.jsonでしか使えなかったというのと、この二つとは毛色が違うということでこの記事では取り扱いません。機会があれば、別の記事で取り上げたいと思います。

Python学習にお勧めの本

Python開発環境を立ち上げて少し遊んでみたら、書籍やUdemy講座などで一度包括的に学習するのが良いと思います。

Pythonを書籍で学ぶ場合はなるべく発売日が新しいものを選ぶとよいと思います。

入門

ガチめ

  • 入門 Python 3: オライリーのPython入門書 (2015/12/1発売)
  • 独習Python: 有名な独習シリーズのPython版 (2020/6/22発売)
タイトルとURLをコピーしました