Force.com プラットフォームの統合機能

摘要

Force.com プラットフォームには、ネイティブの ERP コネクタから Web サービス、電子メール、シンジケーションフィード、HTTP ベースの REST 呼び出しまで、サードパーティのアプリケーションとの連携を実現する多彩な統合ポイントが用意されています。Java、.NET、PHP などの各種言語の利用を可能にする Web サービス API、ブラウザでのマッシュアップを可能にする AJAX Toolkit なども提供されています。

このドキュメントでは、Force.com プラットフォームでの開発で利用できる主要な統合機能の概要を説明します。ここで取り上げた内容を理解することで、統合の実装のためにどのようなアプローチが利用でき、必要なツールにどのようにアクセスできるかがわかるようになります。


統合機能のタイプ

Force.com プラットフォームには多数の統合機能が用意されており、開発者はプラットフォームから Web サービスを直接呼び出したり、Web サービスのエンドポイントとしてクラスをプラットフォーム上で公開したりできます。外部の HTTP エンドポイントを介して、着信した電子メールを処理したり、特定のイベントにもとづいてメッセージを自動送信したりすることも可能です。

また、やや高度な方法ですが、Force.com が提供する Web サービス API を使用することもできます。この SOAP ベースの Web サービスAPI では、組織のデータに直接アクセスし、Force.com プラットフォームと連携して動作するクライアントをさまざまな言語で開発することが可能です。この API のツールキットには、各種言語での開発をさらに容易にするためのユーティリティクラスが用意されており、Java、.NET、PHP、Adobe Flex などをサポートしています。

このドキュメントでは、以上のような標準的な統合機能を主に取り上げますが、そのほかに、Oracle、SAP などの外部システムとの連携を可能にするネイティブの ERP コネクタや、Force.com AppExchange から入手できる統合ソリューションなど、購入やインストールを通じて利用できる統合機能についても簡単に解説します。

個々の統合機能を詳しく学ぶ前に、それらがどのようなタイプの統合として分類されるのかを把握しておくことは重要です。開発では、通常、統合のニーズや目的に応じてどのアプローチを使用すべきかを判断します。この後は、まず、主要な統合のパターンと Force.com プラットフォームへの実装方法を紹介し、続いて各統合機能の詳細を解説します。


主要な統合のパターン

この後のセクションでは、以下に挙げる主要な統合のパターンについて詳しく説明します。

  • Apex プログラミング言語を使用して Web サービスを作成、公開する
  • Apex を使用して外部 Web サービスを呼び出す
  • アウトバウンドメッセージを使用して、データの変更に応じて外部 Web サービスを呼び出す
  • HTTP と REST を連携させる
  • 電子メール機能を使用してメッセージの受発信を処理する
  • Force.com Web サービス API を AJAX Toolkit などの専用ツールとともに使用して、Java、.NET、PHP、Adobe Flex などの言語で統合処理を記述する
  • Force.com Sites を使用してシンジケーションフィードを設定する

続いて、以上の統合パターンを順を追って解説します。


インバウンド型の統合: Apex プログラミング言語を使用して Web サービスをホスティングする

Apex は Web サービスをサポートしており、外部システムから Force.com プラットフォームのビジネスロジックを呼び出すことが可能です。

Apex は、Force.com プラットフォームで実行される強い型付けのプログラミング言語で、ビジネスロジックをアプリケーションに追加したり、Visualforce ユーザインターフェース層のコントローラを作成したり、データベーストリガを記述したりする場合に使用します。Apex についての詳細は、 Force.com Apex コードの概要を参照してください。

Apex のクラスメソッドは SOAP ベースの Web サービスコールとして簡単に公開でき、統合のベースとして外部のアプリケーションから呼び出すことが可能です。次に示すコードでは、メソッドを Web サービスとして公開します。この Web サービスが呼び出されると、渡されたパラメータを使用して [取引先責任者] オブジェクト (Contact SObject) で新しいレコードを作成し保存するという処理が実行されます。

global class MyWebService { 
  webservice static Id makeContact(String lastName, Account a){ 
    Contact c= new Contact(lastName= 'Weissman',AccountId = a.Id); 
    insert c; 
    return c.id; 
  } 
}

