Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

JavaScript 実行の監視

学習の目的

この単元を完了すると、次のことができるようになります。

  • JavaScript 変数を追跡する。
  • JavaScript 変数を操作する。
メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

JavaScript のトラブルシューティングに慣れている人なら、console.log() コマンドも使い慣れていることでしょう。JavaScript の実行中に何が起きているかを教えてくれる便利なツールです。スクリプトのさまざまな状態において、変数が何をしているかを教えてくれます。実は、その情報をもっと速く、もっと見やすく提供してくれるツールがあるのです。それが DevTools Watch です。では、詳しく見ていきます。

一緒にトレイルを進みましょう

エキスパートの説明を見ながらこのステップを実行したい場合は、次の動画をご覧ください。これは Trailhead Live の「Trail Together」 (一緒にトレイル) シリーズの一部です。

(この動画は 39:54 の時点から始まります。戻して手順の最初から見直す場合はご注意ください。)

Watch 機能を使う

ブレークポイントを設定する方法とコードのフローや変数の値を見る方法を学習しました。コードの実行中の特定のタイミングでこれらの変数と値を監視するには、もっと便利な方法があります。JavaScript デバッグペインで Watch を使用することです。

Solutions アプリケーションを 2 つずつ数える

前の単元では、Solutions アプリケーションで [+1] をクリックするたびに数が 1 つ増えるのを見ました。次は、[Control Option (制御オプション)] を使用して、2 つずつ数えるようにしましょう。

  • ブラウザーでページを更新します。ブレークポイントは表示されたままです。
  • まだ display.js を開いていなければ DevTools で開きます。
  • handleAugmentorChange(event) 関数を見つけます。
  • JavaScript デバッグペインで [Watch] を展開し、[Add watch expression (ウォッチ式を追加)]追加アイコン をクリックします。

event.target.value と入力して Enter を押します。

追加された event.target.value

Watch に event.target.value:<not available> と表示されます。

ブレークポイントを設定してイベントを起動しましょう。

  1. this.augmentor = event.target.value; 行の番号をクリックしてブレークポイントを設定します。
  2. Solutions アプリケーションの [Control Option (制御オプション)] で [2] を選択します。Watch に event.target.value の値として「2」が表示されます。

event.target.value の値が 2 になる

handleAugmentorChange イベントハンドラーでコードの実行を一時停止しているため、event.target.value が有効で、Watch にはその値が表示されています。

  1. JavaScript デバッグペインで、this.augmentor を Watch に追加します。

Watch に追加された this.augmentor: 1

this.augmentor の値は 1 のままであるのは、このコード行がまだ実行されていないためです。

  1. [Step (ステップ)] ([Step (ステップ)] アイコン) をクリックしてこの行を実行し、次の行に移動します。

DevTools 画面の各番号は下の説明に対応している

ブレークポイントが設定されている行の後でコードの実行が一時停止しているため、Watch には event.target.value:"2"this.augmentor:"2" と表示されます。

  1. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。Solutions アプリケーションの [Controls (制御)] ボタンが [-2] と [+2] に変更されています。

Solutions アプリケーションの [Controls (制御)] ボタンが [-2] と [+2] に変更されている

Solutions アプリケーションが 2 つずつ数えられるのを見る

Solutions アプリケーションの [Display (表示)] では、[Count (数)] は現在 0 になっています。Solutions アプリケーションで [+2] ボタンをクリックすると、変数がどのように変化するかを見てみましょう。

  1. [+2] をクリックします。ブレークポイントによって handleIncrement 関数の最初の行でコードの実行が一時停止します。Watch には event.target.value:undefined this.augmentor:"2" と表示されます。

上記の説明に対応する DevTools 画面

  1. operandthis.counter を Watch に追加します。operand は undefined で this.counter は 0 です。

追加された operand: undefined

  1. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。次のブレークポイントでは一時停止しなかったため、operand の値の変化を確認できました。Solutions アプリケーションの [Count (数)] は 2 になっています。もう一度やってみましょう。今回は一時停止するはずです。
  2. [+2] をクリックします。Watch には次のように表示されます。
    event.target.value: undefined
    this.augmentor: "2"
    operand: undefined
    this.counter: "02"
    this.counter
  3. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。スクリプトが再び一時停止すると、Watch には次のように表示されます。
    event.target.value: undefined
    this.augmentor: "2"
    operand: "2"
    this.counter: "02"
  4. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。うまく行きました。ここで、Solutions アプリケーションの [Count (数)] 値を確認してみましょう。

Solutions アプリケーションの [Display (表示)] コンポーネントには Count: 22 と表示されている。

なぜ数が 4 ではなく 22 なのでしょうか? どうやら、Solutions アプリケーションはカウント値を加算するのではなく連結してしまっているようです。これが Watch の面白い点です。

Watch は式とプロパティを監視する

[+2] ボタンが更新する変数のデータ型を確認しましょう。

  1. typeof operand を Watch に追加します。typeof operand は undefined です。
  2. [+2] をクリックします。Watch には次のように表示されます。
    event.target.value: undefined
    this.augmentor: "2"
    operand: undefined
    this.counter: "022"
    typeof operand: "undefined"
  3. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。

Watch には operand = 2 (引用符付き) と typeof operand = string が表示されている

これです。operand 変数は、文字列型として定義されていたのです。

Watch がトラブルシューティングで発揮する力を見ましたので次は実際に問題を特定して修復方法を見つける方法を学びます。

コンソール

この問題を詳しく調べるには DevTools コンソールを使用します。

  1. ブラウザーでページを更新します。ブレークポイントと監視した項目は表示されたままです。
  2. Solutions アプリケーションで [+1] をクリックします。
  3. Watch で this.augmentorthis.counter の値を確認します。

