[salesforce]apex-langライブラリを使ってみよう
apex-langとは、オープンソースで開発されているAPEXコードのライブラリです。APEXは元々JAVAに似通った言語ですが、実際に開発を進める中ではネイティブのAPEXだけでは不十分な機能が多々でてきます。そんな開発現場の現実に則した便利なライブラリを提供しよう、ということでapex-langプロジェクトが立ち上がっています。
参考:Getting started with apex-lang
インストール方法
以下の方法でインストールができます。
- 管理パッケージ/非管理パッケージを製品組織/サンドボックスにインストールする。
http://code.google.com/p/apex-lang/
こちらの「Install to」からそれぞれの場合のパッケージインストールを行うことができます。 - zipファイルをダウンロードして、Force.com IDEにインポートして、組織にデプロイする。
http://code.google.com/p/apex-lang/downloads/list
こちらから最新のソース一式をダウンロードして、Force.com IDE内のForce.comプロジェクトのクラスフォルダにドラッグアンドドロップすればそのまま使えるようになります。
便利なクラス例
- ArrayUtils:
- 配列操作を行う。ソート、連結、比較、部分利用などを行う。
- EmailUtils:
- Email操作を行う。html/plainテキストのメール制御、添付ファイルの制御などを行う。
- LanguageUtils:
- 多言語対応の制御を行う。ユーザのHTTPヘッダのAccept-Languageを見て言語の表示振り分けを行う。
- MapUtils:
- MAP配列の連結や比較を行う。
- PageUtils:
- Visualforceページにおいて、GETパラメータの取得、ページメッセージの設定、URLリダイレクトの制御などを行う。
- RandomUtils/RandomStringUtils:
- ランダム文字列の生成を行う。
- SObjectUtils:
- Sオブジェクトをまたがった項目のコピー、項目のnull/emptyのチェック、項目のget/put制御を行う。
- SoqlUtils:
- DynamicSOQLを使ってSoql文の作成制御を行う。詳細はこちら。
- WordUtils :
- 文字列の大文字/小文字化、反転などを行う。
その他のクラス
こちらからその他の利用可能な全クラスが確認できます。かなりたくさんあるので把握するのが大変。
注意点
- ガバナ制限、特に以下のガバナ制限に注意する必要があります。これらのガバナ制限を回避するためには、apex-langライブラリを全てインストールするのではなく、必要なクラスだけ選んでデプロイする、などの方法をとる必要があります。
- script statements(実行行数):Trigger10,000、その他200,000。apex-langライブラリを使うことで、script statementsは多量に消費してしまう可能性があります。
- 1組織内のAPEXスクリプト容量:1組織で2MBまで。apex-langライブラリは全体で訳780KBほどあります。1組織容量制限に対して結構なインパクトのあるサイズです。
- APEXコード内において、新しいAPEXクラスを呼び出す際には毎回そのクラス内容の検証が行われるため、多数のAPEXクラスを呼び出すことは大きなパフォーマンスの低下に繋がります。しかし、APEXフレームワークを作るためには多くのAPEXクラスを作成することは避けられません。この問題を避けるためには、1つの大きなAPEXクラス内に多くのネストされたインナークラスを作る、などの方法が考えられます。