webservice というキーワードによってメソッドが Web サービスとして定義され、アクセス修飾子 global によってクラスがすべての Apex コードから参照可能であることが宣言されています。Web サービスを定義する上記のようなクラスでは、必ずこうしたアノテーションを追加する必要があります。

この Web サービスは WSDL を用意すれば Force.com プラットフォーム上ですぐに利用できます。Force.com Builder (Developer Edition) で対象クラスのクラス名を選択して [WSDL の生成] をクリックし、サービスに対する WSDL を自動生成した後、この WSDL を各言語で使用して、Force.com プラットフォーム上のサービスに対して呼び出しを実行します。

Force.com プラットフォームでは、Web サービスのホスティング、引数や戻り値の変換、WSDL の生成など、多くのタスクがシームレスに自動処理されるため、開発者は、Web サービスを呼び出した際に使用するビジネスロジックを記述するだけで済みます。Web サービスの作成と公開に関する詳細は、 Apex 言語リファレンス を参照してください。


アウトバウンドでの統合: SOAP サービスを使用して外部 Web サービスを呼び出す

Apex コードはSOAP サービスをサポートしているため、既存の SOAP ベースの Web サービスに対し、Force.com から同期および非同期の呼び出しを行うことができます。この処理では Web サービスの WSDL が使用され、すべてのスタブや型のクラスを含む Apex コードが WSDL 用に自動生成されます。

ここではほとんどのプロセスが自動化されているため、開発者が行うべきタスクはほんのわずかです。Force.com Builder にログインし、[設定]、[開発]、[Apex クラス]、[WSDL からの生成] の順にクリックして、表示された画面で WSDL ドキュメントを指定します。WSDL の解析により、WSDL ドキュメント内の各名前空間に対するデフォルトのクラス名が生成されます。サポートされていない種類のスキーマがWSDL に含まれているなど、何らかの問題が存在する場合にはエラーが報告されます。

WSDL の解析が完了すると、Apex クラスが生成されます。このクラスは、SOAP から Apex へのデータ型変換と実際の呼び出し処理を自動的に実行します。

次に、電話番号検索サービスを記述する WSDL ドキュメントによって生成された Apex クラスのコードの一部を示します。

public myWS.PhoneResult LookupPhone(String phone) {
  myWS.LookupPhone_element request_x = new myWS.LookupPhone_element();
  myWS.LookupPhoneResponse_element response_x;
  request_x.phone = phone;
  Map<String, myWS.LookupPhoneResponse_element> response_map_x = 
     new Map<String, myWS.LookupPhoneResponse_element>();
  response_map_x.put('response_x', response_x);
  WebServiceCallout.invoke(
    this,
    request_x,
    response_map_x,
    new String[]{endpoint_x,
    'http://www.mydomain.com/LookupPhone',
    'http://www.mydomain.com','LookupPhone',
    'http://www.mydomain.com','LookupPhoneResponse',
    'myWS.LookupPhoneResponse_element'}
  );
  response_x = response_map_x.get('response_x');
  return response_x.LookupPhoneResult;
}  

もちろん、実際には、自動生成された内容をこのように確認したり、変更したりする必要はありません。対象の Web サービスを実行すれば、クラスの LookupPhone メソッドが自動的に呼び出され、その後の処理はすべて Force.com プラットフォーム側で実行されます。

SOAP サービス使用のシナリオはアウトバウンドメッセージのケースによく似ていますが、Force.com プラットフォームが指定するエンドポイントを利用するのではなくユーザが WSDL を指定する点が異なります。

Web サービスを呼び出すこのような Apex メソッドには、@future アノテーションを付加することができます。これにより、Web サービスの呼び出しを非同期的に実行することが可能になります。呼び出された Web サービスは Force.com プラットフォームのキューに格納され、キューの状況は [Apex ジョブ] ページ ([設定]、[監視] の順にクリック) でモニタできます。


アウトバウンドでの統合: アウトバウンドメッセージの使用

Force.com プラットフォームはアウトバウンドメッセージ機能を備えており、インターネット上に存在する Web サービスのエンドポイントに SOAP ベースのメッセージを送信することができます。メッセージは通常、永続的オブジェクトのワークフロールールによってトリガされます。アウトバウンドメッセージは非同期的に動作しますが (各 SOAP メッセージには最大で 100 件の変更通知を含めることができます)、メッセージ内に含まれる企業やパートナーのエンドポイントの URL やセッション ID にもとづいて、Web サービス API を介して Force.com プラットフォームへのコールバックを容易に実行することも可能です。