Watch ペインには、this.augmentor の値は数値の 1、this.counter の値は数値の 0 と表示されている。

this.counterthis.augmentor のどちらも数値に見えますが、いちおう確認してみましょう。

  1. typeof this.countertypeof this.augmentor を Watch に追加します。Watch にはこれらが数値型であることが示されています。
  2. [Step (ステップ)] [Step (ステップ)] アイコン をクリックして次の行に移動します。

Watch に、3 つの typeof 項目 (operand、this.counter、this.augmentor) が数値であることが示される。それぞれの値は、this.augmentor = 1、operand = 1、this.counter = 0。

すべて数値です。ここまでは問題ありません。

  1. [Step (ステップ)] をクリックして次の行に移動します。

Watch には 3 つの typeof 項目が数値であると再び表示され、this.counter の値が 0 から 1 に変わっている。

this.counter が 0 から 1 に変わっています。もう一度やってみて、どうなるかを確認しましょう。

  1. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。Solutions アプリケーションの [Count (数)] は 1 になっています。
  2. Solutions アプリケーションで [+1] をクリックします。
  3. コードをステップ実行すると、数値は数値のままで、this.counter は正しく 2 になっています。
    すべてが想定どおりに機能しているようです。

制御オプションを使用して値の変化を見る

  1. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。Solutions アプリケーションの [Count (数)] は 2 になっています。
  2. Solutions アプリケーションの [Control Option (制御オプション)] で [2] を選択します。スクリプトが handleAugmentorChange 関数のブレークポイントまで実行されます。

コードエディターでは、スクリプトが handleAugmentorChange 関数の 1 行目で一時停止している。また、this.augmentor = event.target.value となっている。そして Watch には operand = 2 (引用符付き) と表示されている。スクリプトは関数内で一時停止しますが、ブレークポイントの行はまだ実行されていません。event.target.value は文字列のように見えることに注意してください。

  1. typeof event.target.value を Watch に追加します。

Watch には event.target.value が文字列であると表示されている。

たしかに文字列です。そのため、Solutions アプリケーションはカウント値を加算すべきところを連結してしまったわけです。

では、コンソールを使用して値を操作し、どうなるかを見てみましょう。

  1. [Console (コンソール)] タブをクリックします。
  2. コンソールに event.target.value と入力して Enter を押します。

event.target.value が追加されたコンソール

コンソールは "2" を返します。2 が引用符で囲まれているのは文字列であることを示すためです。まだブレークポイントで一時停止していますので、変数を現在の状態で使用できます。

  1. this.augmentor = event.target.value と入力して Enter を押します。コンソールは再び "2" を返します。これは想定した結果ではありません。コードが何らかの理由で this.augmentor を数値から文字列に変更してしまったようです。解決策を探しましょう。
  2. this.augmentor = 1 と入力して Enter を押し、数値に戻します。
  3. this.augmentor = parseInt(event.target.value) と入力して Enter を押します。値が 2 に変わり、数値のままとなります。これでコードの修正方法がわかりました。
  4. this.augmentor = 1 と入力して元の値に戻します。
  5. [Sources (ソース)] パネルに戻ります。
  6. [Step (ステップ)] [Step (ステップ)] アイコン をクリックして次の行に移動し、this.augmentor の値を確認します。

Watch には operand が 2 (引用符付き)、typeof operand が string と表示されている。

文字列です。

この単元を一時休止する

この単元の最後までスクロールして、ハンズオン Challenge を完了してください。Challenge を完了したら、ここに戻って、Trailhead Playground でソリューションを試します。

この単元を再開する

では、Solutions アプリケーションが想定どおりに動作することを確認しましょう。

  1. ブラウザーでページを更新します。
  2. Solutions アプリケーションの [Control Option (制御オプション)] で [2] を選択します。スクリプトが handleAugmentorChange 関数のブレークポイントまで実行されます。

コードエディターでは、スクリプトが handleAugmentorChange 関数の 1 行目で一時停止している。Watch には、event.target.value の値が文字列の 2 であると表示されている。

  1. [Step (ステップ)] [Step (ステップ)] アイコン をクリックして次の行に移動します。
  2. this.augmentor の値を確認します。

Watch には his.augmentor の値に引用符が付いておらず、数値の 2 であることが表示されている。数値です。うまく行っています。

  1. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。
  2. Solutions アプリケーションで [+2] をクリックします。
  3. [Step (ステップ)] [Step (ステップ)] アイコン をクリックして次の行に移動します。Watch には次のように表示されます。
    event.target.value: undefined
    this.augmentor: 2
    operand: 2
    this.counter: 0
    typeof operand: "number"
    typeof this.counter: "number"
    typeof this.augmentor: "number"
  4. [Step (ステップ)] ([Step (ステップ)] アイコン) をクリックします。Watch には次のように表示されます。
    event.target.value: undefined
    this.augmentor: 2
    operand: 2
    this.counter: 2
    typeof operand: "number"
    typeof this.counter: "number"
    typeof this.augmentor: "number"
    this.counter
  5. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。Solutions アプリケーションの [Count (数)] は 2 です。
  6. Solutions アプリケーションで [+2] をクリックします。
  7. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックします。スクリプトが条件付きブレークポイントまで実行されて一時停止します。this.counter は 2 のままです。
  8. [Resume script execution (スクリプトの実行を再開)] Resume script execution (スクリプトの実行を再開) アイコン をクリックし、Solutions アプリケーションの [Count (数)] が正しい値の 4 であることを確認します。成功しました。

DevTools の使い心地はいかがですか? このモジュールでは、DevTools が Lightning Web コンポーネントのトラブルシューティングにどのように役立つかについて、ほんの一部を紹介したに過ぎません。下記のリソースで詳細を確認してください。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む