チェックポイントでのオブジェクトの検査
Apex コードへのチェックポイントの設定
宇宙船がシステムエラーのアラームを発した瞬間に、ログに目をやり、どこでどのような問題が生じたのか見極める必要があります。
同様に、Apex コードでエラーが発生した場合、パフォーマンスの問題が生じた場合、想定した結果が得られない場合も、最初のステップは、デバッグログを確認して問題を特定することです。ログ全体を 1 行ずつ見ていく作業はかなり面倒です。そこで役に立つのがチェックポイントです。チェックポイントは、実行中の特定の時点における Apex コードの状態のスナップショットを表示します。
Apex コードにはチェックポイントを 5 つまで設定できます。Visualforce マークアップではチェックポイントを使用できません。
- を選択して、EmailMissionSpecialist クラスを開きます。
- を選択します。
- [General Trace Setting for You (全般トレース設定)] セクションで、[Add/Change (追加/変更)] をクリックします。
- ApexCode のログレベルを [FINEST (最も詳細)] に設定します。
- 変更を保存するには、[Done (完了)] をクリックします。
- [Change Log Levels (ログレベルの変更)] ダイアログボックスを終了するには、[Done (完了)] をクリックします。
ソースコードエディタにコードを表示すると、左側に行番号が示されます。inspectResults(results); の行番号をクリックします。チェックポイントが作成されたことを示す赤いドット (1) が示されます。

これで、コードを実行し、[Checkpoints (チェックポイント)] タブを使用して分析することができます。
[Checkpoints (チェックポイント)] タブ
[Checkpoints (チェックポイント)] タブを使用すると、コード実行のどこに問題があり、その時点のオブジェクトの値が何かを正確に把握することができます。次のコードを実行して、チェックポイントの動作を見てみましょう。
を選択します。次のコードを入力して実行します。Enter your email address を自身のメールアドレスに置き換えます。
EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('Enter your email address', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
Apex コードが正常に実行されたら、デバッグログを開き、[Checkpoints (チェックポイント)] タブをクリックして結果を確認します。
![[Checkpoints (チェックポイント)] タブ](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/developer_console/developer_console_checkpoints/images/ja-JP/ec8a9cd2f49f2bf12ade1c544b98e527_dev_console_checkpoint_results.png)
- [Checkpoints (チェックポイント)] テーブルに、各チェックポイントの名前空間、クラス、行番号が示されます。また、各チェックポイントが作成された日時も示されます。
- [Checkpoint Locations (チェックポイントの場所)] テーブルには、選択したチェックポイントでキャプチャされたファイル名、行番号、反復が示されます。
[Checkpoints (チェックポイント)] テーブルのチェックポイントをダブルクリックして、チェックポイントインスペクタでキャプチャされた結果を確認します。お楽しみはこれからです!
チェックポイントインスペクタ
- Heap (ヒープ) — チェックポイントが設定されたコード行の実行時点でメモリ内に存在するすべてのオブジェクトが表示されます。
- Symbols (記号) — メモリ内にあるすべての記号がツリービューで示されます。
[Heap (ヒープ)] タブ
- [Types (種別)] で、[Messaging.SingleEmailMessage] をクリックします。
- [Instances (インスタンス)] で、このオブジェクト種別の任意のインスタンスをクリックします。
- [State (状態)] で、オブジェクトの項目とその値を参照します。
![チェックポイントインスペクタの [Heap (ヒープ)] タブ](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/developer_console/developer_console_checkpoints/images/ja-JP/560693dbce655be68f0edc26af8af982_dev_console_chk_insp1.png)
[Symbols (記号)] タブ
[Symbols (記号)] タブは、任意のチェックポイントにおける各種オブジェクトの状態をすばやく簡単に確認する手段です。記号は、特定のオブジェクトを参照する一意の名前です。このタブには、メモリ内のすべての記号がツリービューで示されます。
![チェックポイントインスペクタの [Symbols (記号)] タブ](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/developer_console/developer_console_checkpoints/images/ja-JP/e19a9a7fb072c1777249ed0dbf6c449a_dev_console_chk_sym.png)
- タブのチェックポイントの結果をクリアするには、 を選択します。
- を選択します。
- 今回は無効なメールアドレス (testingemail など) を使用して、EmailMissionSpecialist クラスをもう一度実行します。
EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('testingemail', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
- コードを実行したら、[Checkpoints (チェックポイント)] タブをクリックします。
[Checkpoints (チェックポイント)] タブには結果が何も表示されません。コード実行が、チェックポイントが設定された行番号まで達していないためです。
![[Checkpoints (チェックポイント)] タブの結果](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/developer_console/developer_console_checkpoints/images/ja-JP/751540bf2965a0a5b1a3fd3b670e297f_dev_console_chk_no_res.png)
- を選択して、EmailMissionSpecialist クラスを開きます。
- String[] toAddresses = new String[] {address} の左側の行番号をクリックします。
- を選択します。
- を選択します。
- 無効なメールアドレス (testingemail など) を使用して、EmailMissionSpecialist クラスをもう一度実行します。
EmailMissionSpecialist em = new EmailMissionSpecialist(); em.sendMail('testingemail', 'Flight Path Change', 'Mission Control 123: Your flight path has been changed to avoid collision ' + 'with asteroid 2014 QO441.');
- [Checkpoints (チェックポイント)] タブをクリックします。
[Checkpoints (チェックポイント)] タブに新しいエントリが表示されます。今回は、チェックポイントインスペクタを使用して、メモリ内のオブジェクトを分析することができます。
![[Checkpoints (チェックポイント)] タブの結果](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/developer_console/developer_console_checkpoints/images/ja-JP/877525b8092fd921eb72b891ffd448dd_dev_console_chk_test.png)