API バージョンの廃止に備えるための新しいツール【Salesforce 開発者ブログから】



+ [New Tools to Help Prepare for API Version Retirement](https://developer.salesforce.com/blogs/2024/10/new-tools-to-help-prepare-for-api-version-retirement)

Summer '25 リリースでの API バージョン 21.0 から 30.0 の廃止に備えるために役立つ 2 つの新しいツールについて説明します。

最新の機能にアクセスするために、アプリケーションが最新の API バージョンを使用していることを確認することは良い習慣ですが、差し迫った API バージョンの廃止に先手を打つことはさらに重要です。2021年に、Salesforce は従来の Platform API の包括的な[API バージョン廃止計画](https://developer.salesforce.com/blogs/2021/08/make-api-version-retirements-a-no-op)を発表しました。その計画の一環として、[Salesforce Platform API バージョン 21.0 から 30.0 は廃止され、Summer '25 リリースで廃止される予定です。](https://help.salesforce.com/s/articleView?id=release-notes.rn_api_retirement_delay.htm&release=244&type=5)

この重要なトピックについては、以前のブログ投稿でも取り上げましたが、この投稿では、廃止された API バージョンを使用しているクライアント アプリケーションを簡単に識別できるようにすることで、この API バージョンの廃止に備えるのに役立つ 2 つの新しいツールについて説明します。イベント ログ ブラウザーと API バージョン廃止の適用の概要を説明し、それぞれの設定方法について説明します。また、取り組みを強化するのに役立つベスト プラクティスについても説明します。

# API 合計使用量イベントを監視する

アプリで使用されている API バージョンを識別する方法の 1 つは、組織への SOAP、REST、および Bulk API リクエストを報告する無料の[**API 合計使用量イベントを監視する**ことです。](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_apitotalusage.htm)

監視を簡単にするために、Summer '24 リリースに含まれる新しい[イベント ログ ファイル ブラウザを使用して、](https://help.salesforce.com/s/articleView?id=sf.real_time_em_elf_browser.htm&type=5)組織の API 合計使用量イベント ログ ファイルを参照し、それらを CSV ファイルとしてダウンロードして、個々の API イベントを表示します。ここでは、過去 24 時間の毎日のイベント ログ ファイルを表示できます。[イベント監視](https://help.salesforce.com/s/articleView?id=000339868&type=1&language=en_US)を有効にしている場合は、過去 30 日間の時間別および毎日のイベント ログ ファイルの両方を表示できます。

いくつかの簡単な手順でイベント ログ データにアクセスできます。

セットアップから、「セキュリティ」→「イベント監視」→「イベント ログ ブラウザ」に移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/c8f1d662-eb70-e647-a11a-6f7aba4194d9.png)

その後、個々のイベント ログ ファイルを CSV ファイルとしてダウンロードし、その中の API イベントを表示できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a02e35ae-bd18-b407-411e-5786bf9d5ac5.png)


各 CSV ファイルを確認し、API バージョン 30.0 以下のエンドポイントに対してリクエストが行われているかどうかを確認します。

バージョン 30.0 以下を使用するアプリケーションの場合は、イベント ログ データ内の次のキー フィールドを使用して、API 呼び出しのソースを特定します。

+ CONNECTED_APP_IDAPI 呼び出しを行った接続されたアプリを示します。
+ CLIENT_NAMEAPI 呼び出しを行うアプリケーションを識別するためにクライアントによって提供されるオプションのヘッダーです。
+ USER_IDAPI 呼び出しの認証に使用される組織内のユーザーを識別します。これは発信元クライアントを識別するのに役立ちますが、同じシステム ユーザー アカウントが複数のクライアントで共有される可能性があることに注意してください。
+ CLIENT_IPは要求元クライアントの IP アドレスですが、同じ物理的な場所にある複数のクライアントが同じ IP アドレスを共有する場合は注意が必要です。