アウトバウンドメッセージでは、送信が失敗したメッセージに対して自動的に送信を再試行したり、24 時間の間再試行を継続的に実施したりできます。24 時間以内に送信が成功しないメッセージは不達メールとしてキューに格納され、設定に応じて保存または削除されます。こうした一連の監視機能には、[設定]、[監視]、[アウトバウンドメッセージ] の順にクリックしてアクセスできます。

アウトバウンドメッセージは、セキュリティ面でもさまざまなメカニズムを備えており、HTTP/HTTPS と X.509 証明書による強力な保護を実現しているほか、メッセージに含まれる IP アドレスやユーザ組織の ID にもとづいて、メッセージがセールスフォース・ドットコムのサーバから送信されたものであるかどうかを検証することも可能です。


次の図は、アウトバウンドメッセージサービスで実行される処理の概要を示したものです。

JP Crl integration outbound.jpg

アウトバウンドメッセージの設定では、次のステップを実行します。

  1. ワークフロールールと承認プロセスを設定する
  2. ワークフロールールで指定した条件が生じた場合に実行するアクションとして、アウトバウンドメッセージを設定する
  3. 自動生成された WSDL をダウンロードする
  4. サポート対象の各種言語を使用して、アウトバウンドメッセージの宛先となる Web サービスエンドポイントを設定する

最初の 3 つのステップは、Force.com Builder の [設定] ページに用意されている宣言型の環境で実行します。たとえば、標準の [取引先責任者] オブジェクト (Contact SObject) を例に考えてみましょう。まず、ワークフローで [レコードが作成されたか編集されたとき] という評価条件を指定し、アウトバウンドメッセージのアクションに関連付けます。これにより、評価条件に一致する状況が起こった場合にアウトバウンドメッセージが送信されるようになります。

上記の設定を行うには、[設定]、[ワークフローと承認申請]、[ワークフロールール]、[新規ルール] の順にクリックします。次に [取引先責任者] オブジェクトを選択し、適切なルール名を付け (例: 「サーバの ping の変更」)、評価条件 (例: [レコードが作成されたか編集されたとき]) とルール条件 (例: [数式の評価が true になる] を指定して、該当の数式を記述する) を追加します。続いて [保存 & 次へ] をクリックし、[完了] をクリックします。以上が、1 つ目のステップの手順です。

2 つ目のステップでは、作成したワークフロールールの [ワークフローアクション] にある [編集] をクリックして、[ワークフロールールの追加] から [新規アウトバウンドメッセージ] を選択します。名前を追加し、エンドポイントアドレスとして送信先のサーバを指定し、メッセージで送信する項目を選択します。

続く 3 つ目のステップでは、[WSDL はこちら] をクリックして WSDL ファイルをダウンロードします。この WSDL ファイルにより、使用する SOAP サーバのエンドポイントが定義されます。その後、ルール名の横にある [有効化] リンクをクリックするとこのワークフロールールが利用可能になります。続いて、[管理者設定] メニューで [セキュリティのコントロール]、[リモートサイトの設定] の順にクリックしてセキュリティを設定し、リモートのサーバから Force.com にアクセスできるようにします。

以上により、取引先責任者レコードが作成または編集された場合に、SOAP メッセージが指定したエンドポイントに送信されるようになります。

次に、アウトバウンドメッセージの設定画面を示します。

Crl integration outbound setup.jpg

この図では、メッセージの宛先となるエンドポイントにユーザのサーバのアドレスが指定されており、2 つのワークフロールールがメッセージ送信のアクションに関連付けられています (アウトバウンドメッセージは共有可能)。アウトバウンドメッセージの状況は、[設定]、[監視]、[アウトバウンドメッセージ] の順にクリックして表示されるページで確認できます。

この宣言型の環境では、コードを作成せずに設定を行うことが可能ですが、エンドポイントの構造は Force.com プラットフォームによって規定されるため、エンドポイントの作成では Force.com が生成した WSDL を使用する必要があります。これに対し、Force.com の Web サービス API では、既存の Web サービスのエンドポイントをユーザが呼び出すことができます。

アウトバウンドメッセージは、永続的オブジェクトでのデータ変更を外部の Web サービスに伝達するための、簡単かつ強力な方法です。アウトバウンドメッセージの設定に関する詳細は、 Force.com Web サービス API 開発者向けガイド を参照してください。


インバウンドとアウトバウンドでの統合: HTTP と REST

Apex 言語では、HTTP 呼び出しを行うことも可能です。ここでは、次に示す 3 つのクラスを主に使用します。

  • Http クラスは、HTTP による要求と応答の作成に使用します。
  • HttpRequest クラスは、GET、PUT、POST、DELETE の各要求の作成、要求のヘッダーの編集、タイムアウトの設定などに使用します。
  • HttpResponse クラスは、HTTP 応答の処理に使用し、コード、ヘッダー、本文の解析などを実行します。

そのほか、さまざまなエンコードユーティリティを含んだ EncodingUtil クラスを利用する場合もあります。

次に、シンプルなコードの例をご紹介します。このコードでは URL を引数に指定して getContent() メソッドを呼び出しています。結果として、該当の Web ページに対して GET が実行され、呼び出し元に本文が返されます。

public class HttpCalloutSample { 
  //Pass in the endpoint to be used 
  public String getContent(String url){ 

  Http h=new Http(); 
  //Instantiate a new HTTP request,specify the method (GET) as well as the endpoint 
  HttpRequest req= new HttpRequest(); 
  req.setEndpoint(url); 
  req.setMethod('GET'); 

  //Send the request, andreturn a response 
  HttpResponse res = h.send(req); 
  return res.getBody(); 
  } 
}

この HTTP は、さまざまな REST ベースの統合にとって中核となるフレームワークです。たとえば、 Force.com Toolkit for Google Data APIs では、HTTP 呼び出しを利用して REST ベースの Google Data API に対するインターフェースを作成します。このツールキットのソースコードはすべて公開されているため、独自の REST ベースのサービスの構築に利用できます。

HTTP のクラスに関する詳細は、 Apex 言語リファレンス を参照してください。


インバウンドとアウトバウンドでの統合: 電子メール

電子メールは今日のインターネット化された世界において重要な役割を果たしていますが、Force.com プラットフォームでは、この電子メールの送受信機能を活用した統合が可能です。Force.com では、アウトバウンド (宛先に指定された受信者への電子メール配信) とインバウンド (Force.com プラットフォームで受信した電子メールへの対応) の双方で、この統合をサポートしています。


アウトバウンドの場合

アウトバウンドで使用する主な Apex クラスは、SingleEmailMessageMassEmailMessageMessaging です。これらのクラスにより、電子メールを任意の数の宛先に配信できます。電子メールには、テキストまたは HTML の形式でデータを組み込んだり、必要に応じて添付ファイルを追加したりできます。


次に、シンプルなコードの例を示します。

Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
String[] toAddresses = new String[]{'user@acme.com'}; 
mail.setToAddresses(toAddresses); 
mail.setReplyTo('support@acme.com'); 
mail.setSenderDisplayName('ACME Support'); 
mail.setSubject('Your wish');
mail.setPlainTextBody('It is done'); 
Messaging.sendEmail(new Messaging.SingleEmailMessage[]{mail});

このように、各クラスは非常に単純で、直観的に使用できます。


インバウンドの場合

インバウンドの処理では、Apex で電子メールサービスを記述します。ここでは、Apex クラスを使用して、受信するメールの内容、ヘッダー、添付ファイルを自動的に処理します。たとえば、メッセージに含まれる取引先責任者の情報を使用して [取引先責任者] レコードを自動生成する電子メールサービスを作成することなどができます。作成した電子メールサービスを、Force.com プラットフォームが自動生成した任意の数の電子メールアドレスに関連付けることにより、該当の宛先から送られたメッセージに対して自動的に処理を実行することが可能になります。

この処理を実現するためのポイントになるのが、Messaging.InboundEmailHandler インターフェースの実装です。該当のメールを受け取ると、このクラスのインスタンスに含まれるメソッドが呼び出され、メール内の情報をさまざまに統合できるようになります。

