Sodech Developer Blog

株式会社ソデック技術ブログ

AIは天気予報士、人は傘を持つか決める人 ~AI時代に求められる人材とは~

AIは天気予報士、人は傘を持つか決定する。

今回は「AI時代に求められる人材とは」をテーマに、2回にわたって、必要なスキルとその習得方法について具体的に解説していきます。

第1回となる今回は、AI時代にどのようなスキルが求められるのかを取り上げます。

第2回では、それらのスキルをどのように身につけるのか、具体的な行動に落とし込んで解説する予定です。

こんな人におすすめの記事

・AI時代に、どのような人材が求められているのかを知りたい人

はじめに

以前のDreamforce参加レポートで、私は「これからAIは同僚、または後輩」だと書きました。

その後、社内の保守チームでAI活用を進めているメンバーに話を聞く中で、この表現を見直したくなりました。

AIは、確率に基づいて「もっともらしい答え」を出します。そう考えると、AIを後輩や同僚と表現してよいのだろうか、という疑問が浮かびました。

改めて考えた、私の答えはこれです。

AIは天気予報士。人は、傘を持つか決める人。

私なりには、この表現がしっくりきました。

天気予報士は優秀。でも傘は持ってくれない

天気予報士は、膨大なデータをもとに「降水確率70%」と教えてくれます。多くの場合、その予報は当たります。しかし、傘を持つかどうかは自分で決めなければなりません。

  • 降水確率30%でも、大事な商談があり、服を濡らせないから傘を持つ。
  • 降水確率70%でも、近所のコンビニまでなら、傘を持たずに走る。

同じ予報でも、行き先や状況、濡れたときの影響によって、適切な判断は変わります。天気予報士は、私たち一人ひとりの事情までは知りません。

AIも同じです。AIが出してくれるのは、確率に基づいた「もっともらしい」答えです。その答えを採用するかどうかは、実際の状況や目的を踏まえて、人が判断する必要があります。

社内の保守プロジェクトで起きたこと

保守チームでは、課題対応にAIを取り入れ、実装前の整理、実装、テスト、レビューといった工程ごとに役割を分けてきました。その結果、課題によっては、調査や実装にかかる時間を大幅に短縮できました。

ところが、対応方針を考える段階からAIに任せると、別の問題が見えてきました。

  • 要件文の書かれた要望をそのまま実現しようとして、必要以上に大がかりな構成を作ってしまった。
  • 人間なら短時間で終わる簡単な作業でも、丁寧に調査しすぎて時間がかかってしまった。
  • 作業の負担は軽くなったものの、客観的に見ると、期待したほど効率は向上していなかった。

AIは、与えられた指示に忠実に答えようとします。しかし、その忠実さが、お客様の要望を絶対的なものとして捉え、必要以上の対応につながってしまうケースもあったそうです。

お客様の要望は出発点であって、答えではない。

大切なのは、要望の背景にある本当の目的を掘り下げ、必要に応じて別の方法を提案することです。

単に目の前の指示を実行するだけではできません。「今日、どこへ行くのか」を理解している人だからこそできる判断です。

現在の運用:予報はAI、傘の判断は人

  • 人:課題を読み、背景や目的を踏まえて対応方針を決める。
  • AI:対応方針が決まったら、実装やテストを進める。
  • 人:AIが作成したエビデンスを確認し、責任を持って対応を完了させる。

メンバーによると、最も負荷が大きく、難しいのは方針を決める段階です。

課題の書き方にはばらつきがあり、文章には明記されていないニュアンスや、業務上の事情まで読み取る必要があります。そのため、この段階では人が判断した方が、速く確実に進められるケースが多かったそうです。

もちろん、AIを活用しないわけではありません。影響範囲の調査など、AIが得意とする作業には積極的に活用します。

重要なのは、AIにすべてを任せることではなく、人が主導権を持ち、AIの得意分野を活かすことです。

予報士を使いこなす人に求められるもの

AIを使いこなすには、AIに質問するだけでなく、その答えをどう活用するかを考える力が必要です。具体的には、次のような力が求められます。

  • 良い問いを立てられる:「今日の降水確率は?」ではなく「午後3時、屋外の移動で雨に当たる可能性は?」と聞ける。業務と仕様を理解しているからこそ、適切な問いを立てられます。
  • 予報を疑い、検証できる:「降水確率10%」でも、空模様や状況によっては傘を持つ判断ができます。AIの「影響なし」という回答を鵜呑みにせず、実際に検証することが大切です。動くものと、品質の良いものは別です。
  • 状況を踏まえて判断し、その理由を説明できる:「駅から目的時まで徒歩30分で、屋根のない道を通るため、傘を持ちます」と説明できること。判断の理由を言語化すれば、今後の判断基準としても活用できます。
  • 結果に責任を持てる:傘を持たずに出かけて雨に濡れても、天気予報士のせいにはできません。AIを活用した場合も、最終的な判断と結果に責任を持つ姿勢が求められます。