API 経由でイベント ログ データにアクセスすることもできます。これについては、ブログ記事[「レガシー API 廃止計画に関する重要な更新」](https://developer.salesforce.com/blogs/2023/05/an-important-update-to-our-legacy-api-retirement-plan)で詳しく説明されています。

# API バージョン廃止の強制を有効にする

Winter '25 リリースの新機能を使用すると、組織でこれらの非推奨 API バージョンの廃止の強制を有効化できます。有効にすると、これらのバージョンへの API リクエストは、Summer '25 リリースで廃止が強制されたときに表示されるのと同じエラーで失敗します。

+ REST APIはHTTPステータスを返します 410: GONE
+ SOAP APIはHTTPステータスを返します 500: UNSUPPORTED_API_VERSION
+ バルクAPIはHTTPステータスを返します 400: InvalidVersion

これにより、これらの非推奨の API バージョンを使用して組織を呼び出しているアプリケーションを特定できます。これらのアプリケーションではエラーが発生します。これによりアプリケーションの動作が中断される可能性があり (おそらく中断されるでしょう)、この機能は慎重に使用する必要があります。この中断を今一時的に強制することで、非推奨のバージョンを使用しているアプリケーションを特定し、Summer '25 リリースでの公式な廃止の実施 (その時点では確実に中断されます) の前に、最新の API バージョンにアップグレードすることができます。

# この新機能を使う

セットアップで、リリース更新に移動し、Salesforce プラットフォーム API バージョン 21.0 ～ 30.0 の廃止カードを選択します。テスト実行を有効にするボタンをクリックすると、バージョン廃止の適用が有効になります。ボタン名はテスト実行を無効にするに変わり、テストが完了したらバージョン廃止の適用を無効にするために使用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/49347494-d31b-6570-4bb1-e830fe8e731c.png)


# API呼び出しを行ったユーザーを簡単に識別するためのベストプラクティス

これらの非推奨の API バージョンの廃止による影響を受けるかどうかにかかわらず、将来の API バージョンの廃止に備える必要があります。組織に対して API 呼び出しを行うアプリケーションを識別できることは、優れた API ガバナンスです。

次のベスト プラクティスは、廃止された API の呼び出し元を特定し、正式に廃止される前に適切な更新を行うのに役立ちます。

### 接続されたアプリを使用する

API 呼び出しのソースを識別する最善の方法は、接続アプリケーションを使用することです。これにより、組織内の各クライアント アプリケーションに明示的な ID が作成されます。接続アプリケーション ID は、そのアプリケーションによって行われたすべての API 呼び出しとともに記録されるため、簡単に識別できます。

### すべてのAPI呼び出しでクライアント名を指定します

クライアント アプリケーションがSforce-Call-OptionsAPI 呼び出しの要求ヘッダーにクライアント名を指定していることを確認します。これは任意のテキストを入力できるオプションのヘッダー値であり、そのアプリケーションによって行われたすべての API 呼び出しでログに記録され、識別に役立ちます。このヘッダー値は、REST API、SOAP API、およびBulk APIを使用した API 呼び出しで入力できます。

### Salesforce統合ユーザーライセンスを使用して統合ごとに専用ユーザーを作成します。

Salesforce では、組織に接続する各アプリケーションに専用のユーザーを割り当てることを推奨しています。これにより、各アプリケーションに必要なデータと操作へのアクセスのみを許可し、それ以上のアクセスは許可せずに、各アプリケーションからのリクエストの明確な監査可能性と追跡可能性を実現できます。そのユーザーのユーザー ID はアプリケーションからの API 呼び出しとともに記録され、発信元を識別する別の手段となります。 

Salesforce は、各統合に専用のユーザーを持たせるためのコスト効率の高い手段として、Salesforce 統合ユーザー ライセンスを導入しました。Salesforce統合ユーザー ライセンスを構成する方法については、[このブログ投稿](https://developer.salesforce.com/blogs/2024/02/invoke-rest-apis-with-the-salesforce-integration-user-and-oauth-client-credentials)をお読みください。


# 関連する質問など

+ [イベントモニタリングについて](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000KDbPI)

>①Enterprise Editionを契約中のお客様の本番環境で、利用されているSalesforcePlatformのAPIバージョンを調査したいのですが、イベントモニタリング設定をONにすることで日常の業務に支障が出てしまうようなパフォーマンスの低下などはあるのでしょうか？ 

 

>②契約している環境がEnterpriseエディションで、Salesforce Shield または Salesforce Event Monitoring のアドオンサブスクリプションは購入しておりません。 この場合、例えば2/14(金)のログは、2/15(土)からダウンロードできるようになり、またその日のうちにダウンロードを行わなければ2/14(金)のログは消えてしまうのでしょうか？ 

+ [【未解決】REST API バージョン 20 を使用するオブジェクト/トリガーをトレースするにはどうすればよいですか?](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000PWr7E)

最初に送信されたリンクの手順を試し、Postman を使用して API の使用状況を追跡しました。うまくいきましたが、すでにわかっている詳細しか表示されませんでした。結果には、client_name、API_version、user_id、および API_family が表示されました。  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1b560b97-2451-4edd-a4f9-853db291b2c8.png)

ご覧のとおり、上記の結果では URI / API_source が示されていますが、バージョン 20.0 のものにはそれがありません。Salesforce サポート エンジニアと私はすでにこのことを経験しましたが、どちらもフラストレーションを感じています。0666F00000BoYEp は、投稿で言及した VF ページで、API バージョン 47.0 で実行されています。 


この VF ページへのクエリを開始した人を追跡するのに助けが必要です: