Salesforceカスタマイズの落とし穴|「作りすぎ」が招く運用崩壊と脱出法

catch-img
  • Salesforceのカスタマイズが膨大で、誰も全体像を把握できなくなった…
  • ベンダーに作ってもらったApexコードが何をしているかわからない
  • バージョンアップのたびに動かなくなる機能がある

「Salesforceをカスタマイズしすぎて、誰も全体像を把握できなくなった」「ベンダーに作ってもらったApexコードが何をしているかわからない」「バージョンアップのたびに動かなくなる機能がある」——Salesforceのカスタマイズに起因する問題は、導入から2〜3年経った企業で急速に顕在化します。

Salesforceの強力なカスタマイズ機能は、自社の業務に合わせた柔軟な開発を可能にする一方で、計画性のないカスタマイズは「技術負債」として蓄積し、運用コストの増大と現場の混乱を招きます。

この記事では、Salesforceカスタマイズの種類と複雑度を整理したうえで、「カスタマイズ沼」にハマる原因、標準機能との判断基準、技術負債の棚卸し手順、そしてカスタマイズに依存しないSFA運用の選択肢までを解説します。

  • この記事の要点

Salesforceのカスタマイズは「宣言的(ノーコード)」と「プログラム的(コード開発)」の2種類。 Apex・Visualforce・外部API連携など複雑度の高いカスタマイズほど、技術負債化リスクが高い。

カスタマイズ沼にハマる5つの構造的原因は「要件定義なしの場当たり開発」「標準機能の見落とし」 「ベンダー任せでナレッジ喪失」「バージョンアップ未考慮」「保守計画の不在」。

標準機能 vs カスタマイズの判断軸は3つ:「標準機能で80%カバーできるか」「5年TCOで投資対効果」 「Salesforceのロードマップで標準化予定はないか」。先に標準化を待つ判断も合理的選択。

Salesforceカスタマイズの種類と複雑度マップ

Salesforceのカスタマイズは、大きく「宣言的カスタマイズ」と「プログラム的カスタマイズ」の2種類に分かれます。両者の違いを理解することが、カスタマイズの適切な判断の第一歩です。

宣言的カスタマイズ(ノーコード / ローコード)

コードを書かずに、Salesforceの管理画面上の操作だけで実現するカスタマイズです。

カスタマイズの種類

具体例

複雑度

保守負荷

カスタム項目の追加

商談に「競合情報」項目を追加

ページレイアウトの変更

営業担当者向けの画面に表示する項目を整理

レコードタイプの設定

商材別に異なる入力フォームを用意

入力規則(バリデーション)

金額が0円の場合にエラーを表示

フロー(Flow Builder)

商談フェーズ変更時にタスクを自動生成

中〜高

承認プロセス

値引き率10%以上の見積を上長承認に回す

プログラム的カスタマイズ(コード開発)

Apex(Salesforce独自のプログラミング言語)やLightning Web Components(LWC)を使った開発です。

カスタマイズの種類

具体例

複雑度

保守負荷

Apexトリガー

レコード保存時に外部システムへデータを自動送信

Apexクラス

独自の計算ロジック(手数料計算、スコアリング等)

Visualforceページ

標準UIでは実現できない独自の入力画面

最高

Lightning Web Components

独自のダッシュボードウィジェット、カスタムUI

外部API連携

基幹システムや会計ソフトとのリアルタイム連携

最高

最高

複雑度×保守コストのマトリクス

保守コスト:低

保守コスト:高

複雑度:低

カスタム項目、ページレイアウト、レコードタイプ

複雑度:中

入力規則、承認プロセス

フロー(条件分岐が多い場合)

複雑度:高

Apex、LWC、Visualforce、外部API連携


ポイント:右下(複雑度:高×保守コスト:高)に位置するカスタマイズほど、技術負債化するリスクが高くなります。このゾーンのカスタマイズを行う前に、「本当に標準機能では実現できないか」を必ず検証しましょう。

「カスタマイズ沼」にハマる5つの構造的原因

Salesforceのカスタマイズが制御不能になる背景には、5つの構造的原因があります。

原因1:要件定義なしの場当たり開発

「営業部長がこの項目を追加してほしいと言った」「経理から承認フローを入れてくれと依頼された」——個別の要望に場当たり的に対応し続けた結果、カスタマイズが乱立するパターンです。