これをSalesforceの現場で求められるスキルとして整理すると、次の5つになります。

スキル 天気予報の例えでは
Salesforce技術(基礎知識・最新情報・AIの出力を検証する力) 予報を読み解き、疑う力
業務理解(仕様書の理解・顧客との対話・本当の課題の掘り下げ) 今日の行き先を知っていること
設計力(データモデル・選定基準・トレードオフの説明) 傘かレインコートか、走るかを選ぶ力
判断力(判断の記録・他人の判断から学ぶ力・原則の言語化) 「この条件なら傘を持つ」という自分の基準
責任を持つ力(品質の担保・リスクの事前共有・最後まで見届ける力) 雨に濡れた結果も引き受けること

方針を決めるには、Salesforceを知っている必要がある

対応方針を決めるのは人です。そして、方針を決めることは、「どの機能を、どのように使って実現するか」を選ぶことでもあります。

AIが実装を担う時代になっても、方針を決める人に基礎知識と最新情報が必要なのは、そのためです。

Salesforceは、リリースのたびに機能が追加・拡充されます。以前はApexによる開発が必要だった処理も、現在では標準機能で実現できる場合があります。

最新情報を把握していなければ、古い前提のまま対応方針を決めてしまう恐れがあります。AIを活用するからこそ、Salesforceそのものを理解し、AIの提案が適切かどうかを判断できる知識が必要なのです。

おわりに

社内メンバーへのヒアリングを通じて、AIはやはり優秀な存在だと改めて感じました。一方で、AIを活用するほど、人が担うべき役割も明確になります。

どこへ行くのかを知り、予報を疑い、傘を持つかどうかを決める。そして、その判断と結果に責任を持つ。

これからのAI時代に求められるのは、AIの予報を使いこなし、自分で判断できる人だと考えています。

では、今回紹介したスキルを、どのように身につけていけばよいのでしょうか。

具体的な習得方法や実践のステップについては、次回の記事で紹介します。

→ 【実践ステップについての記事は準備中】

【Salesforce】Dreamforce2026参加レポート

Dreamforce2026

Dreamforce 2026に参加しました:AI時代に求められる「人」の役割とは

9月15日から17日までの3日間、Dreamforce 2026に参加してまいりました。以前から一度は訪れてみたいと考えていたイベントでしたので、本記事では、実際に参加して感じたことや、特に印象に残った内容についてご紹介します。

 

圧倒的なスケール

事前に他の方のブログなどで「お祭りのようだ」という感想をにしていましたが、実際に会場を訪れて、その規模と演出に驚かされました。日本で開催される一般的な企業イベントとは大きく異なり、まさに別別次元ともいえるスケールです。

  • 会場のメインストリートには全面に人工芝が敷かれている
  • Salesforce創業者のマーク・ベニオフ氏が好むというミニ滝が設置されている
  • 周辺の映画館も貸し切られ、会場の端から端まで歩くと20分ほどかかる

会場の装飾や演出の一つひとつが、来場者を圧倒させるものでした。

 

数字で見るDreamforce 2026

Dreamforce 2026では、非常に多くのセッションや体験型コンテンツが用意されていました。

  • セッション数:1,600以上
  • 関連製品:50件以上
  • ハンズオン・トレーニングデモ:150件以上
  • コミュニティ会議:240以上

これらの数字からも、世界中から多くの人が集まる大規模なイベントであることが分かります。

 

Salesforceがこのイベントを開催する理由

Dreamforceは、Salesforceが今後の方向性や新機能を発表する場の一つとして位置づけられています。基調講演では、今後搭載される機能によってビジネスがどのように変わるのかが、お祭りのような華やかな雰囲気の中で印象的に紹介されていました。

 

最も印象に残ったこと:Revenue Cloudの設定をバイブコーディングで実行

今回の参加で最も印象に残ったのは、Revenue Cloudの管理者向け設定を、バイブコーディングで実行できるという点です。

