SalesforceでApexジョブの実行履歴を確認する方法 – 初心者向けガイド
SalesforceでApexジョブの実行状況を確認したい管理者や開発者向けに、AsyncApexJobオブジェクトを使ってApexジョブの実行履歴を確認する方法を紹介します。この記事では、Developer Console(開発者コンソール)を利用して、SOQLクエリを実行する手順を説明します。
Apexジョブとは
Apexジョブとは、Salesforce内でApexコードを非同期に実行するためのプロセスを指します。
これには、以下の種類のジョブが含まれます。
- バッチApex: 大量のデータを効率的に処理するためのApexクラス。バッチ処理は小さなチャンクに分割され、それぞれが独立して処理されます。
- 将来のメソッド(Future Methods): 非同期に実行するためのApexメソッド。特定のタイミングで実行する必要がある処理や、長時間かかる処理に使用されます。
- キュージョブ(Queueable Jobs): キューに入れて順次実行する非同期処理。依存関係のある一連の処理を順序よく実行するのに適しています。
- スケジュールジョブ(Scheduled Jobs): 一定のスケジュールに基づいて実行されるApexジョブ。定期的なメンテナンスやデータ処理に使用されます。
これらの非同期ジョブは、システムリソースを効率的に使用し、同期的な処理では実行が困難な大規模なデータ処理や長時間実行されるタスクを実現するために使用されます。Apexジョブの実行状況や履歴は、AsyncApexJobオブジェクトを使用して管理および確認することができます。

Apexジョブの実行履歴を確認する方法について
目的
SalesforceのApexジョブの実行履歴をAsyncApexJobオブジェクトを使って確認できるようにすることを目的とします。
リソース
- SalesforceのDeveloper Console(開発者コンソール)のアクセス権(例:システム管理者)
- 基本的なSOQLクエリの知識
ゴール
Apexジョブの実行履歴がDeveloper Console(開発者コンソール)で正確に表示され、必要な情報が取得できること。
Apexジョブの実行履歴の確認手順
1. Developer Console(開発者コンソール)を開く手順
- Salesforceにログインします。
- 右上のユーザーメニュー(通常はユーザー名が表示されている部分)をクリックします。
- ドロップダウンメニューから「Developer Console(開発者コンソール)」を選択します。
2. SOQLクエリの入力方法と実行手順
- Developer Console(開発者コンソール)が開いたら、上部メニューから「Query Editor」タブをクリックします。
- Query Editorに以下のSOQLクエリを入力します。
SELECT Id, ApexClassId, Status, JobItemsProcessed, TotalJobItems, CreatedDate, CompletedDate, NumberOfErrors
FROM AsyncApexJob
ORDER BY CreatedDate DESC
- クエリを入力したら、「Execute」ボタンをクリックして実行します。
3. クエリ結果の確認方法
- クエリを実行すると、下部に結果が表示されます。
- 表示された結果には、各ApexジョブのId、ApexClassId、Status(状態)、JobItemsProcessed(処理済みジョブアイテム数)、TotalJobItems(ジョブアイテムの総数)、CreatedDate(作成日)、CompletedDate(完了日)、NumberOfErrors(エラー数)が含まれます。
4. 特定のジョブのみを取得するための追加クエリ例
例えば、特定のジョブIdを使って特定のジョブのみを取得する場合は、以下のクエリを実行します。
SELECT Id, ApexClassId, Status, JobItemsProcessed, TotalJobItems, CreatedDate, CompletedDate, NumberOfErrors
FROM AsyncApexJob
WHERE Id = '特定のジョブId'
5. 結果をフィルタリングする方法
特定の条件で結果をフィルタリングする場合は、WHERE句を使用します。例えば、最近の失敗したジョブのみを表示するには、以下のクエリを使用します。
SELECT Id, ApexClassId, Status, JobItemsProcessed, TotalJobItems, CreatedDate, CompletedDate, NumberOfErrors
FROM AsyncApexJob
WHERE Status = 'Failed'
ORDER BY CreatedDate DESC
6. IT統制などで実行されたApexクラスの名前も表示したい
IT統制などで、実行されたApexクラスの名前を表示する場合は、SELECT句に「ApexClass.Name(Apexクラス名)」を指定し、以下のクエリを実行します。
SELECT Id, ApexClassId, ApexClass.Name, Status, JobItemsProcessed, TotalJobItems, CreatedDate, CompletedDate, NumberOfErrors
FROM AsyncApexJob
ORDER BY CreatedDate DESC
Apexジョブの実行履歴のデータの保持期間
AsyncApexJobオブジェクトに保存されるデータの保持期間は、Salesforceの標準的なデータ保持ポリシーに基づいており、通常は30日間ですが、私が確認した時は7日間しかなく、過去の古いジョブデータは自動的に削除されてました。
具体的には、AsyncApexJobオブジェクトに格納されるデータは以下のような保持期間が適用されます。
- 完了したジョブ(成功または失敗): ジョブの完了日から30日後に削除されます。
- 一時停止または保留中のジョブ: 状態が変更されない限り、保持され続けます。
例外
- 大量データ操作や特定のカスタム設定によって保持期間が変わる場合があります。
- 監査ログやAPIアクセスログなど、別途保持される情報もあります。
このため、AsyncApexJobの実行履歴を確認する際は、必要に応じて定期的にデータをエクスポートして保存することを検討することが推奨されます。これにより、7日を超える履歴データも保持できます。
FAQセクション
Q1: AsyncApexJobオブジェクトとは何ですか?
A1: AsyncApexJobオブジェクトは、Salesforceで非同期に実行されるApexジョブの情報を保持するオブジェクトです。これには、バッチApex、将来のメソッド、キュー処理ジョブなどが含まれます。
Q2: SOQLクエリとは何ですか?
A2: SOQL(Salesforce Object Query Language)は、Salesforce内のデータをクエリするための言語です。SQLに似ていますが、Salesforceのオブジェクトに特化しています。
Q3: Developer Console(開発者コンソール)を開けない場合はどうすればよいですか?
A3: Developer Console(開発者コンソール)が開けない場合は、Salesforceの設定やブラウザの設定を確認し、アクセス権限があるかどうかを確認してください。必要に応じて、Salesforce管理者に問い合わせてください。
このガイドを参考にして、Apexジョブの実行履歴を効果的に確認してください。
コメント