Salesforce Einstein Discovery 活用ガイド:コンサルタントが解説するビジネスインサイトの引き出し方

Salesforce コンサルタントとして、私は日々、お客様が Salesforce に蓄積された膨大なデータをいかにしてビジネス価値に転換するかという課題に直面しています。多くの企業は、データを保有しているものの、それを意思決定に活かすための知見(インサイト)を効率的に抽出できずにいます。本記事では、この課題に対する強力なソリューションである Einstein Discovery (アインシュタインディスカバリー) について、その背景から具体的な活用方法、ベストプラクティスまでを包括的に解説します。


背景と応用シナリオ

現代のビジネス環境において、データは最も価値ある資産の一つです。Salesforce には、顧客情報、商談履歴、サービスケース、マーケティング活動など、日々の業務を通じて膨大なデータが蓄積されます。しかし、これらのデータを前にして、多くのビジネスユーザーは次のような疑問を抱えています。

  • 「どの商談が最も成約する可能性が高いのか?」
  • 「なぜ特定の顧客が解約してしまうのか、その主要な要因は何か?」
  • 「来月の売上を最大化するためには、今、どの活動に注力すべきか?」

従来、これらの問いに答えるためには、データサイエンティストが複雑な統計モデルを構築し、多くの時間をかけて分析を行う必要がありました。Einstein Discovery は、このプロセスを自動化し、AI と機械学習の力を使って、ビジネスユーザー自身がデータから隠れたパターンや未来の予測を発見できるようにする拡張分析 (Augmented Analytics) ツールです。

応用シナリオ

Einstein Discovery は、Salesforce Platform 上のあらゆる業務領域で活用できます。

  • 営業部門: 商談の成約確率を予測し、リスクのある商談を特定。営業担当者が取るべき次の最適なアクションを推奨することで、受注率の向上を支援します。
  • サービス部門: 顧客の満足度低下や解約(チャーン)の兆候を早期に予測。プロアクティブな対応を促し、顧客維持率を改善します。また、ケースの初回コール解決率 (First Call Resolution) を最大化するための要因を分析します。
  • マーケティング部門: 顧客生涯価値 (Customer Lifetime Value, CLV) を予測し、エンゲージメントが高い顧客セグメントを特定。マーケティングキャンペーンの ROI を最大化します。
  • 財務部門: 請求書の支払い遅延リスクを予測し、キャッシュフローの安定化に貢献します。

原理説明

Einstein Discovery は、単なる予測スコアを表示するだけのツールではありません。「何が起きたか」「なぜ起きたか」「これからどうすべきか」という一連の分析サイクルを自動で実行し、ストーリーとして提示します。そのプロセスは、主に以下のステップで構成されます。

1. ストーリーの作成 (Creating a Story)

分析の出発点は「ストーリー」の作成です。ユーザーはまず、分析の目的となるGoal (ゴール) を定義します。これは、最大化または最小化したいビジネス上の成果指標です。例えば、商談オブジェクトであれば「受注 (Won) 率の最大化」がゴールになります。

次に、そのゴールに影響を与えている可能性のあるExplanatory Variables (説明変数) を含むデータセット(CRM Analytics データセット)を指定します。これには、商談の金額、フェーズ、リードソース、活動回数などが含まれます。Einstein Discovery は、これらの変数間の相関関係やパターンを自動的に分析します。

2. インサイトの発見 (Discovering Insights)

ストーリーが作成されると、Einstein Discovery は統計分析を行い、結果を人間が理解しやすい自然言語と視覚的なグラフで提示します。生成されるインサイトは主に3種類です。

  • Descriptive Insights (記述的インサイト): 「何が起きたか」を分析します。例えば、「リードソースが 'Web' の場合、平均受注率は 25% であった」といった過去の事実を明らかにします。
  • Diagnostic Insights (診断的インサイト): 「なぜ起きたか」を深掘りします。複数の変数を組み合わせて、ゴールに最も強く影響を与えている要因を特定します。「業種が 'テクノロジー' で、かつ競合が存在しない場合、受注率は 50% に上昇する」といった、より詳細な相関関係を示します。
  • Prescriptive Insights / Recommendations (処方的インサイト/推奨事項): 「どうすれば改善できるか」という具体的なアクションを提示します。例えば、「商談金額を 10% 引き下げると、受注確率が 5% 向上する可能性がある」といったシミュレーションに基づいた改善案を推奨します。

3. モデルのデプロイ (Deploying a Model)

