米Salseforce.comの「Force.com」は、主に企業向けアプリケーションの構築が想定されたPaaS(Platform as a Service)です。データの入力画面や検索画面、表形式の出力画面を標準で備えています。データを集計したり、分析したりするレポート機能もあります。もちろん、ユーザーやグループごとに、データのアクセス権をきめ細かく設定できます。

 開発環境はLAMP(Linux、Apache HTTP Server、MySQL、Perl/PHP/Python)やJ2EE、.NETといったアプリケーションプラットフォームに似ています。大雑把に言うと、そのようなアプリケーションプラットフォームに、一般的な業務アプリケーションに必要な機能と実行環境を加えたものがForce.comです。

 本連載では、このForce.comの「デザインパターン」について解説します。ここでは、クラウドサービスの特性を生かしたり、制約を回避したりするための設計ノウハウをデザインパターンと呼んでいます。クラウドコンピューティングにおける「デザインパターン」は、今後さまざまな知見が集まって確立していくことになると思いますが、本連載がその一助になればと考えています。

 第1回では、Force.comでアプリケーション開発をする際に、押さえておくべき基本テクニックを紹介します。具体的には、機能を実装する際にはForce.comが備える標準機能を最大限活用すべしというものです。Force.comのアプリケーションにおいて、独自開発の範囲を決める際に注意したいポイントです。

標準機能を最大限活用する

 Force.comでアプリケーションの機能を実装するには大きく二つの方法があります。Webブラウザーを介してForce.comの標準機能を設定する方法と、Javaに似た「Apex」と呼ぶ独自言語を使ってプログラムを開発する方法です。どちらで実装すべきか悩んだときには、どうすればよいでしょうか。正解は、Apexでのコーディングをできる限り避け、標準機能を使うことです。

 標準機能は、同等の機能をApexで記述したものより高速に動作します。さらにほとんどの場合、1回の処理で実行できるクエリー数などが制限される「ガバナ制限(Governors and Limits)」(第2、3回で解説)の適用も受けません。単体テストが不要で、エンドユーザーが後から容易に設定を変更できる利点もあります。このため、最大限に標準機能を活用するのが有用です。

 Force.comの標準機能には、Object(データベースのテーブルに相当)の項目を自動的に計算する「数式項目」や、Objectの項目の制約条件を記述する「入力規則」、Objectの項目に設定された条件に基づく簡単な動作を記述する「ワークフロー」および「承認プロセス」などがあります。ここでは、数式項目の利用例を紹介します。リスト1は、生年月日を示す項目の「DOB__c」から、満年齢を自動的に計算する数式項目「Age__c」の記述内容です。


IF (
  YEAR(TODAY()) <= YEAR(DOB__c),
  0,
  IF (
       MONTH(TODAY()) < MONTH(DOB__c),
       YEAR(TODAY()) - YEAR(DOB__c) - 1, 
       IF(
           DAY(TODAY()) < DAY(DOB__c),
           YEAR(TODAY()) - YEAR(DOB__c) - 1,
           YEAR(TODAY()) - YEAR(DOB__c)
       )
   )
)
リスト1●満年齢を計算する数式項目の例

 数式項目は、利用時に再計算されます。この例では、利用時の日付を取得するToday関数を使って、その時点での満年齢が算出されます。

 数式項目の中で、別の数式項目を使用することもできます。例えば、満年齢を自動的に計算する数式項目(Age__c)を用いて、大人の女性(16歳以上)かどうかを判定する数式項目を定義してみます。実装例はリスト2のようになります(「Gender__c」は性別を格納する項目)。


IF ( TEXT(Gender__c)  == "女性", IF (Age__c >= 16, "True", "False"), "False")
リスト2●大人の女性かどうかを判定する数式項目の例

 標準機能のワークフローを使うと、特定のObjectに対する条件付きの動作を、Webブラウザーによる設定のみで定義できます。例えば、特定の条件が発生した場合に、電子メールを送信する、対象Objectの項目を更新する、といった操作を設定することができます。
 Force.comの標準機能について広く理解していると、コーディング量を減らすことができます。Force.comにおけるアプリケーションの設計では、既存の機能やサービスをうまく組み合わせるという発想が重要になります。

太田 達志(おおた たつし)
アピリオ アーキテクト/アーキテクトチームリード
 国内ソフトウエアベンダーを経て、システム統合基盤ベンダーにおいて日本市場向け機能の設計・開発とコンサルティング業務に従事。アピリオ日本法 人の設立を機にクラウド分野へ。現在はSalesforce.comのサービスを使った大規模案件において、Force.comアプリケーションの開発・設計、周辺システムとのインテグレーションをリードしている。筆者らはクラウドに関する技術情報をブログで公開している。同社の採用情報はこちら