Apexアプリケーション開発をはじめよう 第1章:Salesforceのプラットフォームについて

by Shinichi Tomita on 4月 11, 2007 at 04:52 午後

Web上のデータベースとしてのSalesforce

セールスフォース・ドットコムでは、その名が示すとおり、企業向けに営業活動を支援するためのアプリケーション(SFA)や、それに伴う顧客とのリレーションを管理するためのアプリケーション(CRM)を提供しています。

ただ、これらのアプリケーションが動作しているプラットフォームが、実はSFAやCRMのみならず、あらゆるアプリケーションサービスを構築可能な柔軟性を持っていることを理解されている方は少ないのではないでしょうか。

実は、Salesforceは、一言で言うと「Web経由でアクセスできるデータベースサービス」を提供しているのです。

少々補足しておきますと、これはユーザ自身がWebブラウザからサーバ上のデータを閲覧し更新できる、ということはもちろんですが、それだけではありません。重要なポイントは、外部のプログラムからもデータベースが格納しているデータにアクセスできるという点です。つまり、Salesforce内のデータへアクセスするためのWebサービスAPIが提供されているのです。

アプリケーション独自のテーブル定義

一口にデータベースサービスといっても、Salesforceが提供しているのは、データがあらかじめ用意されていて、それに対して検索、参照ができるようなサービス、といった類のものではありません。

Salesforceでは汎用的な「データの入れ物」のプラットフォームを提供しています。そこでは参照だけでなく、作成、更新、削除といったデータに対する基本的なCRUD操作がサポートされています。

さらに特筆すべき点は、データの入れ物自体の構造を自分で決定することができるというところです。つまり、データベース内に格納することができるオブジェクトの定義(多くのRDBではテーブルに相当します)を、アプリケーションごとに独自に設計/追加することが可能になっています。

従来のWebサービスでは、あらかじめサービスで扱うデータの種類は決まっていることが多く、しかもそのデータ構造はサービスに依存していることが多かったのですが、Salesforceではアプリケーションが必要とするデータ構造を開発者自身で定義できることが大きく異なっています。

RDBの場合と同様に、開発者は独自に定義したオブジェクトの間にリレーション(参照関係、主従関係)を定義しておくこともできます。リレーションはSalesforceのCRMアプリケーションが標準で定義しているオブジェクトに結びつけることも可能で、たとえば”取引先A”に関連しているオブジェクト”XXX”、というデータを格納しておくことができます。

以上のようなデータベース設計にまつわる操作は、すべてWebのインターフェースから実行することが可能です。

クエリ言語を使ったデータアクセス

このようにSalesforceでは汎用的なデータを格納することが可能であるため、格納されるデータへのアクセス手段についても汎用的なアプローチをとっています。SalesforceではSalesforce内のデータにアクセスするためのクエリ言語である(SOQL:Sforce Object Query Language)を用意しており、SOAP Webサービスを利用してアクセスします。

SOQLはSQLに似ていますが、SQLと異なるのは、結果セットをオブジェクトとして返すため、リレーション項目についても階層的なオブジェクトとして扱うことができるという点です。

例:

SELECT c.FirstName, c.LastName, a.Name FROM Contact c, c.Account a
SELECT Id, Name FROM Opportunity o WHERE o.Account.Name LIKE 'A%'
SELECT a.Name, (SELECT c.LastName FROM a.Contacts c) FROM Account a

マッシュアップアプリケーション

このような高い柔軟性を持つSalesforceのプラットフォームを利用すれば、自分で特別にデータベースサーバを保守・運用することなく、必要なデータをすべてWebサービス APIで取得し保存するアプリケーションサービスを構築することもできるでしょう。

もちろん、あらかじめSalesforceが標準で提供しているオブジェクトを利用することによって、エンドユーザがSalesforceのSFA/CRMアプリケーションで利用しているデータと連動したアプリケーションも作成できます。

さらに、SalesforceのAPIに加えてさまざまな既存のWebサービスを組み合わせて用いることで、開発者はダイナミックなマッシュアップアプリケーションをほとんどコストをかけることなく作成できるようになるのです。

これらのアプリケーションを開発するための言語プラットフォームとしては、Java、Javascript(AJAX)、.NETなどの言語に加え、PHP、Perl、Ruby on Railsなどからの利用も可能です。

私たちは、このSalesforceが提供しているプラットフォームのことを「Force.comプラットフォーム」と呼んでいます。Force.comプラットフォームには、データベースサービスとしてのForce.comデータベース、WebサービスAPIとしてのForce.com Web Services API、およびSalesforceのサーバ内でのロジックを記述するためのApexコード(近日中に利用可能になります)などが含まれています。

トラックバック

このページのトラックバックURL: http://www.typepad.jp/t/trackback/7240/6909388

このページへのトラックバック一覧 Apexアプリケーション開発をはじめよう 第1章:Salesforceのプラットフォームについて:

コメント

Posted by Ichi Matsu on 5月 8, 2007 11:59 午前:

初めてみました

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。