Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Force.comプラットフォームでのコーディングサンプル

Java/.NETプログラマのためのForce.com開発入門 第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/05/29 14:00

 今回は、前回デプロイしたサンプルアプリケーションのコード部分を中心に解説していきます。Force.comプラットフォームで扱われる要素の種類や、どの種類の要素にコードが含まれるのか、さらにはユニットテストのテストコードなどを見ていきます。

目次

はじめに

 ここ最近のForce.comに関する最もホットな話題の一つは、「Salesforce Platform Mobile Services」です。これは、スマートフォンやタブレットといったモバイル機器向けのアプリケーションを、より短期間で開発するための道具集です。ネイティブやHTML5、ハイブリッドのアプリケーションのためのフレームワークや、jQuery Mobile、AngularJS、Backbone.JSを利用するためのライブラリとサンプルなどが含まれます。ここでも「一般消費者向けに発展してきた汎用的な文化をエンタープライズの領域に取り入れる」というSalesforce.comが実践してきた考え方が活かされています。もちろん中心となるのは、これまでモバイル機器と分断されることの多かった、企業が扱う顧客データです。

 「モバイルファースト」という言葉に表されるように、モバイル機器向けのアプリケーションへの関心は、ここにきて一気に明確になってきました。今やモバイル機器はパソコンよりも多く使われており、これからはモバイル機器の特性を活かした新しい体験をユーザに提供することから考えるべきというものです。こうした常に最新化され続ける技術トピックはForce.comにおける開発のメリットの一つです。本稿で解説するApexは、こうした新しい開発においても重要な役割を占めます。

対象読者

 Javaや.NETなどのオブジェクト指向言語でのコーディング経験がある開発者。

必要な環境

  • Windows、Mac OS、Linuxなど、WebブラウザとJava VMが動作する環境(本稿ではWindows 8とFirefox、Java 6で動作を確認)
  • Force.com IDE(Spring '13 Generally Available 27.0 以上)

Force.comで扱う要素の種類

 Force.comのアプリケーションは、ApexやVisualforceだけでなく、JavaScriptや数式、各種設定といったいくつかの種類の要素で構成されます。次の表は、主な構成要素をメタデータ型の名前順に抜粋したものです。経験的に利用頻度が少ないものや、短い説明では誤解をまねきそうなものは除外しています。

Force.com上のアプリケーションの主な構成要素
コンポーネント メタデータ型 説明
1 Apexクラス ApexClass Apex言語における1つの(入れ子クラスではない)クラスの単位を表す。
2 Apexトリガ ApexTrigger オブジェクトの挿入/更新/削除/復元の際に呼び出される
Apex言語によって記述された処理。RDBにおけるトリガと同等の役割を果たす。
3 カスタム
アプリケーション
CustomApplication タブのセットを表す。
4 カスタム
表示ラベル
CustomLabels エラーメッセージ等の固定文字列。
5 カスタムオブジェクト
(または
標準オブジェクト)
CustomObject RDBにおけるテーブルに相当する、
データを格納するための要素。
Force.comでは、データの格納だけではなく、
カスタムタブやワークフローなどが関連し、
中心的な役割を担う。
6 カスタムタブ CustomTab Force.comの画面要素の一つであるタブを表す。
オブジェクトごとのタブやVisualforceページ、
任意のURLなどを表示する。
7 ダッシュボード Dashboard 一画面でいくつもの統計値を
確認することができる特殊なレポート。
8 ドキュメント Document アプリケーションのロゴ画像や、任意のOffice文書など、
Force.comに格納するファイルを表す。
9 メール
テンプレート
EmailTemplate ワークフローのメールアラートの際等に使用する
メールのテンプレート。
10 グループ Group ユーザやロールをひとくくりにした、
情報共有の単位。
11 ホームページの
コンポーネント
HomePageComponent ユーザがログイン後に最初に表示する画面である
ホームページの画面部品。
12 ホームページの
レイアウト
HomePageLayout ホームページのコンポーネントの配置。
13 ページ
レイアウト
Layout オブジェクトのレコードを表示する際の
項目やボタン、関連リスト等の配置。
14 プロファイル Profile ユーザの権限をひとくくりにしたもの。
15 レポート Report 表形式/サマリー/マトリックスといった形式で、
データを一覧するための定義。
16 ロール Role 部署による組織構造など、
オブジェクトのレコードへの
アクセス権を階層関係として表す。
17 静的リソース StaticResource 画像やスタイルシート、jQueryのような
JavaScriptのライブラリ等や、
これらのアーカイブ(.zipや.jarなど)。
18 トランスレーション
ワークベンチ
Translations 多言語対応する際に利用する、
ロケールごとの翻訳文字列。
ユーザインターフェースの要素だけではなく、
選択リストに表示される文字列も設定できる。
19 入力規則 ValidationRule 数式による入力規則を
オブジェクトレベルで設定する。
20 Visualforce
コンポーネント
ApexComponent Visualforceページに配置される画面部品。
Visualforce言語で記述される。
21 Visualforce
ページ
ApexPage Visualforce言語で記述される画面の定義。
22 ワークフロー Workflow 条件や時間によるアクション
(メールアラートや項目の更新)の実行。

 Force.comが面白いのは、これらの構成要素をSOAPによるWeb APIから操作できるという点です。その気になれば、開発効率を良くするための開発ツールを自作することもできます。詳しくは「メタデータAPI開発者ガイド」などを参照してください。また、「エンタープライズのクラウドにはどのような要素が必要とされるのか」といった、設計実装情報のモデルとしても大変興味深いものがあります。

 これらのメタデータのほとんどは、XMLのデータとして表されます。コードとして扱うのは、Apexクラス、Apexトリガ、Visualforceコンポーネント、Visualforceページ、および静的リソースとしてのJavaScriptなどです。一般的な多くのフレームワークでの開発は、プラットフォームの上にアプリケーションを構築していくイメージでした。これに対しForce.comでは、どちらかというとプラットフォームをカスタマイズする範囲を少しずつ広げていくような進め方になります。Apexは、プログラミング言語というよりもスクリプト言語と表現されることが多い言語です。

 よくあるForce.comを批判する声としては、「Apexがオープンではない独自言語である」というものがあります。しかし、クラウド上のプラットフォームで効率的に開発することに特化したDSL(Domain Specific Language:ドメイン特化言語)としてApexを捉えれば、クラウドの開発者にとって、これほど好ましいものはありません。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 照井 康真(テルイ コウマ)

    エンタープライズ領域に破壊的イノベーションをもたらしてきた、クラウドインテグレータの株式会社アピリオ勤務。日本のビジネスアジリティの向上に少しでも貢献すべく、日々奮闘中。

バックナンバー

連載:Java/.NETプログラマのためのForce.com開発入門

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5