シンプルなコードによる実装の例を示します。

global class HandleWhims implements Messaging.InboundEmailHandler { 
  global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email, 
  Messaging.InboundEnvelope env) { 
    Messaging.InboundEmailResult result= newMessaging.InboundEmailResult(); 
    System.debug('from email address:' + email.fromAddress);
    System.debug('email body:' + email.plainTextBody);
    System.debug('email subject:' + email.subject);  
    return result;
  }
}

クラスを作成したら、[設定]、[開発]、[電子メールサービス] の順にクリックして、対応付ける電子メールアドレスを指定します。


電子メールで使用されるクラスに関する詳細は、 Apex 言語リファレンス を参照してください。


アウトバウンドでの統合: Force.com Sites のシンジケーションフィード

Force.com Sites は、Force.com プラットフォーム上でネイティブに実行が可能な公開の Web サイトやアプリケーションの開発を支援するテクノロジです (現時点では開発者プレビューとして提供)。

Force.com プラットフォームで開発した公開 Web サイトのページには、動的なシンジケーションフィードを含めることができます。フィードを作成する際にコードを記述する必要はありません。[設定]、[開発]、[サイト] の順にクリックし、表示された画面で対象のサイトを選択し、[フィードの有効化] チェックボックスをオンにした後、シンジケーションフィードの編集ページで設定を行います。このページではクエリ (例: SELECT Id, Name FROM Account)、キャッシュの保存期間、クエリで取得したデータの値の対応付けに関する簡単な記述などを指定して、タイトル、説明などの要素をフィード化します。これにより、Force.com プラットフォームによって自動生成されたフィードを配信して、統合に利用することができるようになります。


インバウンドでの統合: Force.com Web サービス API

Force.com Web サービス API は、既存の Force.com のデータやロジックへの直接的なアクセスを実現する SOAP ベースの Web サービス API です。これにより、SOAP ベースの Web サービスクライアントの作成が可能なあらゆるプラットフォームとの統合が可能になります。この API は SOAP 1.1、WSDL 1.1、WS-Basic Profile 1.1 の各仕様に準拠しています。

Force.com Web サービス API は、Force.com の代表的な統合機能であり、使用しているアプリケーション (組織) のデータに直接アクセスして、クエリ、作成、削除、変更が行えます。また、永続的なデータアイテム (SObject) のメタデータに動的にアクセスすることも可能です。たとえば、特定の SObject に対してクエリを実行し、使用可能な項目やその項目の型を特定することなどができます。さらに、この API ではユーザのパスワードの変更、サーバのタイムスタンプの取得、電子メールの送信などを行うユーティリティを呼び出すこともできます。

Force.com プラットフォームには、API アクセスで使用される WSDL ファイルが 2 種類用意されています。

  • Enterprise WSDL (エンタープライズ向け Web サービス API): 自社の組織で使用するクライアントアプリケーションを開発するエンタープライズユーザ向けの API です。Enterprise WSDL は、強い型付けの WSDL ファイルであり、個々の組織のデータモデルを表現し、スキーマ、データ型、項目に関する情報を開発環境に提供して、Force.com Web サービスとの緊密な連携を実現します。組織の設定でカスタム項目やカスタムオブジェクトの追加、削除、名前の変更などが行われると、WSDL にも反映されます。
  • Partner WSDL (パートナー向け Web サービス API): 複数の企業を対象にしたクライアントアプリケーションや、柔軟性の高い統合ソリューションの開発を行う際に使用する API です。任意の組織のオブジェクトモデルを表す弱い型付けの WSDL であり、さまざまな組織の内部データへのアクセスに利用できます。

この 2 つの WSDL の大きな違いは型付けの強さです。たとえば、MyList という永続的オブジェクトを作成した場合、このオブジェクトは Enterprise WSDL スキーマで処理されることになります。弱い型付けの Partner WSDL スキーマでは、オブジェクトへのアクセスは可能ですが、型ごとにパラメータが指定された汎用のメソッドを使用する必要があります。

WSDL ファイルはバージョン管理されており、機能を追加した Force.com プラットフォームが新たにリリースされた場合にも、前のバージョンの WSDL を継続して使用することが可能です。

