Salesforce1 がまだしっくりこないので Force.com としてます。
さて、Salesforceは SaaS PaaS 両方の特性を備えており
その両方が非常に優秀な素晴らしいServiceである事は周知の事実でしょう。
今回はその内の1つ、PaaSとしてSalesforceを利用する場合
つまりForce.com開発者の視点に立って
Salesforceの導入時に気を付けなければいけないことを幾つか考えてみます。
Salesforceの導入に関わる開発者の方は、大半がSIerだと思いますので
基本的にその観点での話となります。
( 本当はWave辺りのネタを使いたかったのですが何か出来るほどの情報が… )
1. Force.comの特性を理解する
基本中の基本ですね、自分が使うプラットフォームの理解は必須です。
しかし、さきほどFroce.comは優秀だと言ったばかりですが
物事には長所もあれば短所もあります。
特にForce.comの短所は厄介なものが多く、
Force.com に初めて触れるエンジニアは
大体この辺りの改善を求めることが多いと思います。
- マルチテナントなのでリソースの制約が必須( ガバナ制限 )
- ソースコードのバージョン管理が出来ない、対応予定も未定
- Javaで言うところのパッケージの概念も無し、1つのディレクトリに全クラス格納
- 項目自動更新とApexTriggerが絡むとカオス
- LocalのPCに実行環境を構築できないのでテストコード実行が遅くてイライラ
- IDEも微妙でリファクタリングも大変
とりあえず簡単に出てきた物を列挙しましたが、要するに
一般的な感覚で考えると Force.com での開発は非常に効率が悪く面倒くさい
ってことです。( いや、便利な部分もありますよ )
この辺りは実際に開発された方なら痛いほど良くご理解されているかと。
Force.comを利用する場合は、ここを理解した上で開発に臨む必要があります。
創意工夫で何とかなるものもありますが
ならないものもありますので、将来のバージョンアップに期待したいところです。
2. 新機能のキャッチアップを怠らない
Salesforceの特長の1つに 年3回のバージョンアップ があります。
詳細は省きますが、このバージョンアップはかなりのボリュームで
相当数の機能追加などが実施されています。
Force.comの開発者としては、これを全て抑えておきたいところですが
正直な話、新機能を全て理解してキャッチアップし続けるのは相当大変です。
ですが、ここに全く触れないのであればForce.comを
活かせるはずがありませんので、全ての内容を完全に理解するのではなく
いくつか関係ありそうな部分だけは最低限抑えておいて
頭の中にIndexを作っておきます。
そうすれば、必要な時に頭の中のIndexを見て、
詳細はそのタイミングで 思い出す or 調べる で大丈夫だからです。
新機能が追加される事で、お客様のビジネス要件を満たせるようになった…
という例はちょこちょこありますので、ここは重要です。
3. 新機能を採用するのは手段であって目的ではない
たまにいます。
お客様の要件を満たすために必要ではないのに
開発者が使ってみたいからと言う理由で新機能に手を出すパターンです。
新しい機能を試してみたいだけならデペロッパー組織でも作って
そこでやりましょう、実際のプロジェクトで採用するなら
それだけの必要性があるかどうかを充分検討する必要があります。
バージョンアップの頻度も高く、魅力的な新機能もどんどん追加されるので
色々とやってみたいと言う気持ちはわからなくもないですが、それはそれ、です。
4. 標準機能と Apex、Visualforce のバランスを考えて設計する
3のパターンに少し近いものではありますが
標準機能で実現出来る事をApexやVisualforceで実装する、
ApexTriggerを採用した方がいいのに標準機能で頑張って実装する。
などです。
また、個別最適化を優先して全体最適化を疎かにすることで
ApexTriggerと項目自動更新の絡み合うオバケが出来上がったり、
設計思想の統一が出来ていない、動く機能を寄せ集めただけみたいな
システムが出来上がったり…と言うことも発生します。
全体最適化を全く考慮していないシステムが及ぼす弊害は
言うまでは無いと思いますが、保守性の低下を確実に招きます。
また、それぞれの依存度が高くなってしまう事により
ユーザ側でのカスタマイズ出来る範囲にも影響が出る可能性があります。
最後に
当たり前の事ばかり書いていますが、
この当たり前の事が意外と出来ていないのも、また事実だと思います。
しかし、これ程まで制約が色々あるのにForce.comのデベロッパーは
なぜこのプラットフォームを使い続けるのかな…と、ふと思いました。
制約が多ければ多いほど創意工夫が必要で、知恵を振り絞って解決策を出す必要があります。
そのプロセスが楽しい人もいるのかな…とか、単純に仕事だからやってる人もいれば、
三度の飯よりSalesforceが好きな人もどこかにいるんでしょう( いるのかな? )
確実に言えることは、まだまだ進化していくこのForce.comと言うプラットフォームが
そのプラットフォーム自身も、そしてそれを取り巻くコミュニティも、
来年以降ますます盛り上がって行くだろう…と言うことです。
本来であれば技術ネタをしっかりと書くべきですが、
今回はこんな内容でお茶を濁しつつ
Salesforce1 Advent Calendar 2014 の最終日を締め括らせていただきます。