はじめに
Visual Studio Code(VS Code)でデバッグを行うときに欠かせないlaunch.json
ファイルについて、その役割や設定項目を詳しく解説します。launch.json
ファイルは様々なプログラミング言語のデバックで利用されますが、本記事ではPythonのlaunch.json
ファイルをについて解説します。
■(広告)Pythonのオススメ書籍■
launch.jsonとは?
launch.json
は、VS Code内でデバッグ設定を管理するための重要な設定ファイルです。
このファイルを使用することで、Pythonスクリプトのデバッグ方法をカスタマイズできます。
基本的なlaunch.json設定の解説
VS Codeが自動生成するlaunch.jsonファイルは下記になります。
{ "version": "0.2.0", "configurations": [ { "name": "Python: 現在のファイル", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true } ] }
各プロパティの詳細
各プロパティについて、下の表に示します。
プロパティ | 説明 |
---|---|
version | ・デバッグ設定のバージョン情報 ・通常は自動生成され、VSCodeとの互換性を確保 ・通常は "0.2.0" |
configurations | ・デバッグ設定の配列 ・複数の異なる設定を定義可能 |
name | ・デバッグ構成の表示名(VS Codeのデバッグメニューに表示) ・デバッグ実行時に選択可能な名前 |
type | ・デバッグ対象の言語 ・Pythonの場合は "python" を指定 |
request | ・デバッグの起動方法 ・ "launch" : 現在のファイルを直接実行・ "attach" : 既に実行中のプロセスにアタッチ |
program | ・デバッグ実行するファイルのパス ・ "${file}" : 現在開いているファイル |
console | ・デバッグ出力を表示するコンソール ・ "integratedTerminal" : VS Codeの統合ターミナルを使用・他に "externalTerminal" や"internalConsole" がある |
justMyCode | ・"true" に設定すると、ユーザーコードのみをデバッグ標準ライブラリや外部パッケージのステップスルーを防ぐ |
高度なデバッグ設定の例
引数を渡す
スクリプトに引数を渡したい場合、configurations
内でargs
を使います。
{ "name": "Python: 引数付き実行", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true, "args": ["arg1", "arg2"] }
この設定では、スクリプト実行時に arg1
と arg2
がList
として渡されます。
Python プログラムでの受け取り方
Python プログラムでは、sys.argv
というリストで、渡された引数を受け取ることができます。
引数の使い方を下のサンプルコードに示します。
import sys def main(): args = sys.argv[1:] # スクリプト名を除いた引数を取得 print("渡された引数 すべて:", args) print("渡された引数 1:", args[0]) print("渡された引数 2:", args[1]) if __name__ == "__main__": main()
サンプルコードの出力は次のようになります。
渡された引数 すべて: ['arg1', 'arg2'] 渡された引数 1: arg1 渡された引数 2: arg2
補足
- 引数に空白文字や特殊文字が含まれる場合は、適切にエスケープする必要があります。
- 引数の数や内容は、デバッグ構成ごとに異なるものを指定できます。
- 複雑な引数を渡す場合は、引数パーサー(例:
argparse
)を使用することを検討してください。
環境変数を設定する
特定の環境変数を設定したい場合、configurations
内でenv
を使います。
{ "name": "Python: 環境変数設定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "env": { "MY_ENV_VAR": "hello" } }
Python プログラムで環境変数の読み取り
環境変数の使い方を下のサンプルコードに示します。
import os def main(): print(os.environ['MY_ENV_VAR']) if __name__ == "__main__": main()
サンプルコードの出力は次のようになります。
hello
作業ディレクトリを指定する
configurations
内でcwd
を使うと、スクリプトの実行ディレクトリを変更できます。
{ "name": "Python: 作業ディレクトリ指定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "cwd": "${workspaceFolder}/scripts" }
プログラムの開始時に一時停止
stopOnEntry
は、スクリプトの実行開始時にデバッガを一時停止させるオプションです。
これを true
に設定すると、Pythonスクリプトの最初の行で自動的にデバッガが停止し、実行をステップ実行できます。
{ "name": "Python: 作業ディレクトリ指定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "stopOnEntry": true }
この設定を有効にすると、スクリプトの最初の行でデバッグが一時停止し、デバッガのコントロールを受け取ることができます。
役に立つ場面
- スクリプトの最初からデバッグを始めたい場合
- 初期化処理の流れを確認したい場合
- 予期しない動作の原因をスクリプトの起動直後に調査したい場合
おわりに
launch.json
を使うと、VS CodeでのPythonデバッグがより便利になります。
基本的な構成から、引数や環境変数の設定など、さまざまなオプションを活用して効率的にデバッグを行いましょう。
また、Pythonのデバッグの方法については、下の記事でも解説しています。
このガ記事を参考に、自分の開発環境に適した launch.json
を設定してみてください!