Apexアプリケーション開発をはじめよう - 第2章:Salesforceのデータベースにアクセスしてみよう

by Shinichi Tomita on 4月 11, 2007 at 05:21 午後

学習用デモアプリケーション(トライアル)

Salesforceのプラットフォーム(Force.comプラットフォーム)に興味が湧いてきましたか?

それでは早速Salesforceのデータベースにアクセスしてみましょう。

まず皆さんにForce.comプラットフォームがどのようなものであるかを実感していただくために、開発者向けの学習用デモアプリケーションを用意しました。以下のリンクからアクセスが可能です。

http://www.salesforce.com/jp/appexchange/detail_overview.jsp?NavCode__c=&id=a0330000002fF8SAAU

21

リンクで飛んだ先は、セールスフォース・ドットコムが提供しているAppExchangeと呼ばれるアプリケーションディレクトリサイトです。セールスフォース・ドットコムでは開発者が作成したアプリケーションをこのサイトを通して公開しています。

Salesforceのアカウントをすでにお持ちの方は「インストール」ボタンをクリックすることでこのアプリケーションを自分の環境にインストールできますが、まずは「トライアル」ボタンをクリックして実際にこのデモアプリケーションを触ってみましょう。トライアルだけであればまだSalesforceのアカウントは必要ありません。

22

このアプリケーションはApex WebサービスAPIを利用して作成されたカスタムのアプリケーションです。Apexデータベースに対してブラウザから直接クエリ文(SOQL)を投げてデータベースのレコードを検索することが可能です。

SOQLクエリの送信

それでは実際にApexデータベースに対してSOQL文を発行してみましょう。「SOQL Explorer」と書かれているタブをクリックした後、画面中のテキストエリアに以下のSOQL文を入力してください。

SELECT Id, Name FROM Account

以上の文を入力した後で「Run Query」ボタンを押すと、Apexデータベースにクエリが送信され、結果セットが返されます。

23

このSOQL文はSalesforceが標準で定義している Account (日本語名は"取引先")オブジェクトに対して IdName 列の値を取得してくるクエリ文でした。

Salesforce内部にはこの他にも標準定義のオブジェクトが存在しています。その中の Contact (日本語名は"取引先責任者")オブジェクトは、Account オブジェクトと多対1で関連付けられています。

24_5

では次にこの2つのオブジェクトに対して同時にデータを取得するようなクエリを投げてみましょう。テキストエリアに以下のSOQL文を入力して「Run Query」ボタンを押してください。

SELECT Id, Name, (SELECT Id, LastName, FirstName FROM Contacts) FROM Account

表示された結果セットの中の をクリックすると、Account オブジェクトに結びついた Contact オブジェクトのデータが展開されて表示されます。

25

SOQL構文について

SOQLは、SQLと似ていますが、さまざまな面で異なります。以下ではSOQLの構文について例を交えて紹介します。

最も単純なSOQL文の例の一つとして、Account オブジェクトから Id および Name 属性を取得するものを以下に示します。

SELECT Id, Name FROM Account

WHERE 句を付加することによって、検索するレコードを条件で絞込むことができます。

SELECT Id, Name FROM Account WHERE BillingState = '東京都' AND NumberOfEmployees > 500

項目リストの指定を count() とすることによって、レコードの件数を取得することも可能です。

SELECT count() FROM Account

検索結果として得られる件数が多い場合、件数の上限を LIMIT 句で指定しておくこともできます。

SELECT Id, Name FROM Account LIMIT 10

また ORDER BY 句によって結果を指定した項目であらかじめソートして取得することもできます。

SELECT Id, Name FROM Account ORDER BY CreatedDate DESC

SOQLではSQLのような表結合はありませんが、オブジェクト間にリレーション関係がある場合には、リレーションをたどって一つのクエリで結果を取得することができます。例えば Contact オブジェクトには Account オブジェクトに対してのリレーションが関連付けられていますので、以下のクエリでSQLの表結合に相当する結果を取得することが可能です。

SELECT FirstName, Account.Name FROM Contact

上記では子供から親(多→1)へのリレーションをたどりましたが、親から子供(1→多)へのリレーションをたどるクエリも記述できます。

SELECT Name, (SELECT FirstName, LastName FROM Contacts) FROM Account

SOQL構文の詳細については、APIドキュメント内のSOQLのセクションをご覧ください。

トラックバック

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

このページへのトラックバック一覧 Apexアプリケーション開発をはじめよう - 第2章:Salesforceのデータベースにアクセスしてみよう:

コメント

Posted by 通りすがり on 4月 24, 2007 03:48 午後:

2007/4/24現在、トライアル用アカウントのID/PWが間違って設定されているようです。トライアルボタンを押すと、「ID\PWが違います」メッセージとログイン画面が出ます。

Posted by Shinichi Tomita on 4月 24, 2007 04:37 午後:

ご報告ありがとうございます。ログインできるようにアカウント修正しましたので、現在トライアル可能になっています。

コメントを投稿

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