弊社が取り組んでいるRevenue Cloudは、機能数が多く、設定の難易度も高い製品です。そのため、管理者による設定作業には多くの時間を要しておりました。今回紹介された方法によって、こうした設定作業が大幅に簡略化される可能性があると感じました。

ただし、私自身はまだ実際に使用した経験がないため、現時点ではその効果について断定することはできません。今後、実際に触れる機会があれば、改めて検証してみたいと思います。

また、同時通訳機能を利用して英語のセッションを数多く聴講しましたが、「AIを活用することで、これまで時間を要していた作業も短時間で完了できる」という趣旨のセッションが非常に多く見受けられました。

 

利用者の視点から見た課題

一方で、実際に利用する立場から考えると、AIの利用量に応じてクレジットなどのコストが発生する仕組みでは、利用量や費用を意識しながら運用する必要があります。現実的には、AIを無制限に使って設定を進めるという運用は難しいのではないでしょうか。

こうした課題に対応する製品として紹介されたのが、Optimize & Observeです。トークンの使用状況をグラフで可視化し、人間が確認できる状態にするだけでなく、AIによる改善につなげていくというものです。

AIの利用状況をAIが監視し、さらに改善していくという仕組みは大変興味深い一方で、「AIをAIが管理する」という構図に、どこか不思議な感覚も覚えました。

 

イベント全体を通じて感じたメッセージ

Dreamforce全体を通じて、私が受け取ったメッセージは、「AIは、仕事の同僚(同じ仕事をする仲間)という役割を担えるようになった」ということです。

それでは、人間にはどのような役割が求められるのでしょうか。

人間は「AIの後輩を指導する先輩」になる

今後の人間の役割の一つは、AIという「後輩」を指導する先輩になることではないかと考えています。

先輩がフィードバックを行うためには、業務のノウハウや知識を十分に理解していることが不可欠です。AIという後輩は、経験年数に関係なく誰でもすぐに持つことができるため、若手社員にも早い段階から、先輩としてのスキルを身につけてもらう必要があると感じました。

ただし、AIの作業スピードは非常に速く、人間によるレビューが追いつかなくなる可能性があります。人間がボトルネックとなり、全体のスピードを阻害するという課題は、AI活用が進む過渡期において、特に顕在化するのではないかと感じています。

 

「AIに対応できる人材」の育成に向けて

私は社内でSalesforceの設定・開発に関する教育を担当しています。

今回のDreamforceを通じて、AIが生成した成果物を適切に評価できる人材の育成が、今後ますます重要になると実感しました。

そのためには、まず基礎をしっかりと身につけた人材を育てることが必要です。

具体的には、次のような判断基準を伝えていくことが大切だと考えています。

  • どのような業務に対して、どの機能を使用するのが適切か
  • 保守性の観点から、どのような方法で構築するのが望ましいか

こうした知見を共有しながら、AIのアウトプットに対して的確な指摘や判断ができるメンバーを育成してまいります。

 

おわりに

初めての渡米、そして初めてのDreamforceで感じたことをまとめました。

華やかなお祭りのようなイベントの裏側で、「AI時代に人は何を担うべきなのか」を深く考えさせられる3日間でした。、今回得た学びを、今後の人材育成や日々の業務に活かしてまいります。

【Salesforce】Agentforceを理解するなら最初に知っておきたい!RAGとは何かを初心者向けに解説

この記事で学べること

この記事で学べることは、とてもシンプルです。

✅ RAGとは何かが分かる。

Agentforceでは、ユーザーからの質問に対して、LLM(大規模言語モデル)を活用して回答を生成します。

その際、LLMが持っていない情報を検索して取得し、回答に必要な情報を補う仕組みがRAGです。

最近はAgentforceやLLMという言葉はよく聞くようになりましたが、

「じゃあ、RAGって結局具体的に何をしているの?」

と思ったことはありませんか?

私もSalesforceの導入支援をしていますが、実はRAGだけは曖昧な理解のままでした。

そこでSalesforceのトレーニングを受講したところ、

「なるほど!RAGってそういうことだったのか!」とやっと理解できました。

この記事では、同じようにRAGがよく分からない方向けに、できるだけ分かりやすく解説したいと思います。

 


RAGとは何?

RAGは、Retrieval Augmented Generation の略です。

日本語では検索拡張生成と訳されます。

でも…

正直この日本語だけ見ても何をするものなのか分かりません(笑)

まずは英語の意味を見てみましょう。

単語 意味
Retrieval 必要な情報を検索・取得する
Augmented 取得した情報をプロンプトへ追加(補強)する
Generation その情報を基に回答を生成する

 

