どんな取り組みか
この記事では、SalesforceのAgentforceにおけるカスタムアクションの実装方法について、ApexとFlowのどちらを選択すべきか、そしてApexで実装する場合の具体的な手順と注意点を解説します。Agentforceのカスタムアクションは、主にFlowかApexのどちらかで実装されますが、どちらを選ぶかによってできることと設計の方向性が変わります。
使われた技術スタック
- Salesforce
- Apex
- Flow
- Agentforce
- @InvocableMethod
- @InvocableVariable
実装のポイント
FlowとApexの使い分け
Flowが向いているケース:
- レコードの作成・更新・参照など、SOQL/DMLを組み合わせた標準的な業務処理
- ノーコード・ローコードで管理者が維持できる設計が望ましい場合
- 既存の自動起動フローをそのまま転用したい場合
Apexが向いているケース:
- 複雑な業務ロジックや複数オブジェクトをまたぐ処理
- 外部APIとの連携(コールアウトが必要な処理)
- バルク処理や条件分岐が多く、Flowだと管理しにくくなる場合
- 既存のApexコードベースを活用したい場合
実務的な判断基準としては、「Flowで表現できる範囲なら迷わずFlow、Flowでは難しい業務ロジックならApex」が合っていると考えられます。
Apexクラスの実装: @InvocableMethod アノテーション
Agentforceのカスタムアクションとして登録するには、Apexメソッドに @InvocableMethod アノテーションをつけます。これにより、Agentforce Builderのアクション設定画面からこのメソッドを参照できるようになります。
以下は基本的な実装パターンです。
public with sharing class GetAccountSummaryAction {
public class Input {
@InvocableVariable(label='取引先名' description='検索する取引先の名前を指定してください' required=true)
public String accountName;
}
public class Output {
@InvocableVariable(label='取引先サマリー' description='取引先の概要情報')
public String summary;
@InvocableVariable(label='エラーメッセージ' description='処理中にエラーが発生した場合のメッセージ')
public String errorMessage;
}
@InvocableMethod( label='取引先サマリーを取得' description='指定した取引先名で取引先を検索し、業種・年間売上・所在地をサマリー形式で返します' )
public static List
コードのポイント:
@InvocableMethodのlabelとdescriptionは、Atlas Reasoning Engineがアクションを「いつ使うべきか」を判断する根拠となるため、具体的に記述することが重要です。- 入力変数と出力変数はそれぞれ専用のクラス(
Input・Output)を作り、@InvocableVariableアノテーションで定義します。label、description、required=true属性が重要です。 - セキュリティのため、SOQLには
WITH USER_MODEを指定し、クラスにはwith sharingキーワードを使用します。 - バルク処理設計(
List<Input>とList<Output>)を意識します。
Agentforce Builderへの登録手順
Apexクラスが準備できたら、Agentforce Builderでカスタムアクション(ツール)として登録します。推奨される方法は、Agentforce Builderのサブエージェント内から作成する方法です。
- 設定のクイック検索で「Agentforce スタジオ」を検索して開く。
- 対象のエージェントを開き「Builderで開く」をクリック。
- 左パネル(エクスプローラー)から対象のサブエージェントを選択。
- 「ツール」横の「+」ボタンをクリックし、「新しいツールを作成」を選択。
- ツール名を入力し「作成して開く」をクリック。
- 「参照ツール種別」で「Apex」を選択。
- 「参照ツール」から作成したApexクラスを選択。
- ラベル・手順・入出力変数の設定を確認して「保存」。
アセットライブラリから登録すると、複数のエージェントやサブエージェントで同じアクションを再利用でき、保守コストを下げることができます。
登録後の設定確認ポイント
- 手順(Instructions):このツールをいつ実行すべきかをエージェントが理解するための説明文を記述します。
- 入力変数の「手順」:エージェントが各変数に何を渡せばいいかの説明を記述します。
- 入力変数の「入力が必要」チェックボックス:必須変数にはチェックを入れておきます。
- 出力変数の「会話に表示」チェックボックス:ユーザーに表示したい出力変数にはチェックを入れます。
つまずきポイント・注意事項
@InvocableMethodのlabelとdescription、およびアクション設定のlabel・手順の同期を確認してください。- アクションがAgentforce Builderの選択肢に表示されない場合は、
@InvocableMethodアノテーションの有無、クラスのpublicスコープ、Apexクラスのコンパイルエラー、エディション要件を確認してください。 - サブエージェントの指示内でのツール名は、表示名ではなくAPI名(スペースをアンダースコアに置き換えた形)で記述すると認識されやすいです。
- CPU時間制限・Governor Limitsに注意し、処理が重い場合はロジックの分割や非同期処理への移行を検討してください。
得られた成果や学び
@InvocableMethod アノテーションをつけたApexクラスを作成することで、Agentforceのカスタムアクション(ツール)として登録できます。label と description の記述は、Atlas Reasoning Engineのルーティング精度に直結します。入出力変数は @InvocableVariable で定義し、required=true と「会話に表示」チェックボックスの設定を忘れないようにします。セキュリティとパフォーマンスを考慮した実装が基本となります。ApexコードをAgentforceのアクションに繋げることで、既存のSalesforce開発スキルをAIエージェントの拡張に活かすことができます。
まとめ
AgentforceのカスタムアクションをApexで実装する際には、Flowとの使い分け基準を理解し、@InvocableMethod アノテーションを活用してApexクラスを作成します。Agentforce Builderへの登録手順や、label・description の重要性、入出力変数の設定、セキュリティ、パフォーマンスに関する注意点を把握することが、精度の高いアクション開発に繋がります。これにより、既存のSalesforce開発スキルをAIエージェントの拡張に効果的に活用することが可能になります。
出典: https://qiita.com/ubakichi_sr_mc_ai_06/items/e75531176c3c4b1a3620
Related Certifications
この記事に関連する技術領域の認定資格
Salesforce 関連資格
- Salesforce Certified Administrator
- Salesforce Certified Platform Developer I
- Salesforce Certified Platform Developer II
- Salesforce Certified Application Architect
- Salesforce Certified System Architect
- Salesforce Certified Technical Architect
※ 認定資格は技術スキルの体系的な学習に役立ちます。試験の出題範囲や受験要件は変更される場合があるため、受験前に必ず公式サイトで最新情報をご確認ください。
PR / Recommended
プライバシー保護に役立つVPNサービス
公衆Wi-Fi利用時の通信保護やプライバシー確保にはVPNが効果的です。NordVPNは世界中で利用されている定番VPNサービスで、強力な暗号化と高速接続を両立しています。
SF Tech & Win
Salesforce × AWS × AI 連携の実装ノウハウ
SIer・スタートアップ・中小企業のDX推進に役立つアーキテクチャ事例・実装パターン・最新アップデート情報を毎朝配信。


コメント