Force.comの高い生産性を活かすには

本日のエントリはForce.comで高い生産性を維持するためには どうすれば良いのか、と言う点についてお話を致します。

「Force.comの開発効率はJavaや.NETの5倍」

Salesforceの導入を検討した方や、Force.comでの開発を行なっている方が、 必ず一度は聞いているであろう言葉です。

この言葉が示している、開発効率・生産性に関する信憑性は、 結論から言うと「事実ではあるが、全ての状況において適用される訳ではない」と考えます。

Force.comの標準機能( Force.com Builderと呼ばれるマウス操作で行う宣言型開発 )で カスタマイズを実施し、アプリケーションを構築した場合は、 ハマれば5倍どころではなく、それ以上の開発効率と生産性を叩き出す事が可能です。

しかし、Force.comの独自言語であるApexを使って プログラムのコーディング( 以下、個別開発 )を行えば、 例えばJavaで開発した場合と、開発効率で見れば恐らくそれ程の差は無いと思います。

次の表は、開発者の視点から見た場合の、標準機能と個別開発を比較したものです。

標準機能 PROS
  • 標準提供される機能を使う事による生産性の高さ
  • 標準提供されるテスト済みの機能を組合せるため、品質向上が期待できる
  • コーディングスキルを持たないユーザでも、機能追加・改修が行える
  • バージョンアップによる機能拡張・向上のメリットを享受できる
CONS
  • 要件が複雑過ぎると標準機能では実現出来ない場合がある
個別開発 PROS
  • 標準機能では実現不可能な複雑な要件を、ある程度自由に構築可能
  • HWやインフラ周りに関しては、そこまで深く考慮しなくても良い
  • 独自の言語であるApexは、Javaに似ているため習得への敷居は低い
CONS
  • 構成管理が苦手なので、チーム開発の際に手間がかかる
  • テストクラス実行をサーバー側で行うため、若干時間がかかる
  • IDEではコード補完が完全にはサポートされておらず、機能が貧弱
  • 上記と重なるが、デバッグ機能も弱い

これらを踏まえた上で、Force.comでの開発効率や生産性を向上させるには、

「標準機能を充分に理解した上で 可能な限り標準機能で要件を満たせるように、最適な方法を提案する」

ということが、最も重要だと言えます。

これはForce.com上にアプリケーションを構築した事がある方なら ほぼ全ての方が理解していらっしゃると思います。

ただし、言葉にすると簡単ですが、 実際にやろうとすると、なかなか出来る物ではありません。

まず引っ掛かるのが「標準機能を充分に理解した上で」と言う部分です。 Salesforceは現時点でも相当な機能が実装されているのに、 更に年3回バージョンアップが実施され、全ての機能を1人で理解する事は非常に困難です。

知識や経験が少ない方だと、この段階で標準機能で実現可能かどうかを見誤り、 個別開発を前提とした開発方針で進んでしまう可能性が非常に高いです。

しかし、既にお話した通りForce.comの圧倒的な開発効率や生産性は、 個別開発の比率が高くなればなるほど、低下していってしまいます。

そういった事態を防ぐためにも、Force.comの開発者は、 年3回のバージョンアップに加えて、随時発表される個別の製品(*1)情報を キャッチアップし続け、最適なソリューションを提案出来るように努める必要があります。

(*1) SalesCloud, ServiceCloud, MarketingCloud, Salesforce Work.com などです

標準機能と個別開発はトレードオフの関係になることを理解し、 どちらを採用するかについて、充分に検討することが大切です。
しかし、ユーザからの意見を積極的に取り入れた結果が 今の標準機能であり、これからもその進化は止まらないと考えられるので、 可能な限り積極的に標準機能を導入出来るようにしたいところです。
Force.comの開発効率と生産性を向上させるには、 如何に標準機能を理解し活用することが重要なのか、 少しでもお伝えする事が出来ていれば幸いです。