何が起きるか:

  • カスタム項目が100個以上に膨れ上がり、入力画面がスクロールしないと見えない
  • 同じ目的のフローが複数存在し、どれが有効かわからない
  • 項目間の依存関係が複雑になり、1つ変更すると別の場所が壊れる

原因2:「標準機能で代替できる」ことを知らない

Salesforceは年3回のメジャーアップデートで新機能を追加しています。過去にApexで開発した機能が、現在は標準機能やフローで実現できるケースは少なくありません。

よくある例:

  • 数年前にApexで作った自動メール送信 → 現在はフローの標準機能で実現可能
  • Visualforceで作った独自画面 → Lightning App Builderで代替可能
  • プロセスビルダーで作った自動化 → フローへの移行が推奨(プロセスビルダーは廃止予定)

原因3:ベンダー任せで社内にナレッジが残らない

導入時にSIerやコンサルティング会社にカスタマイズを依頼し、「何をどう作ったか」のドキュメントが社内に残っていないケースです。

何が起きるか:

  • ベンダーとの契約が終了した後、カスタマイズの意図や仕様がわからなくなる
  • 軽微な修正でも外部に依頼する必要があり、1件あたり数万〜数十万円のコストが発生する
  • ベンダーの担当者が変わると、引き継ぎが不十分で品質が低下する

原因4:バージョンアップの影響を考慮しない

Salesforceは年3回(Spring / Summer / Winter)のメジャーリリースで機能追加・仕様変更を行います。カスタマイズ時にバージョンアップの影響を考慮していないと、リリースのたびに不具合が発生します。

影響を受けやすいカスタマイズ:

  • Apex APIバージョンが古いまま放置されているコード
  • 廃止予定の機能(プロセスビルダー、ワークフロールール)に依存した自動化
  • Salesforceの内部仕様に依存したVisualforceページ

原因5:「作ったら終わり」で保守計画がない

カスタマイズの開発時には予算と工数を確保するが、リリース後の保守・運用にはリソースを割かないケースです。

何が起きるか:

  • 作成者が退職した後、誰もメンテナンスできないカスタマイズが「遺跡」として残る
  • エラーが発生しても原因調査に時間がかかり、現場の業務が止まる
  • 保守コストが年々増大し、新しいカスタマイズに投資する余裕がなくなる

原因

結果

予防策

要件定義なしの場当たり開発

カスタマイズの乱立

変更管理プロセスの導入

標準機能の見落とし

不要なコード開発

リリースノートの定期確認

ベンダー任せ

ナレッジの喪失

設計書・仕様書の社内保管

バージョンアップ未考慮

リリース後の不具合

Sandbox環境での事前テスト

保守計画なし

技術負債の蓄積

保守予算・体制の事前確保

標準機能 vs カスタマイズの判断基準|意思決定フレームワーク

「カスタマイズすべきか、標準機能で運用すべきか」を判断するための3つの軸を紹介します。

判断軸1:標準機能で80%カバーできるか

業務要件の80%以上を標準機能でカバーできるなら、残り20%は運用で補うほうが長期的にコストが低くなります。

判断の手順:

  1. 実現したい業務要件をリストアップする
  2. 各要件に対して「標準機能で実現可能か」を○/×で判定する
  3. ○の割合が80%以上 → 標準機能+運用で対応
  4. ○の割合が50〜80% → 宣言的カスタマイズ(フロー等)で補完
  5. ○の割合が50%未満 → そもそもSalesforceが自社に合っていない可能性を検討

判断軸2:Salesforceのロードマップで標準化予定はないか

Salesforceは年3回のリリースで新機能を追加しています。今カスタマイズで実現しようとしている機能が、近い将来に標準機能として提供される可能性があります。

確認方法:

  • Salesforceの公式リリースノート(Release Notes)を確認する
  • IdeaExchange(ユーザーからの機能要望サイト)で該当機能の投票状況を確認する
  • Salesforceのロードマップ(公式サイトで公開)を確認する
  • 担当のアカウントエグゼクティブに直接確認する

実際に標準化された例:

  • 動的フォーム(Dynamic Forms):以前はVisualforceで作っていた条件付き表示が標準機能に
  • フローのスケジュールトリガー:以前はApexのバッチ処理で実装していた定期処理が標準機能に
  • Einstein活動キャプチャ:以前は外部ツール連携で実装していたメール・カレンダー同期が標準機能に

意思決定フローチャート

質問

Yesの場合

Noの場合

