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
リンクで飛んだ先は、セールスフォース・ドットコムが提供しているAppExchangeと呼ばれるアプリケーションディレクトリサイトです。セールスフォース・ドットコムでは開発者が作成したアプリケーションをこのサイトを通して公開しています。
Salesforceのアカウントをすでにお持ちの方は「インストール」ボタンをクリックすることでこのアプリケーションを自分の環境にインストールできますが、まずは「トライアル」ボタンをクリックして実際にこのデモアプリケーションを触ってみましょう。トライアルだけであればまだSalesforceのアカウントは必要ありません。
このアプリケーションはApex WebサービスAPIを利用して作成されたカスタムのアプリケーションです。Apexデータベースに対してブラウザから直接クエリ文(SOQL)を投げてデータベースのレコードを検索することが可能です。
SOQLクエリの送信
それでは実際にApexデータベースに対してSOQL文を発行してみましょう。「SOQL Explorer」と書かれているタブをクリックした後、画面中のテキストエリアに以下のSOQL文を入力してください。
SELECT Id, Name FROM Account
以上の文を入力した後で「Run Query」ボタンを押すと、Apexデータベースにクエリが送信され、結果セットが返されます。
このSOQL文はSalesforceが標準で定義している Account (日本語名は"取引先")オブジェクトに対して Id と Name 列の値を取得してくるクエリ文でした。
Salesforce内部にはこの他にも標準定義のオブジェクトが存在しています。その中の Contact (日本語名は"取引先責任者")オブジェクトは、Account オブジェクトと多対1で関連付けられています。
では次にこの2つのオブジェクトに対して同時にデータを取得するようなクエリを投げてみましょう。テキストエリアに以下のSOQL文を入力して「Run Query」ボタンを押してください。
SELECT Id, Name, (SELECT Id, LastName, FirstName FROM Contacts) FROM Account
表示された結果セットの中の
をクリックすると、Account オブジェクトに結びついた Contact オブジェクトのデータが展開されて表示されます。
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 午後:
ご報告ありがとうございます。ログインできるようにアカウント修正しましたので、現在トライアル可能になっています。