組織で使用している WSDL ファイルにアクセスするには、Force.com Builder 環境で [設定]、[開発]、[API] の順にクリックします。ファイルを開いたら、任意の言語を使って、Force.com プラットフォームでそのまま作業を開始することが可能です。さらに、各言語に対するツールキットが用意されており、一連の処理を簡単に実行できるようになっています。各ツールキットについてはこの後のセクションで解説しますが、まずはシンプルなコードの例をご覧ください。


シンプルなコードの例

WSDL では、常にその WSDL を利用するクライアントの言語を使用します。次に、Force.com Web サービス API にログインしてクエリを実行する Java コードのサンプルを示します。

// First, log in
LoginResult loginResult=null; 
SoapBindingStub sfdc=null; 
sfdc = (SoapBindingStub) new SforceServiceLocator().getSoap(); 
// login 
loginResult = sfdc.login("username","password");   

// The set up some security related items
// Reset the SOAP endpoint to the returned server URL 
sfdc._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY,loginResult.getServerUrl()); 
// Create a new session header object 
// add the session ID returned from the login 
SessionHeader sh=new SessionHeader(); 
sh.setSessionId(loginResult.getSessionId()); 
sfdc.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), 
  "SessionHeader",sh); 

// now that we're logged in, make some calls - retrieve information about the user
GetUserInfoResult userInfo = sfdc.getUserInfo(); 

// create a new account object locally
Account account = new Account(); 
account.setAccountNumber("002DF99ELK9");
account.setName("My New Account");
account.setBillingCity("Glasgow")


SObject[] sObjects = new SObject[2]; 
sObjects[0] = account;

// persist the object
SaveResult[] saveResults = sfdc.create(sObjects);

コードは、処理内容が明確に伝わるように記述します。まず最初のセクションでは、生成された SOAP スタブを使用してログイン処理を実行します。Web サービスへの login コールにより、後続の Web サービスコールの対象となるサーバの URL が返されます。続く 2 番目のセクションでは、取得した URL やセキュリティに関する詳細を設定します。最後のセクションでは、Web サービス getUserInfo() を呼び出してユーザ情報を取得し、create で Force.com プラットフォーム上に永続的データを作成します。

Account (取引先) を含むこのコードでは、Enterprise WSDL が使用されています。Enterprise WSDL のスキーマには、そのスキーマ内に存在する SObject の型が反映されます。これに対し、Partner WSDL はより緩やかで型付けが弱く、新しいレコードの作成は Enterprise WSDL のように単純ではありません。例として、Account (取引先) レコードを作成する Java コードのサンプルを次に示します。

MessageElement[] ac = new MessageElement[3]; 
ac[0] = new MessageElement(new QName("AccountNumber"),"002DF99ELK9"); 
ac[1] = new MessageElement(new QName("Name"),"My New Account"); 
ac[2] = new MessageElement(new QName("BillingCity"),"Glasgow"); 
SObject acO = new SObject(); 
acO.setType("Account");
acO.set_any(ac);

ここでは、通常含まれるエラー処理のコードが省略されており、また、細かな点は使用する言語やクライアント Web サービスのスタックによっても異なりますが、プロセスの概略はおわかりいただけるでしょう。


セキュリティ

前述のコードサンプルでも示したように、Force.com プラットフォームにはさまざまなセキュリティメカニズムが用意されています。たとえばログインでは、ユーザ名とパスワードの入力を必須にできます。また、特定のドメインにのみログインを許可するように設定したり、SSL や TLS を利用してログインのセキュリティをより強化したりすることも可能です。セキュリティトークンを発行して、信頼性が確認されていないネットワークからログインを行う場合に、パスワードとともに入力を求めるようにすることもできます。SAML を始めとするトークンメカニズムもサポートされています。

ログインに成功するとセッション ID が返され、ログイン後のあらゆる呼び出し処理に、このセッション ID が組み込まれます。さらに、Web サービス API へのすべての呼び出しでは、データへのアクセス権限を規定する共有メタデータの設定が適用されるため、権限のないユーザがデータにアクセスする事態も回避できます。


データの複製

Force.com Web サービス API には、統合に関連したデータの複製処理にかかわる重要なメソッドが 2 つあります。