ストーリーから得られたインサイトに満足したら、それを予測Model (モデル) としてデプロイできます。このモデルは、新しいデータに対してリアルタイムで予測を行うための数式とロジックの集合体です。デプロイされたモデルは、Salesforce 内の様々な場所で利用可能になります。

  • Salesforce オブジェクトへの書き込み: 予測スコアや改善点をカスタム項目として、対象のレコード(例:商談レコード)に直接書き込むことができます。
  • CRM Analytics ダッシュボードへの統合: ダッシュボード上で What-If 分析を行うことができます。
  • Apex や Flow からの呼び出し: カスタムのビジネスロジックや自動化プロセスに予測を組み込むことができます。

示例コード

デプロイされた Einstein Discovery モデルは、Apex を通じてプログラムから呼び出すことができます。これにより、例えば、カスタムの Lightning Web Component 内でリアルタイムの予測結果を表示したり、特定の条件を満たした際に自動で予測を実行するトリガを実装したりすることが可能になります。ここでは、Connect API の ConnectApi.EinsteinDiscovery クラスを使用して、特定の商談レコードに対する予測を取得する Apex コードの例を紹介します。このコードは Salesforce の公式ドキュメントに基づいています。

Apex で予測モデルを呼び出す

以下のコードは、指定した商談 ID のリストを受け取り、デプロイ済みの予測モデル(ID で指定)を使ってそれぞれの商談の受注確率を予測するものです。

public class OpportunityScorer {
    /**
     * 指定された商談リストに対して Einstein Discovery の予測を実行するメソッド
     * @param opportunityIds 予測対象の商談レコードIDのリスト
     * @return 予測結果の Map (Key: 商談ID, Value: 予測結果文字列)
     */
    public static Map<String, String> getOpportunityPredictions(List<Id> opportunityIds) {
        
        // デプロイ済みの予測定義IDを指定します。
        // これはモデルマネージャから取得できます。
        String predictionDefinitionId = '1ORB00000008o1sOAA'; 

        // 予測対象のレコードを格納するリストを作成します。
        List<ConnectApi.EinsteinDiscoveryPredictionRecordInput> recordsToPredict = 
            new List<ConnectApi.EinsteinDiscoveryPredictionRecordInput>();

        // 予測に必要な項目を SOQL で取得します。
        // モデルが使用する全ての項目をクエリに含める必要があります。
        List<Opportunity> opportunities = [SELECT Id, Amount, LeadSource, (SELECT Id FROM OpenActivities) 
                                           FROM Opportunity WHERE Id IN :opportunityIds];
        
        for (Opportunity opp : opportunities) {
            // 各レコードのデータを Connect API が要求する形式に変換します。
            ConnectApi.EinsteinDiscoveryPredictionRecordInput recordInput = new ConnectApi.EinsteinDiscoveryPredictionRecordInput();
            
            // 行の識別子としてレコードIDを設定します。
            recordInput.rowId = opp.Id;

            // モデルで使用する各列(項目)の値を設定します。
            // 項目名は API 参照名と一致させる必要があります。
            List<ConnectApi.EinsteinDiscoveryPredictionColumnInput> columns = new List<ConnectApi.EinsteinDiscoveryPredictionColumnInput>();
            columns.add(createColumn('Amount', opp.Amount));
            columns.add(createColumn('LeadSource', opp.LeadSource));
            columns.add(createColumn('ActivityCount', opp.OpenActivities.size()));
            
            recordInput.columns = columns;
            recordsToPredict.add(recordInput);
        }

        // Connect API の getPrediction メソッドを呼び出して予測を実行します。
        ConnectApi.EinsteinDiscoveryPredictionResult predictionResult = 
            ConnectApi.EinsteinDiscovery.getPrediction(predictionDefinitionId, recordsToPredict);

        // 結果を処理しやすいように Map に格納します。
        Map<String, String> resultsMap = new Map<String, String>();
        for (ConnectApi.EinsteinDiscoveryPredictionRecordResult prediction : predictionResult.predictions) {
            String outcome = String.valueOf(prediction.prediction.value);
            // 予測結果(例:85.5%)と、影響を与えた上位の要因を文字列として結合します。
            String resultString = 'Predicted Outcome: ' + outcome;
            
            if (prediction.prediction.topPredictors != null && !prediction.prediction.topPredictors.isEmpty()) {
                resultString += ' | Top Predictor: ' + prediction.prediction.topPredictors[0].columnName;
            }
            resultsMap.put(prediction.rowId, resultString);
        }
        
        return resultsMap;
    }

    /**
     * EinsteinDiscoveryPredictionColumnInput オブジェクトを生成するヘルパーメソッド
     * @param name 項目のAPI参照名
     * @param value 項目の値
     * @return ConnectApi.EinsteinDiscoveryPredictionColumnInput インスタンス
     */
    private static ConnectApi.EinsteinDiscoveryPredictionColumnInput createColumn(String name, Object value) {
        ConnectApi.EinsteinDiscoveryPredictionColumnInput column = new ConnectApi.EinsteinDiscoveryPredictionColumnInput();
        column.columnName = name;
        column.value = String.valueOf(value);
        return column;
    }
}