ここで大切なのは、RAGは「検索する技術」ではないということです。

検索から回答生成までを一連で行う仕組み全体をRAGと呼びます。

RAGの3つの処理

RAGがないとどうなる?

では、RAGが無いとどうなるのでしょうか。

例えば社員がAgentforceに

「社内規定を教えて」

と質問したとします。

しかし社内規定はSharePointやPDFで管理されています。

RAGが無いAgentforceは、それらの情報を取得できません。

つまり、「見に行けない」ので回答できないのです。

商品マニュアルも同じです。

製品仕様書やFAQサイトがSalesforce外にあった場合、

Agentforceはそれらを根拠として回答できません。

社内規定や商品マニュアルを見たいのに見られない…

RAGは「検索」だけではない

ここが私も勘違いしていたところでした。

RAGは「検索する機能なんだ」と思っていました。

実は違います。

RAGは

  1. 必要な情報を検索し
  2. その情報をLLMへ渡すプロンプトへ追加し
  3. その情報を基にLLMが回答を生成する

ところまで担当しています。

つまり、

検索して終わりではありません。

例:返品ルールの流れ

なぜ回答精度が上がるの?

LLMは学習した知識だけでも回答できます。

しかし、

会社独自のルールや最新の商品情報までは知りません。

そこでRAGが

「この情報を参考に回答してください」

とLLMへ情報を渡します。

これをSalesforceではグラウンディング(Grounding)と呼んでいます。

GroundingとはLLMに実際のデータ(社内規定や商品マニュアル)を結びつけることを指します。

その結果、LLMは推測ではなく、根拠を基に回答できるようになるのです。

これがハルシネーションを抑える理由でもあります。

RAGによって根拠ある回答ができる

まとめ

RAGは単なる

「外部情報へアクセスする機能」

ではありません。

RAGは

  • 必要な情報を検索する(Retrieval)
  • 情報をプロンプトへ追加する(Augmented)
  • その情報を基にLLMが回答を生成する(Generation)

という一連の仕組みです。

この仕組みによって、Agentforceは社内規定や商品マニュアル、FAQなどを根拠として回答できるようになり、より業務に役立つAIエージェントになります。

 

【Salesforce】Apexクラス上でzipファイルを作成してみた

この記事で学べること

本記事では、Apexクラスを用いてSalesforce上でzipファイルを生成する方法を

紹介します。

投稿の動機

LWC(Lightning Web Components)(html、js)を利用してzipファイルを生成する実装方法は知っていたが、新しくApexクラス上でzipファイルを生成する方法について学んだので、その実装方法を共有したいと思い本投稿を作成しました。

対象

・Apexクラスの実装経験がある程度ある方

・Salesforce上でzipファイルを生成する必要があり、実装方法に困っている方

サンプルコード

例として、取引先レコードに添付されているpdfファイルを一つのzipファイルに圧縮し、それを取引先に添付する実装を記述します。

public void createZipBlob(Id accountId){
// 取引先IDに紐づくContentDocumentLinkをもとにContentVersionを取得 List cvList = [ SELECT PathOnClient
, VersionData FROM ContentVersion WHERE ContentDocumentId IN ( SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = :accountId ) ]; // ZipWriterインスタンス生成 Compression.ZipWriter writer = new Compression.ZipWriter(); // zipファイルに格納するファイル情報をZipWriterインスタンスに追加する for(ContentVersion cv : cvList){ writer.addEntry(cv.PathOnClient, cv.VersionData); } // zipファイルをBlob型として取得する Blob zipAttachment = writer.getArchive(); // 取引先にZipファイルを添付する ContentVersion newCV = new ContentVersion(); newCV.Title = 'サンプルZIP'; newCV.PathOnClient = 'サンプルZIP.zip'; newCV.VersionData = zipAttachment; insert newCV; ContentVersion getCV = [ SELECT ContentDocumentId FROM ContentVersion WHERE Id = :newCV.Id ]; ContentDocumentLink newCDL = new ContentDocumentLink(); newCDL.LinkedEntityId = accountId; newCDL.ContentDocumentId = getCV.ContentDocumentId; insert newCDL; }

例をもとにzipファイルを生成する過程についてのみ解説をします。

  1. ZipWriterインスタンスを生成する
  2. ファイル情報をZipWriterに追加する
  3. Blob型としてzipファイルを取得する