1 つ目は getDeleted() メソッドで、これは、特定のオブジェクトで所定の期間内に削除されたレコードの一覧を取得します。もう 1 つは getUpdated() メソッドで、これは、所定の期間内に追加または変更されたレコードの一覧を取得します。

ここでは、API コールによって、処理対象のレコードの ID と、UTC (協定世界時) にもとづく処理日時または削除日時のタイムスタンプが返されます。ユーザはこれらの情報を利用して、ローカルに複製したデータに対して必要な処理を実行できます。


Force.com Web サービス API で利用できるツールキット

Force.com Web サービス API には、データの処理、クラウドプラットフォーム間の連携、各言語での処理の効率化などを支援するさまざまなツールキットが用意されています。たとえば、PHP ツールキットでは、Web サービスの呼び出しに必要な処理はすべてツールキット側で実行されるため、ユーザは Web サービスのエンドポイントアドレスを指定するだけで PHP アプリケーションの統合をシームレスに実現できます。このツールキットには操作性の高い PHP インターフェースも用意されており、ユーザが必要に応じて変更することが可能です。同様のツールキットが、PHP 以外のさまざまな言語でも提供されています。この後は、引き続き、各ツールキットの概要を紹介します。


PHP ツールキット

PHP ツールキットは、PHP を使って効率的に Force.com Web サービス API メソッドを呼び出すためのツールであり、Enterprise WSDL と Partner WSDL がサポートされています。 ローカルの PHP 環境にこのツールキットをインストールすると、PHP でコードを記述して Web サービス API を処理することが可能になります。次のコードは、クエリの結果を表示するシンプルな PHP ページの例です。

require_once ('soapclient/SforcePartnerClient.php');

$mySforceConnection = new SforcePartnerClient();
$mySoapClient = $mySforceConnection->createConnection("partner.wsdl.xml");
$mylogin = $mySforceConnection->login("username", "password");
...
$query = "SELECT Id, FirstName, LastName from Contact";
$response = $mySforceConnection->query($query);
$queryResult = new QueryResult($response);
foreach ($queryResult->records as $record) {
  echo "Id = ".$sObject->Id;
  echo "First Name = ".$record->fields->FirstName;
  echo "Last Name = ".$record->fields->LastName;
}


AJAX Toolkit

AJAX Toolkit は、Force.com Web サービス API の JavaScript ラッパーです。このツールキットは弱い型付けの Partner WSDL をベースにして構築されており、標準的なブラウザのほとんどをサポートしています。AJAX Toolkit を使用すると、クライアントのブラウザで実行され、Web サービス API を包括的に処理することが可能なアプリケーションを開発できます。こうしたアプリケーションを「S コントロール」と呼びます。

このツールキットは大変強力な Web サービス API の拡張機能ですが、Visualforce テクノロジを使用して同等の機能をより最適な形で実現することも可能です。Visualforce は、作成したユーザインターフェース層に API への呼び出しを埋め込むことができ、コーディングが簡単であるばかりでなく、拡張性にも優れたテクノロジです。S コントロールでは、クライアントからサーバへの呼び出しが次々に追加されてラウンドトリップが増大し、アプリケーションの処理速度が低下する場合があります。

S コントロールと AJAX Toolkit に関する詳細は、AJAX Toolkit の 公式ドキュメントを参照してください。


その他の言語向けのツールキット

その他にもさまざまな言語向けのツールキットが開発者コミュニティによって提供されています。以下のツールキットには、JP:Web Services API Wiki ページのリンクからアクセスできます。

  • Java
  • Perl
  • PHP
  • Ruby
  • Adobe Flex
  • .NET
  • Objective-C、Cocoa


データ処理用のツール

次の 2 つのツールによって、Web サービス API でのデータ処理プロセスを大きく効率化できます。

  • JP:Data Loader (データローダ) は、Force.com Web サービス API をベースに構築されたクライアントアプリケーションであり、大量のデータを一括でインポート、エクスポートできます。データの挿入、更新、削除、抽出などに利用可能です。
  • Force.com Excel Connector は Microsoft Excel からデータに直接アクセスして更新することが可能な Excel のプラグインで、これにより、レポートの作成、データの一括更新、クレンジングなどを容易に実行できます。


クラウドプラットフォーム間の連携

