テックブログ

Force.com Apexの「Describe」でできること(その2)

前回に続いて「Describe」でできることについてご紹介していきます。

describeSobject

項目セットの取得

コードサンプル

対象オブジェクトの項目セットからVisualforceページの表示に必要な項目を動的に取得してSOQLを発行することができます。また、オブジェクト名や項目セットも動的に指定できるようにするとより汎用性の高い処理が実現できます。
以下のように項目セットは「Describe」を利用しなくても取得可能です。

コードサンプル

なお、Visualforceページでの項目セットの利用方法等については弊社佐竹によるエントリ「セールスフォースの項目セットを利用してメンテナンス性を高めよう」を参照してください。

取得したIDが期待しているオブジェクトのIDか確認

コードサンプル

URLパラメータでIDの受け渡しを行うことも多いと思いますが、そのIDが目的のオブジェクトのIDであるか確認できます。
注意:一部オブジェクトにはPrefixがない場合もあります。

describeField

項目に対しても「getDescribe」メソッドが用意されていて項目の設定情報(API参照名、表示ラベル、文字数など)を取得することができます。
例えば以下の用途があります。

選択リスト値を動的に変更

コードサンプル

例では商談オブジェクトの受注チェックボックスがTRUEの場合のみ受注で始まるフェーズのみ選択リストで表示するようにしています。
注意点:1回のトランザクションで取得可能な選択リスト項目数は100個までです。(リスト値の数ではありません)

番外編

特定の「sObject」に対してのみ「Describe」を行う場合、以下のように簡単に行えます。

コードサンプル

また、オブジェクト名だけが文字列で取得できていて「Describe」を行いたい場合は以下のように先に「sObject」を解決してから「Describe」を行う必要があります。

コードサンプル

どれを利用しても取得できる結果は同じになりますが、実行時間には若干の差異が出てきます。環境によりますが、私のDeveloperEditionではパターン2が最も早く続いてパターン3、パターン1(パターン2の約6倍)となりました。ただしパターン3は初回実行でパターン2の約5倍、2回目以降はパターン2より若干遅いくらいです。(ミリ秒の差ですのでそこまで大きく差異はないですが)

まとめ

このように「Describe」は色々な情報を取得でき使い方次第で様々な用途が考えられます。今回ご紹介した以外にも機能が用意されていますのでリファレンスを熟読されることをお勧めします。とはいえ、他の機能と比べると処理が早いとは言えません。想定される状況や実装の方式に合わせて選択肢の1つとして覚えておいてください。

※記載の各種制限やメソッド等はSummer’12(ver25.0)のものです。利用するバージョンによって違いがでますので、最新の情報はリファレンスを参照して下さい。

 

Posted by Hokazono Kazushi (Appirio Japan)

 

 

About Appirio

Appirio

アピリオはクラウドコンサルティングのグローバル企業で、ITサービスを提供するウィプロの一員です。お客様の次世代のワーカー・エクスペリエンスおよびカスタマー・エクスペリエンスの実現を、最新のクラウドテクノロジーを活用して支援します。アピリオの自由な発想を持つコンサルタントは、実用的な戦略の立案、迅速な成果の提供、そして消費者のエクスペリエンス主導で急速に変化する今日のビジネス状況において企業がいかに早く適応できるかを支援することで、比類のない顧客価値を提供します。これは、世界最大級のクラウドソーシングコミュニティであるTopcoderのパワーと、数千からなるプリビルトされたソリューションを駆使することで実現します。アピリオはYP, Cardinal Health, Coca-Cola, eBay, Facebook, Home Depot, Sony PlayStation, Moen, IBMなどの世界最大ブランドから信頼されるパートナーです。

Appirio