Pythonのプログラムをステップ実行するために、VSCode(Visual Studio Code)でデバッグ環境を構築しました。VSCodeは動作も速く、手軽にステップ実行もできて効率的に開発できます。
Python自体は文法が簡潔で読みやすいので、プログラミングの入門用の言語として初心者にオススメです。また、最近流行りの人工知能(AI)や機械学習、統計に使えるライブラリが豊富に有るので、覚えておきたい言語です。
私の環境は以下の通りです。
環境 | バージョン |
---|---|
MacOS | 10.13.2 |
Python | 3.6.4 |
VSCode | 1.20.1 |
VSCodeの拡張機能「Python」 | 2018.1.0 |
目次
プログラムのステップ実行とは?
冒頭のアニメーションのように、プログラムを1行ずつ(もしくは複数行)動かしては止めてを繰り返しながら、プログラムの流れを追うデバッグの方法です。
任意の行にブレークポイントを設置することで、実行中のプログラムをその行で止めることもできます。
ステップ実行のメリット
ステップ実行ができる環境を構築すると、以下のことが可能になります。
-
1行ずつ実行できるため、任意のタイミングでの変数の中身を確認することが可能。
-
コードを変更する必要が無いため、print文を駆使するよりも効率的にデバッグが可能。
-
ブレークポイントを設置すると、不具合がありそうな部分を重点的にデバッグが可能。
-
さらにデバッグ用のショートカットキーを覚えると、より効率的にデバッグが可能。
[注意事項] 1つのディレクトリ内でコマンドを実行します
この記事では、/private/tmp
をカレントディレクトリ(作業ディレクトリ)として使用します。ターミナルアプリを開いて、cd
コマンドで移動しておきます。
$ cd /private/tmp
$ pwd
/private/tmp
$
後述するコマンドは、全てこのディレクトリで実行するものとします。(基本的にコマンドを実行するディレクトリが統一されていれば、どこでもOKです。)
Pythonをステップ実行するための環境構築をする
最新のPythonのインストール
MacにはデフォルトでPython2系がインストールされていますが、こちらの記事の方法で最新のpython3系をインストールします。
以下のようにカレントディレクトリでpythonの最新版が実行できるようになればOKです。
$ python --version
Python 3.6.4
$
VSCodeをインストール
VSCodeのダウンロードページへアクセスして、[Download for Mac]を押すと、VSCodeのzipファイルがダウンロードできます。
ダウンロードしたzipファイルをダブルクリックすると、解凍結果としてVSCodeのappファイルが生成されます。
このまま起動しても良いですが、Macのお作法としてアプリ(.appが付いているファイル)は「アプリケーション」ディレクトリに置くのが一般的なので、後で探しやすくする意味でもそちらに移動しておきます。
アプリケーションディレクトリに移動したappファイルをダブルクリックして、VSCodeを起動します。
VSCodeの拡張機能「Python」をインストール
以下の手順で拡張機能「Python」を検索します。
- VSCodeのウィンドウの左端に縦に並ぶ5つのアイコンの、一番下の四角い[拡張機能]アイコンをクリックします。
- 検索欄が表示されるので「python」と入力します。
- 作者が「MicroSoft」の「Python」を選択します。
拡張機能「Python」に関する情報が表示されるので、[インストール]をクリックしてインストールできます。
インストールが完了したら、[再読み込み]を押すと拡張機能が使用可能になります。
サンプルプログラムを作成する
例として、以下のプログラムsample.py
を使用します。冒頭のアニメーションと同一のものです。
def plus(x, y):
print(f"{x} + {y} =")
return x + y
a = "Hello"
b = " World!"
c = plus(a, b)
print(c)
c = plus(2, 3)
print(c)
まず、カレントディレクトリにsample.py
を作成します。
$ touch sample.py
sample.py
をVSCodeで開いて、上記プログラムをコピペして保存(Ctrl + S)します。
ちなみに、このプログラムの出力結果は以下のようになります。
$ python sample.py
Hello + World! =
Hello World!
2 + 3 =
5
$
プログラムをステップ実行する
メニューバーの[デバッグ] > [デバッグの開始]を選択する(もしくはF5を押す)と、プログラムが開始されて、その1行目(黄色いハイライト行)で処理が止まります。
ここでF10を押すと、1行ずつプログラムを実行できます。
以下はF10を数回押して10行目まで実行させた状態です。下部にあるデバッグコンソールには、プログラムのその行までにあるprint文が出力した結果が表示されます。
左端の[デバッグ]アイコン(上から4つ目の虫に斜線が引かれている)を押すと、宣言されている変数の一覧(変数a
, b
, c
など)が左側に表示されます。
また、右側のプログラム中の変数c
の上にマウスポインタを置くと、これが現在5
であることが確認できます。
このようにしてステップ実行することで、プログラム実行途中での変数の状態を簡単に確認することができます。
ショートカットキーを用いたデバッグ
その他にも以下のショートカットキーを用いると、デバッグをより効率良く進めることができます。
ショートカットキー | 名称 | 処理内容 |
---|---|---|
F10 | ステップオーバー | 今いる行の次の行まで処理を進める |
F11 | ステップイン | 今いる行にある関数の中に入る |
shift + F11 | ステップアウト | 今いる関数を抜けるまで処理を進める |
F5 | 続行 | 次のブレークポイント、もしくはプログラム終了まで処理を進める |
冒頭のアニメーションの前半でも、これら4つのキーを使ってステップ実行をしています。
F11はMacのデフォルトの状態だと「デスクトップを表示」のショートカットキーとして設定されている場合があります。
以下の記事の方法でF11をステップインとして動作させることができます。
ブレークポイントを用いたデバッグ
各行番号の左側をクリックすると、赤丸(ブレークポイント)が表示されます。
これを設置することで、プログラムをF5(続行)で実行させたときに、以下のようにその行で処理を止めることができます。
冒頭のアニメーションの後半でもやっていますが、sample.py
の8行目のタイミングでは、変数c
には‘Hello World!’
が代入されていることが分かります。
まとめ
VSCodeでPythonプログラムをステップ実行するための環境構築の手順をまとめました。
ステップ実行ができると、プログラムの動きを把握しやすくなり、効率的にデバッグできます。
時にはprint文やログ出力のみでデバッグしなければならない場合もあります。しかしステップ実行ができる状況の場合は出来る限りその環境を構築した方が、初期コストはかかりますが、トータルするとプログラムの多くの不具合をより早くデバッグできます。