Force.com プラットフォームでは、その他のクラウドプラットフォームとの連携を実現するネイティブのツールキットを数多くサポートしています。これらのツールキットは、HTTP/REST や Force.com Web サービス API などの主要な統合ポイントに対して利用でき、適切な抽象化を提供します。

  • Force.com Toolkit for Google Data APIs: このツールキットでは、Apex で直接 Google Data API を使用でき、Force.com アプリケーションから Google Data API にシームレスかつ容易にアクセスすることが可能になります。
  • Force.com for Google App Engine: Google App Engine アプリケーションから Force.com Web サービス API へのアクセスを可能にする Python ライブラリであり、テストハーネスです。
  • Force.com for Amazon Web Services: Force.com 環境から Amazon Web サービスの Simple Storage System (S3) にネイティブにアクセスできます。S3 API のラッパーやアクセスメソッドが提供されており、Apex コードで直接利用できます。
  • Force.com for Facebook: このツールキットを利用すると、Apex コードから Facebook API に直接アクセスできるようになります。


その他の統合機能

アウトバウンドメッセージ、電子メール、Web サービス、Force.com Web サービス API は、統合を実現するための強力なツールですが、これら以外にも、セールスフォース・ドットコムやサードパーティからさまざまな統合ツールが提供されています。このセクションではそうしたツールを簡単に紹介します。

  • ERP コネクタ: Oracle や SAP などの既存の ERP システムとの連携を可能にする ERP コネクタが、セールスフォース・ドットコムや ISV から数多く提供されています。これらの ERP コネクタにより、Force.com プラットフォームデータと ERP データ間での双方向の同期処理が可能になります。利用可能なコネクタに関する詳細は、こちらから確認できます。
  • Force.com AppExchange: さまざまなミドルウェアコンポーネント向けの統合ソリューションを数多く提供しています。
  • デスクトップコネクタ: セールスフォース・ドットコムが提供するコネクタで、Microsoft Outlook、Lotus Notes などをサポートしています。
  • Salesforce to Salesforce: Force.com プラットフォームを利用している企業間でのデータ共有を可能にするソリューションです。


まとめ

このドキュメントでは、Force.com プラットフォームで提供される主要な統合機能を紹介しました。外部 Web サービスの呼び出し、Web サービスのホスティング、HTTP と REST の連携、メッセージの受発信での電子メール機能との連携、組織内のデータや機能に対する直接的なアクセスを実現する Force.com Web サービス API について取り上げたほか、さまざまなクライアントプラットフォームをサポートする Web サービス API 関連のツールキットについても解説しました。さらに、Force.com AppExchange にアクセスして、ERP コネクタやミドルウェアコンポーネント向けの統合ソリューションなど、事前統合済みのさまざまな機能を入手できることも説明しました。


参考資料

  • Developerforce: このサイトで無料の開発者用エディション Developer Edition を入手して、すぐに開発をスタートできます。ドキュメントやフォーラムなどへのリンクも用意されています。
  • Force.com データベースの概要 : Force.com データベースについて体系的に概説したドキュメントです。
  • Force.com Apex コードの概要 : Apex 言語に関する包括的なドキュメント。今回のドキュメントで取り上げられていない詳細な情報が記載されています。
  • Apex 言語リファレンス : Apex 言語に関する包括的なドキュメント。今回のドキュメントで取り上げられていない詳細な情報が記載されています。
  • Force.com Web サービス API 開発者向けガイド : Force.com Web サービス API の詳細な情報が記載されています。


執筆者について

Jon Mountjoy は Developerforce コミュニティの管理者および編集長として、新しいテクノロジを意欲的に探求し、コミュニティにフィードバックしています。Jon は Developerforce でブログを執筆しているほか、Twitter、FriendFeed などにも参加しています。以下に Jon 本人からのメッセージをお伝えします。「この場を借りて、素晴らしいコンテンツを作成した Force.com プラットフォームドキュメンテーションチームに対して、執筆者より感謝の意を表したいと思います。また、貴重な助言ならびに誤りのご指摘をいただいた Jesper Joergensen 氏と Jesse Lorenz 氏に、厚くお礼申し上げます。このドキュメントに関する皆様からのご意見をお待ちしています」