noteのタイトル画像

ビットコイン自動トレードへの道 No.3 (デバッグ準備編 step02)

前回でBabelを使ったNode.jsプログラムの起動とビルドは分かったと思う。
さて、今回は準備編の最終回として、visual studo code(マイクロソフト製の簡易開発環境)を導入して、デバッグ(虫取り)の準備をしよう。
プログラムを組んで、自分でプログラムの実行を追跡し、状態を確認できるようになる。

visual studio code(以降、VSCと略す)は以下のサイトからダウンロードできるので、各自の環境にインストールしよう。

VSCをインストールして起動すると、次のような画面が立ち上がる。(画像はiMacでの画像)

VSC自体の操作方法は色々なサイトで紹介されているので、EditやGitの使い方等はそれらのサイトで確認してください。ここではソースコードを読み込んだ上で、デバッグを行う方法を紹介する。

上記の画像の左側のペインに有る「虫に駐禁マーク」のボタン(上から4つ目)に注目して欲しい。このボタンが「デバッグ」モードへ遷移するボタンだ。
もともとはVSCはただのエディタ程度の機能しか無かったが、どんどん高機能化され、今ではGitクライアントであり、デバッグ機能を備え、数々のプラグインによって拡張可能はEmacsやAtomのようなエディタに変身した。

ソースコードを表示させた状態で、ソースコードの好きな部分にブレークポイント(デバッグで停止させたい部分)を貼れる。次の画像が「console.log(exchange.id));」にブレークポイントを設定した画像だ。赤い丸印が見えると思う。

ただ、このままではデバッグするときに、どのコマンドを発行して良いか分からない。VSCにデバッグで使用する命令を設定しよう。VSCのフォルダに

「.vscode」フォルダを作成し、その中に「launch.json」というファイルを作る。その中身を以下のようにしてみよう。

{
   "version": "0.2.0",
   "configurations": [
       {
           "type": "node",
           "request": "launch",
           "name": "step01 debug",
           "program": "${workspaceFolder}/step01/src/app.js",
           "stopOnEntry": false,
           "args": [],
           "cwd": "${workspaceRoot}/step01",
           "preLaunchTask": null,
           "runtimeExecutable": null,
           "runtimeArgs": [
               "--nolazy",
               "--require",
               "babel-register"
           ],
           "env": {
               "NODE_ENV": "development"
           },
           "console": "internalConsole",
           "sourceMaps": true,
           "outFiles": []
       }
   ]
}

そして、app.jsファイルを画面上で表示させ、先程のブレークポイントを設定した状態で、「虫に駐禁マーク」(以降、デバッグモードと称す)を押すと、次のような画面になる。

これがデバッグモード時の画面だ。画面左上に「デバッグ」の文字が見えるだろう。その右横に緑色の横三角形が表示されているので、それを押す。すると先程のブレークポイントのところまでプログラムが進行した状態で、一旦止まる。画像に次のようになっているはずだ。

ここで、左側のペインの「ウオッチ式」という部分に「exchange」という文字を入力する。すると、Bitflyerオブジェクトの中身を閲覧することが出来る。

exchangeというオブジェクトが正しくBitflyerオブジェクトになっていることが分かる。オブジェクトを展開すると様々なプロパティやメソッドを確認できる。

fetch_balanceというメソッドも

こうやって確認できる。じつに様々なプロパティ、メソッドがあるので詳細を確認するのにとても便利だ。

デバッグは画面上部に表示されるボタンで、左から
・RUN(実行)
・ステップオーバー
・ステップイン
・ステップアウト
・再起動
・停止
が選べる。

ここから先はNode.jsだろうが、Pythonだろうが、他の言語だろうが同じ感覚で操作できる。(もちろん、様々な言語を扱うにはそれなりのプラグインの導入が必要だが)
さあ、ここまで出来れば、後は実際にプログラムを組んで実行するだけである。デバッグが出来るとものすごく運用の幅が広がるのでぜひトライしてください。

次回からはついにトレードプログラムを実際に組み上げて行きます!


ソフトウェア・エンジニアを40年以上やってます。 「Botを作りたいけど敷居が高い」と思われている方にも「わかる」「できる」を感じてもらえるように頑張ります。 よろしくお願い致します。