VSCodeでDjangoをデバッグする環境を整えた

こんにちは。22年度新卒でバックエンドエンジニアとして入社しました、mobojisan (mobojisan) · GitHubと申します。

コーヒー中毒かつ2次元イケメンが大好きな腐夢兼任系オタク男性です。現推しはA3!の佐久間咲也くん。ナポリタン毎日食べてほしい。

今回は、VSCodeでのDjangoデバッグ環境をセットアップする方法について書いていきます。

 

Djangoデバッグは難しい?

業務ともなれば常に複数人が編集し、共通する処理をクラスに切り出されビジネスロジックをできるだけ疎結合にすることを意識して書かれたコードを触ることになります。

そもそもWebプログラミング自体複雑性が高く、分野や関心も多岐にわたるため、自分のPC内で完結する簡単なプログラムと比較したとき単純に難易度が上がると思います。

ドキュメント・コード・テストをフル活用しても仕様を理解しつつ新しいロジックを追加したりバグの原因を調査したりするのは一筋縄ではいきません。

弊社ではサービスの一つである「クロスオーダー」のバックエンドの実装にDjangoを使用しております。

Djangoフルスタックフレームワークです。コードの再利用に一つ焦点をあてており、少ないコードでさまざまな機能を迅速に実装できることを目的の一環に開発されています。

一方で暗黙的に宣言されているさまざまなクラス・変数がコンテキストで渡ってくるので読み解くために多くの前提知識が必要になります。

まして学生時代趣味でDjangoを触ったことがありながら、Djangoのクラスベースビューが理解しきれず一度は挫折した経験のある僕です。

把握のスピードを上げ、コード内部で起こっていることを理解するためには得られる情報を少しでも分かりやすくするニーズがありました。

VSCodeDjango向けデバッグ環境をセットアップ

すでにDjangoのアプリケーションが今見ているディレクトリ下に存在していることを前提とします。Djangoアプリケーションがまだない場合は下記リンク「開発用サーバー」の章まで進めてください。

はじめての Django アプリ作成、その 1 | Django ドキュメント | Django

VSCodeでは左タブ「実行とデバッグ」よりデバッグを開始することができます。しかし、インストールして「実行とデバッグ」を触っていない状態ではまだ動きません。

数クリックでデバッグの準備が完了しますので、さっそく見ていきましょう。

「launch.jsonファイルを作成します。」をクリックし、出てきたモーダルに対してPython > Djangoを押します。(.py形式のファイルを開いていた場合いきなり以下の「デバッグ構成を選択する」が出ます)

json_debug_setup

launch.jsonでのデバッグ環境のセットアップ

 

なんと現在のVSCodeでは自動で以下のようなjsonファイルの構成までしてくれます。自動生成機能、完成していたのか…

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Django",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "runserver"
            ],
            "django": true,
            "justMyCode": true
        }
    ]
}

デフォルトでは、./manage.py runserverが走るようになっていますが、

例えばargsの中身を"runserver", "8001"に変えることで、「実行とデバッグ」起動時には./manage.py runserver 8001といったようなカスタムコマンドを走らせることができます。 

VSCodeDjango向けデバッグ環境を動かす

ここまで出来ていればあとは簡単です。

左タブから「実行とデバッグ」を押し、左上の緑色の再生アイコンをクリックすると、下のように実行箇所で処理が中断されます。

同時に左ウィンドウの「変数」欄に裏で渡されている変数が表示され、処理に応じて変動するのがわかります。

いっぱい出る

右上にある橙色の停止アイコンを押すことで実行を停止することができます。

かなり項目は少ない方とはいえそれでも分かりづらいですよね。

以降一例程度に捉えていただくのが良いと思いますが、個人的な使い方についても触れてみます。

変数の内容を詳しく見る

詳細を確認したい変数(queryset)の横にブレークポイントを設定した後で「実行とデバッグ」を再度行います。さらに、変数の上にカーソルをホバーさせます。

変数の上にカーソルをホバーさせる

左ウィンドウにも同内容が出ていますが、ホバーウィンドウの方が若干整理されて必要な項目が1行目に白字で表示されます。変数が左ウィンドウのどのタブにあるか探す手間がないため、気軽に内容を確認できますね。

関数を実行して内容をわかりやすく

「実行とデバッグ」を動かしている間にもPythonの変数を実行することができます。

VSCode実行中、ctrl + @にて以下のモーダルが下から出てきます。ここではPythonの実行が可能です。

たとえば以下のようにすることで、上の例で代入されているquerysetの中身をすべて確認することができます。

ホバーでは表示範囲の関係で切れてしまうことがあるので、個人的に重宝しています。print行を入れたり消したりする手間もなくなるため、printデバッグ派にもやさしいですね。

デバッグ コンソールにてPythonを実行した

あとがき

クロスマートでは現在エンジニア採用を強化しており、フロントエンド・バックエンドなどの職種でエンジニアを募集しております。

技術的交流が活発なため内部の勉強会も盛んに行われており、先週で20回を超えました。

また、顧客の声を間近に聞くことができる環境でありながら、顧客の抱える課題を一度咀嚼し考えるため、専用の会議があります。その上で技術的な最適についても追い求めることができます。

こうしたさまざまな角度からの配慮ある施策は、手前味噌ではありますが開発体験のよさにもつながっていると感じております。

ここまでお付き合いくださいましてありがとうございました。

お時間をいただいた上さらなるお願いで恐縮ではありますが、ぜひ以下のリンクから「話を聞きに行きたい」を押していただければ幸いです!弊社代表の顔だけでも覚えて帰っていただければ!

www.wantedly.com