手順①:ZipWriterインスタンスの生成

 『Compression.ZipWriter writer = new Compression.ZipWriter();』

 と記述し、ZipWriterインスタンスを生成する。

 ここで定義したZipWriter型変数にzipファイルに格納するファイル情報を

 追加していきます。

手順②:ファイル情報の追加

 『writer.addEntry(cv.PathOnClient, cv.VersionData);』

 と記述することでZipWriter変数にファイル情報を追加することができます。

 ここでポイントとしては、addEntryメソッドの引数です。

 第一引数には完全パス、第二引数にはBlob情報を記述しています。

 今回の例だとContentVersionを使用していますが、

 引数に渡す情報が完全パスとBlob情報であればContentVersionを使用しなくても

 zipファイルを生成することが可能です。

手順③:zipファイルのBlob情報を取得

 『Blob zipAttachment = writer.getArchive();』

 と記述することでZipWriter変数からzipファイルの情報をBlob型として取得する

 ことが可能です。

※※※ 注意 ※※※

・addEntryメソッドでファイル情報を追加する際、1つのZipWriter変数に重複した

 完全パスを追加するとエラーになる

補足

LWC上で対象のファイルをzip化することが可能です。

サンプルとして、本記事ではローカルから選択した複数のファイルをzipに格納し、Apexクラスにzipファイル情報を渡してContentDocumentとして登録する方法を紹介します。

fileUploader.js

import { LightningElement, track } from 'lwc';
import { loadScript } from 'lightning/platformResourceLoader';
import JSZIP from '@salesforce/resourceUrl/jszip';
import uploadZip from '@salesforce/apex/FileZipController.uploadZip';

export default class FileUploader extends LightningElement {
    jsZipInitialized = false;
    jszip;
    @track filesData = [];

    connectedCallback() {
        if (!this.jsZipInitialized) {
            loadScript(this, JSZIP).then(() => {
                this.jszip = new window.JSZip();
                this.jsZipInitialized = true;
            });
        }
    }

    handleFileChange(event) {
        if (event.target.files.length > 0) {
            [...event.target.files].forEach(file => {
                let reader = new FileReader();
                reader.onload = () => {
                    let base64 = reader.result.split(',')[1];
                    this.filesData.push({
                        fileName: file.name,
                        base64: base64
                    });
                };
                reader.readAsDataURL(file);
            });
        }
    }

    async handleUpload() {
        if (this.filesData.length === 0) {
            alert('ファイルを選択してください');
            return;
        }

        let zip = new window.JSZip();
        this.filesData.forEach(f => {
            zip.file(f.fileName, f.base64, { base64: true });
        });

        const zipBlob = await zip.generateAsync({ type: 'blob' });

        // Blob → Base64変換
        const reader = new FileReader();
        reader.onload = async () => {
            const zipBase64 = reader.result.split(',')[1];
            try {
                await uploadZip({
                    fileName: 'merged.zip',
                    base64Data: zipBase64
                });
                alert('ZIPファイルをSalesforceに保存しました');
            } catch (err) {
                console.error(err);
            }
        };
        reader.readAsDataURL(zipBlob);
    }
}

fileUploader.html

<template>
    <lightning-card title="ZIPファイル作成 (LWC)">
        <lightning-input type="file" multiple onchange={handleFileChange}></lightning-input>
        <lightning-button label="ZIP化してSalesforceに保存" onclick={handleUpload}></lightning-button>
    </lightning-card>
</template>

FileZipController.cls

public with sharing class FileZipController {
    @AuraEnabled
    public static Id uploadZip(String fileName, String base64Data) {
        Blob fileBlob = EncodingUtil.base64Decode(base64Data);

        ContentVersion cv = new ContentVersion();
        cv.Title = fileName;
        cv.PathOnClient = fileName;
        cv.VersionData = fileBlob;
        insert cv;

        return cv.Id;
    }
}

最後に

ここまで見ていただきありがとうございます。

今回の投稿をあげるきっかけになったのは、業務上の案件で顧客からSalesforce上で

zipファイルを生成したいというご要望をいただき、実際に実装してみて面白いなと

思ったので投稿しました。

これからも実務で役立つ実装方法を紹介していきたいと思いますので、

別の投稿も見ていただけたら嬉しいです!

 

 

【Salesforce】Agentforce Virtual Hackathonに参加してみた!

こんにちは!

先月末まで募集されていた「Agentforce Virtual Hackathon」にエントリーしました!

developer.salesforce.com

結果は後述しますが、本当に素晴らしい経験だったので、ぜひ皆さんにも共有させてください!