標準機能で80%以上カバーできるか?

→ 標準機能+運用で対応

→ 次の質問へ

宣言的カスタマイズ(フロー等)で実現できるか?

→ フローで実装

→ 次の質問へ

5年間のTCOを試算して、投資対効果が見合うか?

→ Apex/LWCで開発(保守計画必須)

→ 次の質問へ

Salesforceのロードマップに類似機能の予定があるか?

→ 標準化を待つ(暫定運用で対応)

→ 開発を実行(ただし最小限に)

カスタマイズの棚卸し方法|技術負債を可視化する実践手順

すでにカスタマイズが蓄積している場合は、棚卸しを行って技術負債を可視化します。

棚卸しの4ステップ

ステップ1:カスタマイズの全量を把握する

Salesforceの「設定」メニューから、以下の項目を一覧出力します。

棚卸し対象

確認場所

把握すべき情報

カスタムオブジェクト

設定 → オブジェクトマネージャー

オブジェクト数、レコード数、最終更新日

カスタム項目

各オブジェクトの項目一覧

項目数、データ型、入力率

Apexクラス/トリガー

設定 → Apexクラス

クラス数、APIバージョン、最終更新日

フロー

設定 → フロー

フロー数、種類(レコードトリガー/画面等)、有効/無効

プロセスビルダー

設定 → プロセスビルダー

プロセス数、有効/無効(廃止予定のため要移行)

ワークフロールール

設定 → ワークフロールール

ルール数、有効/無効(廃止予定のため要移行)

ステップ2:各カスタマイズの利用状況を調査する

棚卸しシートに以下の情報を記録します。

項目

記録内容

カスタマイズ名

例:「見積承認フロー」「手数料計算Apex」

種類

フロー / Apex / カスタム項目 / etc.

作成者

誰が作ったか(不明の場合は「不明」と記録)

作成日 / 最終更新日

いつ作られ、最後にいつ更新されたか

目的

何のために作られたか(不明の場合は「不明」と記録)

利用状況

現在も使われているか / 使われていないか

依存関係

他のカスタマイズとの依存関係はあるか

ステップ3:削除・統合・維持を判断する

判断基準

アクション

6ヶ月以上使われていない

削除候補(Sandbox環境で削除テスト後に本番削除)

同じ目的のカスタマイズが複数ある

統合(1つに集約し、残りを無効化→削除)

標準機能やフローで代替できる

移行(標準機能に置き換え、旧カスタマイズを削除)

現在も使われており、代替手段がない

維持(ドキュメントを整備し、保守計画を策定)

作成者も目的も不明

調査→判断(Sandbox環境で無効化し、影響を確認)

ステップ4:保守計画を策定する

「維持」と判断したカスタマイズについて、保守計画を策定します。

保守項目

内容

頻度

ドキュメントの整備

目的・仕様・依存関係を文書化

初回+変更時

APIバージョンの更新

Apexコードのバージョンを最新に保つ

年1回以上

Sandbox環境でのリリース前テスト

Salesforceのメジャーリリース前に動作確認

年3回(リリースごと)

廃止予定機能の移行

プロセスビルダー→フローへの移行など

廃止スケジュールに合わせて


注意:棚卸しは必ずSandbox環境で検証してから本番環境に反映しましょう。「使われていない」と判断したカスタマイズが、実はバックグラウンドで重要な処理を行っていたケースがあります。

カスタマイズに依存しないSFA運用という選択肢

棚卸しと改善を試みても、カスタマイズの保守コストが経営を圧迫し続ける場合、根本的な問いを立てる必要があります。

「そもそも、カスタマイズ前提のSFAが自社に合っているのか?」

カスタマイズが必要になる構造的理由

Salesforceでカスタマイズが膨らむ背景には、「汎用プラットフォームを自社専用に仕立てる」というアプローチがあります。これは大規模な営業組織や複雑な業務プロセスを持つエンタープライズ企業には適していますが、営業5〜30名規模の組織にとっては過剰な投資になりがちです。

組織の特徴

カスタマイズ前提のSFA

ノーコードで完結するSFA

営業50名以上、複雑な承認フロー

適している

機能不足の可能性

基幹システムとの深い連携が必須

適している

API連携の範囲を要確認

営業5〜30名、標準的な営業プロセス

オーバースペック

適している

IT専任者がいない

運用が困難

適している

乗り換えを検討すべき判断基準

