今回は、標準機能をカスタム化するならこれを認識しておこう!というお題で書いてみました。
というのも現場で要件定義やら開発やらしていると、「Salesforceのここの仕様どうなってるの?オペレーションに合わないから変えてほしいんだけど」
という要望がたまに寄せられます。
大抵は、「それはSalesforceの標準の仕様で、オペレーションでカバーしてもらうしかないかと。。。もしくはこんな代替案もありますよ」ということで納得いただくのですが、
オペレーションではどうしてもカバーできない場合もあり、そんな時は擬似的に標準機能に似せた機能を開発したり標準機能に抗う機能を開発したりして対応します。
ただ、これにはしっかりリスクや考慮事項がありますよっていうお話です。
この記事の内容は個人の見解です。
へえ、そういう考えがあるんだというくらいに受け取っていただけるとうれしいです。
標準機能をカスタム化するとは
まず、標準機能をカスタム化する、ということについて説明します。
端的にいうとSalesforceに元来備わっている標準的な機能をApexやLWCなどを駆使し、自分たちで開発してしまおうということです。
例えば、標準仕様の制約を回避するために「取引先と取引先責任者のリレーション」オブジェクトをカスタムオブジェクト化するとか、キャンペーンの商談の積み上げ集計が運用に合わないから自作するとか、
要は絶妙に痒いところに届かない標準機能に+αの付加機能をのせ(もしくは排除)、擬似的に標準機能を再現することと思っていただければと思います。
標準機能をカスタム化するリスク
標準機能の融通の効かなさをカバーし、自分たち好みに作れる標準機能のカスタム化ですが、私が思うに以下のようなリスクが伴います。
- まったく同じ機能を作ることはできない
- 標準機能ならではの恩恵を受けることがでない
- 標準機能のアップデートが進むとカスタムで作成したものとの乖離が広がりまったく違う機能となることがある
- 開発部分の保守コストがかかる
1. まったく同じ機能を作ることはできない
まず、第一に標準機能とまったく同じ機能をカスタムで開発することはできません。
不可能に近いといったほうが正しいかもしれませんね。
というのも、Saslseforceの標準機能はパッケージ内に組み込まれている超特殊プログラムによって構築されているケースが多いからです。
例えばグローバル検索といった超高速検索機能をカスタムで実現しようとしてもまず無理でしょう。(あれはマジですごい)
どれだけ似せて作ったとしてもSalesforceに標準で搭載されている機能と全く同じ機能を開発することはできないと思っていたほうがよいです。
2. 標準機能ならではの恩恵を受けることがでない
Salesforceの標準機能を使うメリットとして標準ならではの恩恵を受けられることが挙げられます。
ただ、カスタムで機能を再現するとこの恩恵を受けられないことがほとんどです。
例えば、商談チームや取引先チームなどについて言えば、メンバー管理と同時にレコードへのアクセス制御やメンバー追加の権限なども複雑に制御されています。
それらの機能を取捨選択してカスタム化することは非常に難易度が高く工数も要します。
それゆえにカスタムで代替する場合は、標準機能ならではの恩恵を受けられないというリスクを許容する必要があります。
3. 標準機能のアップデートに置いていかれる
Salesforceは年3回のメジャーリリースで機能が大幅にアップデートされます。
標準機能はアップデート対象ですが、自分たちで開発した機能がアップデートされるわけではありません。
するとどういうことが起こるかというと、標準機能はどんどん進化していくのに、それを模して作った機能はまったくアップデートされず似て非なる機能になっていくということです。
もちろんパッケージ依存せず、自分たちのペースで機能拡充できるというメリットはありますが、強力な標準仕様のアップデートの恩恵を受けられないのは痛いですね。
4. 開発部分の保守コストがかかる
開発した機能であれあ何でもそうなのですが、当然保守コストがかかります。
仕様変更やApex、LWCなどにバージョンアップがある際には都度プログラムの修正や動作検証をして正しく機能しているか確認する必要があります。
社外のベンダーに委託する場合は当然金額面でのコストがかかりますし、社内の場合でも対応できる人員を確保しておく必要があります。
基本は標準機能に従おう
ここまで標準機能をカスタム化することについてそのリスクや懸念を中心に書いてきました。
まあ、いろいろと思うところはあるのですが、結論はやはり、可能な限り標準機能を使いましょうとなります。
もちろんオペレーションの都合上、標準機能ではなかなか対応しきれない部分はあるかと思いますが、それでも標準機能を使用するメリットはありますし、開発するリスクのほうが大きいと個人的には感じています。
まあ、環境によりますかね~
おわり。
コメント