launch.json
とは?
launch.json
は VS Code で デバッグ構成 を定義するための設定ファイルになります。このファイルを使うことで、どのようにデバッグ実行するか を設定できます。Pythonでの開発において便利だったので忘備録として記録します。
launch.json
の場所
基本はVS Code のプロジェクトフォルダ内の .vscode/launch.json
に配置します。
Python の launch.json
の基本構造
Python のデバッグ設定を launch.json
に記述すると、例えば以下のようになります。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: ファイルを実行",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
設定項目の解説
設定キー | 説明 |
---|---|
"version" |
設定のバージョン (通常 0.2.0 ) |
"configurations" |
複数のデバッグ設定を配列で定義 |
"name" |
デバッグ構成の名前 (VS Code のデバッグメニューに表示) |
"type" |
使用するデバッガ (python に設定) |
"request" |
launch (新しいプロセスで開始)または attach (既存のプロセスにアタッチ) |
"program" |
実行したい Python ファイルのパス (${file} は現在開いているファイル) |
"console" |
integratedTerminal (VS Code のターミナルで実行) |
name
は 任意の名前 を自由に決めて大丈夫です。
VS Code の デバッグメニュー に表示される名前なので、わかりやすいものを設定すると便利です。
複数の設定を定義するときは、name
を工夫すると何をデバッグするのか管理しやすくなります。
① シンプルな名前
{
"name": "Python: メインスクリプト"
}
- シンプルに「メインスクリプト」として、どの設定かわかりやすく。
② プロジェクト名を入れる
{
"name": "MyProject: 開発モード"
}
- プロジェクト名 を入れることで、複数のデバッグ設定がある場合でも識別しやすい。
③ 実行環境ごとに分ける
{
"name": "Flask API (開発環境)"
}
{
"name": "Flask API (本番環境)"
}
- 環境 (開発・本番など) を区別すると便利。
④ テスト実行用の設定
{
"name": "pytest: 単体テスト"
}
- テスト用のデバッグ設定 だと一目でわかる。
カスタマイズ例
① コマンドライン引数を渡す
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 引数あり",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/script.py",
"args": ["arg1", "arg2"],
"console": "integratedTerminal"
}
]
}
-
args
に"arg1", "arg2"
を指定すると、script.py
はpython script.py arg1 arg2
のように実行される。
② 環境変数を設定
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 環境変数設定",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/app.py",
"console": "integratedTerminal",
"env": {
"API_KEY": "your_api_key",
"DEBUG": "true"
}
}
]
}
-
env
で環境変数を設定し、Python コード内でos.environ["API_KEY"]
のように取得可能。
③ FastAPI のデバッグ
{
"version": "0.2.0",
"configurations": [
{
"name": "FastAPI: サーバー起動",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": [
"main:app",
"--host", "127.0.0.1",
"--port", "8000",
"--reload"
],
"jinja": true
}
]
}
- "module": "uvicorn" → uvicorn を使って FastAPI アプリを起動。
- "args" に FastAPI アプリのモジュール名 (main:app) を指定。
- --host, --port, --reload で開発環境向けの設定を追加。
④ 既存の Python プロセスにアタッチ
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: アタッチ",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
}
}
]
}
- 既に動作中の Python アプリ(例えばサーバー)にデバッガを接続。
- debugpy を使って待機させると、この設定でアタッチできる。
設定 | 例 | 用途 |
---|---|---|
引数を渡す | "args": ["arg1", "arg2"] |
コマンドライン引数付き実行 |
環境変数を設定 | "env": { "API_KEY": "xxx" } |
API キーや設定値の管理 |
標準的な FastAPI デバッグ | "module": "uvicorn" |
Web アプリのデバッグ |
既存プロセスにアタッチ | "request": "attach" |
すでに動作しているアプリにデバッガ接続 |
まとめ
- VS Code のデバッグ構成を定義するファイル。
-
.vscode/launch.json
に配置される。 - デバッグの効率化: 毎回手動でスクリプトを実行する手間を省ける。
-
環境ごとの設定を簡単に切り替え可能:
"configurations"
で複数のデバッグ設定を管理。 - コマンドライン引数や環境変数を自由に変更できる: フレキシブルな開発環境を実現。 - Python 以外にも JavaScript、Node.js、Go など様々な言語に対応。
- 基本のデバッグ設定を作成し、プロジェクトごとにカスタマイズするのがベスト!