ReadyHead
  • そもそもAgentforce Virtual Hackathonって何?
  • 参加のきっかけ
  • ReadyHeadの誕生
  • ReadyHead ができること
  • 使用した機能
  • 紹介動画
  • やってみて学んだ事
  • まとめ

そもそもAgentforce Virtual Hackathonって何?

続きを読む

【Salesforce】S3とCRM Analyticsを接続する方法

0.投稿の動機

データの手動インポートやエクスポートに時間を取られている方に向けて、Amazon S3とSalesforce CRM Analyticsを連携させることで、これらの作業を自動化し、業務を効率化する方法をお伝えしたいと思い、本記事を執筆しました。

本記事では、その手順を実際の経験を踏まえて解説します。外部システムとのデータ連携をスムーズに行いたい方にぜひ参考にしていただければと思います。

1. 読者の対象

  • SalesforceやAmazon S3をすでに利用しているが、複数のシステム間の連携に悩んでいる。

  • 手動でデータのインポートやエクスポートを行っており、非効率さを感じている。

  • CRM Analyticsを使ってデータ分析を行いたいが、外部データを取り込む手間を減らしたい。

2. IAMでユーザーを作成する

  1. AWS管理コンソールでIAMを開き、新しいユーザーを作成します。

  2. S3のフルアクセス権限を付与します。

    • グループを作成し、適切なポリシー(例: AmazonS3FullAccess)を割り当てます。

  3. ユーザー作成後、アクセスキーを作成します。

  4. アクセスキーとシークレットアクセスキーを保存します(後で使用します)。

3. S3にバケット・フォルダ・ファイルを作成する

  1. バケットを作成します。

    • わかりやすい名前を付けると便利です。

  2. バケットの下にフォルダを作成します。

    • フォルダ名は「オブジェクト名」にすると管理しやすいです。

  3. 入力接続の場合は必要なファイルをアップロードします。

    • schema_sample.csv: テーブルの項目名を1行目に記載したCSVファイル。

    • データファイル: SalesforceにインポートするデータのCSVファイル。

▼Amazon S3 接続方法

https://help.salesforce.com/s/articleView?id=sf.bi_integrate_connectors_S3.htm&type=5

4. CRM Analyticsで接続を設定する

入力設定

  1. データマネージャーで以下を操作します。
    • 「接続」→「新しい接続」→「入力」タブで「Amazon S3 コネクタ」を選択。

  2. 必要事項を入力します。

    • 接続名: 任意の名前。

    • API参照名: 任意。

    • アクセスキーとシークレットアクセスキー: IAMで作成したキーを設定。

    • フォルダーパス: バケット名を入力。

    • リージョンネーム: Asia Pacific (Tokyo) を指定。

  3. オブジェクトを編集し、対象フォルダ(schema_sample.csvをアップロード済みのフォルダ)を選択します。

  4. データマネージャーで以下を操作します。

    • 「接続」→「新しい接続」→「出力」タブで「Salesforce 出力コネクタ」を選択。

  5. 必要事項を入力します。

▼Salesforce出力接続

https://help.salesforce.com/s/articleView?id=sf.bi_integrate_connectors_output_salesforce.htm&type=5

出力設定

  1. データマネージャーの「出力」タブで「Amazon S3 出力コネクタ」を選択。

  2. 入力設定と同じ情報を入力します。

▼Amazon S3 出力方法

https://help.salesforce.com/s/articleView?id=sf.bi_integrate_connectors_output_amz_s3.htm&type=5

5. レシピを作成する

入力の設定

  1. 入力設定で選択したオブジェクトをレシピの「入力データ」に設定します。

  2. 必要に応じてデータ型をSalesforceの形式への変換や参照項目の結合などをします。

  3. Salesforceへの出力:

    • 書き込み先: 「出力接続」。

    • 接続名:設定した「Salesforce 出力コネクタ」

    • 項目の対応付け

出力の設定

  1. SFDC-LOCALの対象のオブジェクトを入力データで設定をします。

    • 出力先: 「Salesforce 出力コネクタ」。

    • オブジェクト名: 書き込み対象のオブジェクトを指定。

    • 外部ID: 項目の対応付けを行います。

  2. S3への出力:

    • 書き込み先: 「出力接続」。

    • 接続名:設定した「Amazon S3 出力コネクタ」

    • オブジェクト名:設定したフォルダ名(オブジェクト名)

6. まとめ

S3とCRM Analyticsを接続する方法を紹介しました。

この流れを参考に、ぜひ効率的なデータ連携を実現してください。