[前回] Django+Reactで学ぶプログラミング基礎(20): Reactチュートリアル(データ受渡しと状態記憶)
はじめに
前回は、Reactの重要な概念props
とstate
を勉強しました。
今回は、少しチュートリアルを離れ、プログラミングに欠かせないデバッグ
の勉強です。
今回の内容
- デバッグとその重要性
- Reactアプリをデバッグ
デバッグとその重要性
-
試行錯誤(
Trial & Error
)とは- コードを書く
- 動かしてみる
- エラー原因を特定し修正する
-
Trial & Error
の高速な繰り返しにより、開発生産性を向上-
エラー原因を特定し修正する
方法- デバッグを行う
-
-
デバッグとは
- プログラムの中のバグ/欠陥を特定し取り除き、仕様通り動作させるための作業
- エラー時だけでなく、コード解析にも役立つ
- プログラムの中のバグ/欠陥を特定し取り除き、仕様通り動作させるための作業
-
デバッグ方法
- 方法1: 実行ログにデバッグ内容を追加出力
- 方法2: ブレークポイントで処理を止め、ステップ実行
Reactアプリをデバッグ
デバッグに必要なファイルを作成
-
tasks.json
を使用し、Reactアプリを起動- アプリ起動コマンド
npm start
を実行するタスクreact-start
を作成
- アプリ起動コマンド
.vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "react-start",
"detail": "react-scripts start for debug",
"type": "npm",
"script": "start",
"isBackground": true,
"problemMatcher": [
{
"pattern": [
{
"regexp": ".",
"file": 1,
"line": 1,
"message": 1
}
],
"background": {
"activeOnStart": true,
"beginsPattern": "^Starting.*$",
"endsPattern": "^Compiled.*$"
},
}
],
"options": {
"env": {
"BROWSER": "none"
}
}
},
{
"label": "terminate-react-start",
"command": "${input:terminate}",
"type": "shell",
"problemMatcher": []
}
],
"inputs": [
{
"id": "terminate",
"type": "command",
"command": "workbench.action.tasks.terminate",
"args": "react-start"
}
]
}
-
launch.json
を使用し、デバッグ構成を作成-
preLaunchTask
で指定したreact-start
が実行される-
react-start
はtasks.json
で作成したもの
-
- デバッグポートを有効にし、Google Chromeを起動
- ReactアプリのURLが開かれる
- Google ChromeのデバッグポートにVS Codeのデバッグが接続される
-
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "debug react",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}",
"preLaunchTask": "react-start",
"postDebugTask": "terminate-react-start",
}
]
}
デバッグ構成を起動
-
コードにブレークポイントを設定
-
VS Code左サイドで、
実行とデバッグ(Ctrl+Shift+D)
を選択、左上の▷
をクリックし実行(またはF5)
ステップ実行方法
- 下記ショートカットキー、または右上に表示されるツールバーでステップ実行
キー | 操作 | 動き |
---|---|---|
F10 | ステップオーバー | 行単位実行 |
F11 | ステップイン | 関数内に入って実行 |
Shift+F11 | ステップイン | 関数から抜け呼び出し元に戻る |
F5 | 続行 | 次のブレークポイントまで一気に実行 |
便利なデバッグ方法
-
変数(Variables)
-
ウォッチ式(Watch)
-
デバッグコンソール
おわりに
Reactアプリのデバッグを勉強しました。
次回も続きます。お楽しみに。