2021/02/4

Salesforceにおけるcalloutとは?転職の参考になる情報を紹介

 
  

Salesforceにおけるcalloutとは?

Salesforceにおけるcalloutは、Apex calloutを使用することで、外部 Webサービスへのコールを作成し、もしくは Apex コードから HTTP 要求を送信、応答を受信することにより、Apex が外部サービスと密接に統合される仕組みです。 calloutにより、Apex は外部WebもしくはHTTP サービスを呼び出せます。Apex Webサービスの使用で、外部アプリケーションはWebサービスの使用で、Apex メソッドを呼び出せます。 例) ・SOAP サービス: WSDL ドキュメントからのクラスの定義 ・HTTP コールアウトの呼び出し ・長時間要求の非同期コールアウト

リモートサイトの設定の追加について

Apex calloutで外部サイトを呼び出す前、そのサイトを [リモートサイトの設定] ページで登録しなければなりません。 登録しない場合はcalloutが失敗してしまいます。Salesforceでは、未承認のネットワークアドレスに対して、コールが行われないようになっています。 calloutでエンドポイントとしてログイン情報を指定する場合は、リモートサイト設定を定義する必要はないです。指定ログイン情報では、1つの定義にcalloutエンドポイントのURL、および必要な認証パラメータが指定されます。 また、良いパフォーマンスを得るために、「リモートHTTPS暗号化サイト」でOCSP Staplingがonになっているかを確認する必要があります。 指定ログイン情報の設定には、Salesforceヘルプにある「指定ログイン情報の定義」を参考にすると便利です。

指定ログイン情報について

指定ログイン情報とは、1つの定義に対して、calloutエンドポイントのURL、必要な認証パラメータの指定を行うことです。 Apex calloutにおいて、指定ログイン情報をcalloutエンドポイントとして指定すると、その認証が全て、 Salesforce で管理されます。指定ログイン情報で定義されたサイトは、外部サイトへのcalloutで必要なリモートサイト設定についても、スキップすることができます。 指定ログイン情報のなかには、非公開接続からのcalloutを転送する際に使用可能なOutboundNetworkConnection項目もあります。エンドポイントURLと認証を、calloutの定義から切り離すことにより、指定ログイン情報でcalloutを容易に管理することができるのです。

クラスの定義について

クラスは、ローカルハードドライブもしくはネットワーク保管のWSDL ドキュメントから自動的に生成することが可能です。 WSDLドキュメントを使用してクラスを作ると、Apexコード内で外部Webサービスにcalloutすることが可能です。 WSDLドキュメントを使うと、Apexクラスの生成後、外部サービスを呼び出すときにApexコードにスタブのインスタンスを作成、メソッドをコールします。 WebサービスcalloutにHTTPヘッダーを設定できます。例えば、この機能を使用して認証ヘッダーにCookieの値の設定が可能です。 Apexでは、ドキュメントリテラルでラップした、WSDLスタイル、プリミティブデータ型と組み込みデータ型だけサポートしています。

calloutの呼び出し

ApexではHTTPサービスを使うことで、HTTP要求を作成する、「組み込みクラス」が提供されます。 HTTPクラスを使い、RESTベースのサービスへの統合が可能です。さらに、HTTPクラスをSOAPベースのWebサービスへ統合、WSDLからApexコードの生成もできます。 WSDLでなくHTTPクラスを使うことにより、要求と応答のSOAPメッセージ構造がはっきりわかります。 Apexのリリースまたはパッケージ化は、コードのテストカバー率75%以上が必要です。デフォルトだと、テストメソッドがHTTPcalloutをサポートしないので、calloutを実行するテストは失敗します。 Test.setMockを使うことで、テストで擬似応答生成指示をApexにすると、HTTPcalloutのテストが有効になります。

証明書の使用について

双方向のSSL認証を使うために、Salesforceで生成、または証明機関で署名された証明書を、calloutと一緒に送信します。 証明書を送信することで、calloutの送信先が証明書を受信します。キーストアへの要求の認証にもこの証明書を使用できます。そのことにより、セキュリティが向上します。 calloutにおいて、エンドポイントで指定ログイン情報を指定するなら、リモートサイト設定の定義は必要はありません。 HTTP要求で証明書の使い方は、Salesforceでの証明書生成後、証明書を使い、HTTP要求へのcalloutすることで、双方向認証をサポートすることができます。 例)
HttpRequest req = new HttpRequest();
req.setClientCertificateName('DocSampleCert');

calloutの制限事項について

Apexコードにおいて、HTTP要求もしくはWebサービスコールに対するcalloutを実行する場合は制限があります。 Webサービスコールは、「SOAP APIコール」もしくは「外部のWebサービスコール」が使用可能です。 Salesforceでは、サイト切り替え、インスタンス更新などがSalesforceのメンテナンスアクティビティ中、「参照のみモード」になります。継続的サイトの切り替えは、Salesforceでだいたい半年ごとに、準備サイトに切り替わります。 Sandboxで「参照のみモード」のテストは、Salesforceに連絡、「参照のみモード」のテストオプションを有効化してもらう必要があります。テストオプションの有効化後、「参照のみモード」のオンへの切り替えで、アプリケーション検証が可能になります。

長時間calloutの実行について

非同期calloutを使うことで、「Visualforceページ」から「長時間の要求」を外部Webサービスで実行、コールバックメソッドで応答を処理することができます。 非同期calloutは、「Visualforceページ」から実行され、「コールバックメソッド」で応答が返ってくるcalloutです。非同期calloutは「継続」とも言われています。 非同期calloutを使うメリットがある、Salesforceアプリケーションは、ボタンが設定された「Visualforceページ」です。ユーザはこのボタンをクリックすることで、外部Webサービスからデータを取得することができます。 例えば、多数が同じボタンをクリックし、製品の保証情報を同時に処理するとします。この同時アクションで、普通は長時間要求の同時実行数の制限が超過します。これが非同期calloutを使うことで、制限から外れ、実行されるのです。

Salesforceにおけるcalloutを理解し、転職に活かそう

今回はSalesforceでのcalloutの使用について紹介しました。 IT業界において、calloutの意味は幅広く使われています。そのなかで、転職したい企業、または転職希望企業の一つであるSalseforceで、calloutがどのように使われているのかを理解することは、転職活動をしていくうえで、大変重要になります。 calloutに関してよく知らない、知識が不十分だという人も、本文を読んでcalloutの内容をよく理解し、転職活動につなげていきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】