以下の3つに該当する場合、カスタマイズに依存しないSFAへの乗り換えが合理的な選択肢になります。

判断基準1:カスタマイズの保守コストが年間ライセンス費用を超えている
Apexの保守、フローの修正、バージョンアップ対応にかかる年間コスト(外部委託費+社内人件費)が、SFAのライセンス費用を上回っている場合、コスト構造自体に問題があります。

判断基準2:カスタマイズの80%以上が「標準機能の補完」である
独自の業務ロジックではなく、「画面のレイアウトを変えたい」「入力項目を整理したい」「簡単な自動化をしたい」といった要件のためにカスタマイズしている場合、ノーコードで柔軟に設定変更できるSFAのほうが適しています。

判断基準3:管理者不在でカスタマイズのメンテナンスができない
Salesforce認定管理者を社内に確保できず、外部委託に依存し続けている場合、管理者不要で運用できるSFAへの移行が根本的な解決策になります。

カスタマイズに依存しないSFAへの乗り換えを検討する場合、データ移行の手順や失敗しない進め方については、SFA乗り換えガイドの記事で詳しく解説しています。

よくある質問(FAQ)

Q: Salesforceのカスタマイズはどこまでが「適正」ですか?
A: 明確な基準はありませんが、目安として「カスタムオブジェクト10個以内」「Apexクラス20個以内」「有効なフロー15個以内」であれば、一般的な営業組織では管理可能な範囲です。これを大幅に超えている場合は、棚卸しによる整理を検討しましょう。

Q: カスタマイズの棚卸しは自社だけでできますか?
A: 宣言的カスタマイズ(カスタム項目、フロー等)の棚卸しは、Salesforceの管理画面から情報を取得できるため、社内で実施可能です。ただし、Apexコードの棚卸しにはプログラミングの知識が必要です。Apexが多数存在する場合は、Salesforceパートナー企業に「技術負債の診断」を依頼するのが効率的です。

Q: カスタマイズを減らすと、業務に支障が出ませんか?
A: 「使われていないカスタマイズ」を削除しても業務に支障は出ません。棚卸しの結果、6ヶ月以上使われていないカスタマイズが全体の30〜50%を占めるケースは珍しくありません。削除前にSandbox環境でテストすれば、リスクを最小限に抑えられます。

まとめ

Salesforceのカスタマイズは強力な武器ですが、計画性なく積み重ねると「技術負債」として運用を圧迫します。

本記事のポイントを振り返ります:

  • カスタマイズは2種類:宣言的(ノーコード)とプログラム的(コード開発)。複雑度と保守コストのマトリクスで、右下(高複雑度×高保守コスト)ほど技術負債化リスクが高い
  • カスタマイズ沼の5つの原因:要件定義なしの場当たり開発、標準機能の見落とし、ベンダー任せでナレッジ喪失、バージョンアップ未考慮、保守計画の不在
  • 標準 vs カスタマイズの判断基準:標準機能で80%カバーできるか、5年間のTCOで投資対効果が見合うか、Salesforceのロードマップで標準化予定はないか、の3軸で判断
  • 棚卸しの4ステップ:全量把握→利用状況調査→削除・統合・維持の判断→保守計画の策定。必ずSandbox環境で検証してから本番に反映
  • 根本的な選択肢:カスタマイズの保守コストが経営を圧迫し続ける場合、カスタマイズに依存しないSFAへの乗り換えも合理的な選択肢

カスタマイズは「作ること」よりも「維持すること」のほうがはるかにコストがかかります。新たなカスタマイズを検討する際は、必ず「5年後もこのカスタマイズを保守し続けられるか」を自問してから判断しましょう。


SFA導入を検討中の方は、まず自社の営業課題を整理し、「何を解決したいのか」を明確にすることから始めてみてください。

いま、BtoB企業がリプレイス先に選ぶのは、現場に定着する国産ツール「ferret SFA/CRM」。

高機能SFAと同等の営業管理を、Excel感覚のシンプルさで、圧倒的な低コストで実現します。ぜひご検討ください。

ferret SFA
ferret SFA
ferret SFAは、営業の現場に定着する運用を第一に考えたSFA/CRMです。「入力されない」「見返されない」を防ぐための設計思想と、成果につなげる活用ノウハウを分かりやすくお届けします。 Twitter:@ferret_One_

登録番号 IA180169
適用規格 ISO/IEC 27001:2022 / JIS Q 27001:2023