このコードを利用することで、標準のレコードページだけでなく、完全にカスタマイズされたユーザーインターフェースやバッチ処理の中でも、Einstein のインテリジェンスを活用することが可能になります。


注意事項

Einstein Discovery を導入・運用する際には、コンサルタントとしていくつか注意すべき点をお客様に伝える必要があります。

  • ライセンスと権限 (Licenses and Permissions): Einstein Discovery の利用には、CRM Analytics Plus または Einstein Predictions といった追加ライセンスが必要です。また、ユーザーには「Einstein Discovery User」や「CRM Analytics Plus User」などの適切な権限セットを割り当てる必要があります。
  • データの品質 (Data Quality): 予測モデルの精度は、元となるデータの品質に大きく依存します。「Garbage In, Garbage Out(ゴミを入れれば、ゴミしか出てこない)」の原則は AI の世界でも同様です。分析対象のデータセットには、十分な量の履歴データ(目安として、予測したい結果ごとに最低400行)が含まれていること、データがクリーンで一貫性があることが重要です。
  • モデルの監視と再トレーニング (Model Monitoring and Retraining): ビジネス環境の変化に伴い、過去のデータから構築したモデルの予測精度は時間と共に低下する可能性があります。これをModel Drift (モデルドリフト) と呼びます。モデルマネージャ機能を使用してモデルのパフォーマンスを定期的に監視し、必要に応じて最新のデータでモデルを再トレーニング(更新)することが不可欠です。
  • API 制限 (API Limits): Apex から予測 API を呼び出す場合、Salesforce のガバナ制限(例: Connect API のコールアウト回数)を消費します。大量のレコードを処理するバッチ処理などで使用する場合は、これらの制限に抵触しないように設計する必要があります。
  • 解釈可能性とバイアス (Interpretability and Bias): Einstein Discovery は予測の根拠を説明してくれるため、AI の「ブラックボックス」問題を軽減しますが、元データに潜在的なバイアス(性別、人種、地域などによる偏り)が含まれていると、モデルもそのバイアスを学習してしまい、不公平な予測を生み出す可能性があります。ストーリーを作成する際には、倫理的な観点からデータを確認し、バイアスを引き起こす可能性のある項目を除外するなどの配慮が求められます。

まとめとベストプラクティス

Einstein Discovery は、Salesforce に蓄積されたデータを、単なる記録から未来を予測し、ビジネスを改善するための羅針盤へと昇華させる強力なツールです。コンサルタントとして、私はこのツールの導入を成功させるために、以下のベストプラクティスを推奨します。

  1. 明確なビジネス課題から始める (Start with a clear business problem): 「AI を使いたい」という技術的な動機ではなく、「商談の受注率を10%向上させたい」といった具体的なビジネス目標を設定することから始めます。目標が明確であれば、必要なデータや評価すべき指標も自ずと定まります。
  2. 適切なデータを選択する (Select the right data): ビジネス部門のエキスパートと協力し、設定した課題に関連性の高いデータ項目は何かを議論します。すべての項目を分析に含めるのではなく、仮説を持ってデータを選択することが、質の高いインサイトに繋がります。
  3. 反復的なアプローチを取る (Take an iterative approach): 最初から完璧なモデルを目指す必要はありません。まずはシンプルなモデルを作成してデプロイし、現場からのフィードバックを収集します。そのフィードバックを基に、データを追加したり、設定を調整したりして、モデルを段階的に改善していくアジャイルなアプローチが成功の鍵です。
  4. アクションに繋げる (Drive action): 予測スコアやインサイトは、それ自体が価値を生むわけではありません。それらを活用して、実際の業務プロセスを変革することが最も重要です。Lightning レコードページに予測結果と推奨アクションを埋め込み、ユーザーが日々の業務の中で自然にデータに基づいた意思決定を行える環境を構築しましょう。
  5. ユーザートレーニングと導入支援 (Provide user training and adoption support): 予測結果が何を意味し、それをどのように解釈して行動に移すべきか、エンドユーザーへのトレーニングは不可欠です。成功事例を共有し、ユーザーが AI を信頼して活用できるようになるまで、継続的な支援を行います。

Einstein Discovery を正しく活用すれば、あらゆる企業がデータドリブンな文化を醸成し、持続的な競争優位性を築くことが可能です。それは、経験と勘だけに頼るのではなく、データという客観的な事実に基づいて、より賢明な意思決定を行うための強力な武器となるでしょう。

コメント