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の絵本: 絵本シリーズ (2018/2/16発売)
- スラスラ読めるPythonふりがなプログラミング: ふりがなプログラミングシリーズ (2018/6/22発売)
- Python 1年生: (2017/12/5発売)
- Python 2年生: (2020/8/21発売)
ガチめ
- 入門 Python 3: オライリーのPython入門書 (2015/12/1発売)
- 独習Python: 有名な独習シリーズのPython版 (2020/6/22発売)