Salesforce開発でAIを使い倒す|要件整理から実装まで全自動化した方法

Salesforce開発の現場で、AIツールを使っていますか?
私は普段、Claude(Anthropic)やGitHub Copilotを使用して Salesforce開発を行っています。
結論から言うと、AIを使うことで開発効率が3倍以上になったと実感しています。
この記事では、実際のSalesforce開発で私がどのようにAIを活用しているか、具体的なワークフローとプロンプト例を紹介します。
使用しているAIツール
これまで試したツール
- ChatGPT(OpenAI)
- Gemini(Google)
- GitHub Copilot
- Claude(Anthropic)
現在のメイン環境:Claude × VSCode
なぜClaudeを選んでいるか?
- コード生成の精度が高い(特にApex、LWC)
- 長文のコンテキストを理解できる(既存コードの理解力が高い)
- 出力の品質が高く感じる
GitHub Copilotも併用:
- リアルタイムのコード補完が便利
- 簡単な処理はCopilotで、複雑な設計はClaudeで使い分け
【最重要】開発前の要件整理プロセス
実装に入る前に、AIと一緒に要件を細かく整理することが成功の鍵です。
使用するテンプレート
私は以下のようなテンプレートを使って、AIと対話しながら要件を固めています。
# 概要
(機能の概要を1〜2行で)
# 目的・背景
(なぜこの機能が必要なのか)
# 課題
(現状の問題点)
# 要件
(実現したいこと、箇条書き)
# 対応方針
(どのように実現するか、技術的なアプローチ)実例:商談成約時の自動通知機能
Step 1:まず自分で箇条書きメモを作る
顧客との打ち合わせ後、メモを見ながら内容を箇条書きにします。
- 商談が成約になったらメール送信したい
- 対象は取引先責任者
- 金額が大きい案件だけ(1,000万円以上)
- 営業部長にも通知
- 送信履歴は残したい
- バルク処理も対応Step 2:Claudeにテンプレート形式で整理してもらう
プロンプト例:
以下の打ち合わせメモを、テンプレート形式で整理してください。
【テンプレート】
# 概要
# 目的・背景
# 課題
# 要件
# 対応方針
【打ち合わせメモ】
- 商談が成約になったらメール送信したい
- 対象は取引先責任者
- 金額が大きい案件だけ(1,000万円以上)
- 営業部長にも通知
- 送信履歴は残したい
- バルク処理も対応
Step 3:Claudeが整理した要件書(第1稿)
# 概要
商談成約時に、関係者へ自動でメール通知を行う機能
# 目的・背景
- 商談成約の情報共有を迅速化
- 重要案件(高額)については、経営層にも即座に通知
- 営業担当者の通知漏れを防ぐ
# 課題
- 現状は営業担当者が手動でメール送信している
- 通知漏れが発生している
- 高額案件の情報が経営層に届くのが遅い
# 要件
1. 商談がステージ「Closed Won」になった際に自動メール送信
2. 送信対象:関連する取引先責任者 + 営業部長
3. 送信条件:商談金額が1,000万円以上
4. 送信履歴をカスタムオブジェクトに記録
5. バルク処理対応(一括更新時も動作)
# 対応方針
- トリガー(After Update)で商談のステージ変更を検知
- メール送信はトリガーハンドラー経由で別クラスに切り出し
- 送信履歴はカスタムオブジェクト Email_History__c に記録
- バルク対応:for文内でのSOQL/DML禁止、Map活用Step 4:人間がレビュー・修正
Claudeが整理した内容を確認し、不足があれば追加します。
追加修正例:
# 要件(追記)
6. メール送信失敗時のエラーハンドリング
7. 送信先が存在しない場合のログ出力Step 5:対応方針を詳細化
要件が固まったら、対応方針をもう少し詳しく詰めます。
このやりとりを繰り返し、詳細な使用を固めていきます。
プロンプト例:
先ほどの要件書の「対応方針」を、より詳細に記載してください。
具体的には:
- クラス構成
- 処理フロー
- カスタムオブジェクト設計
- 考慮事項
をマークダウン形式で追記してください。
Step 6:詳細化された対応方針
# 対応方針(詳細)
## クラス構成
- **OpportunityTrigger**:トリガー本体
- **OpportunityTriggerHandler**:トリガーハンドラー
- **EmailNotificationService**:メール送信ロジック
- **EmailHistoryLogger**:送信履歴記録
## 処理フロー
1. 商談のステージが「Closed Won」に更新される
2. トリガーが発火(After Update)
3. OpportunityTriggerHandler が商談金額をチェック(1,000万円以上)
4. 関連する取引先責任者を取得(SOQL)
5. 営業部長のメールアドレスを取得
6. EmailNotificationService でメール送信
7. EmailHistoryLogger で送信履歴を記録
## カスタムオブジェクト設計
### Email_History__c
| 項目名 | 型 | 説明 |
|--------|-----|------|
| Opportunity__c | 参照 | 対象商談 |
| Contact__c | 参照 | 送信先取引先責任者 |
| Sent_Date__c | 日時 | 送信日時 |
| Template_Name__c | テキスト | 使用したテンプレート名 |
| Status__c | 選択リスト | 成功/失敗 |
| Error_Message__c | ロングテキスト | エラー内容 |
## 考慮事項
- ガバナ制限(1日のメール送信上限:5,000通)
- バルク処理対応(for文内でのSOQL/DML禁止)
- エラーハンドリング(メール送信失敗時のログ)
- テスト時のメール送信抑制(System.Test.isRunningTest())Step 7:この時点で実装に進む
ここまで丁寧に整理することで:
- 実装の精度が上がる
- 手戻りが減る
- AIへの指示が明確になる
- レビューがしやすい
所要時間:
- 人間の作業:30分(箇条書きメモ + レビュー)
- AIの作業:5分
- 合計:35分で要件定義書が完成
実装フェーズ:段階的にコード生成
要件が固まったら、いよいよ実装です。
重要なのは「一気に全部作らせない」こと。
なぜ段階的に実装するのか?
- AIの生成精度が上がる
- コンテキストが明確になる
- 一度に生成するコード量が適切
- 人間のレビューがしやすい
- 一度に数百行のコードを見るのは大変
- 部分ごとなら確認しやすい
- Gitのコミット履歴が読みやすい
- 1コミット = 1機能
- 後から追いやすい
実装Step 1:トリガーハンドラーの骨組み
プロンプト例:
先ほどの要件書に基づき、OpportunityTriggerHandlerクラスの骨組みを作成してください。
条件:
- メソッドは定義のみ(実装はコメントアウト)
- バルク対応前提の設計
- テストクラスは不要(後で作成)
生成されたコード:
public class OpportunityTriggerHandler {
public static void handleAfterUpdate(List<Opportunity> newOpps, Map<Id, Opportunity> oldMap) {
// 成約 & 1,000万円以上の商談をフィルタリング
// メール送信対象の取引先責任者を取得
// 営業部長のメールアドレスを取得
// メール送信処理を呼び出し
// 送信履歴を記録
}
private static List<Opportunity> filterTargetOpps(List<Opportunity> newOpps, Map<Id, Opportunity> oldMap) {
// 実装予定
return null;
}
}→ レビュー後、コミット
実装Step 2:フィルタリングロジックの実装
プロンプト例:
OpportunityTriggerHandler の filterTargetOpps メソッドを実装してください。
条件:
- ステージが「Closed Won」に変更された商談のみ抽出
- 商談金額が1,000万円以上
- 旧レコードとの比較が必要
生成されたコード:
private static List<Opportunity> filterTargetOpps(List<Opportunity> newOpps, Map<Id, Opportunity> oldMap) {
List<Opportunity> targetOpps = new List<Opportunity>();
for (Opportunity opp : newOpps) {
Opportunity oldOpp = oldMap.get(opp.Id);
// ステージが Closed Won に変更 & 金額が1,000万円以上
if (opp.StageName == 'Closed Won'
&& oldOpp.StageName != 'Closed Won'
&& opp.Amount >= 10000000) {
targetOpps.add(opp);
}
}
return targetOpps;
}→ レビュー・修正してコミット
実装Step 3:メール送信サービスの実装
プロンプト例:
EmailNotificationService クラスを作成してください。
メソッド:
- sendClosedWonNotification()
処理:
1. 商談に関連する取引先責任者を取得(SOQL、バルク対応)
2. メールテンプレート取得
3. 営業部長のメールアドレスを追加
4. メール送信
5. エラーハンドリング
→ 同様に段階的に実装
実装Step 4:送信履歴記録の実装
プロンプト例:
EmailHistoryLogger クラスを作成してください。
メソッド:
- logEmailHistory()
処理:
- Email_History__c レコードを作成
- 成功/失敗のステータスを記録
- バルク対応
実装Step 5:テストコード作成
プロンプト例:
OpportunityTriggerHandler のテストクラスを作成してください。
条件:
- コードカバレッジ 90%以上
- ポジティブケース(成約 & 1,000万円以上)
- ネガティブケース(成約だが1,000万円未満)
- ネガティブケース(成約以外のステージ変更)
- バルクテスト(200件)
- メール送信は実際には行わない(Test.isRunningTest()で制御)
既存機能の修正・機能追加も同じフロー
既存機能の修正も、同じワークフローで進めます。
既存コードの資料化・内容整理
これが本当に便利です。
他人が書いた複雑なコード(数千行)を理解するのに、人間なら何時間もかかりますが、AIなら数分です。
使い方:既存コードの解析
プロンプト例:
以下のApexクラスを解析して、以下の形式でマークダウンドキュメントを作成してください。
【既存コード】
(コードを貼り付け、長い場合は分割して複数回に分ける)
【出力形式】
# クラス名
## クラスの目的
## 主要メソッドの説明
## 処理フロー
## 依存関係(呼び出し元・呼び出し先)
## 注意点
用途:
- 引き継ぎドキュメント作成
- コードレビュー前の理解
- リファクタリング前の調査
所要時間:
- 人間が読む:3〜5時間
- AIで解析:5分
→ 圧倒的に効率化
バグ調査・影響調査も丸投げ
バグ調査
プロンプト例:
以下のエラーが発生しました。原因と修正方法を教えてください。
【エラーメッセージ】
System.LimitException: Too many SOQL queries: 101
【発生箇所】
(エラーが出たコードを貼り付け)
【実行条件】
- トリガー経由で200件の商談を一括更新
Claudeの回答:
## 原因
for文の中でSOQLクエリを実行しているため、バルク処理時にガバナ制限に抵触しています。
## 修正方法
SOQLクエリをfor文の外に移動し、一度に全データを取得してMapで管理してください。
## 修正コード例
(修正後のコードを提示)影響調査
プロンプト例:
OpportunityTriggerHandler の handleAfterUpdate メソッドに、
以下の変更を加えた場合の影響範囲を調査してください。
【変更内容】
- 商談金額の条件を 10,000,000 → 50,000,000 に変更
【既存コード】
(コードを貼り付け)
【出力形式】
- 影響を受ける機能
- テストが必要な範囲
- 注意点
AIを使う上での注意点
1. AIは万能ではない
- 生成されたコードは必ずレビュー
- セキュリティ(CRUD/FLS)は人間がチェック
- ビジネスロジックの妥当性は人間が判断
2. 段階的に実装させる
- 一気に全部作らせない(精度が落ちる)
- 部分ごとにコミットを分ける
- レビューしやすい粒度で依頼
3. 要件整理を丁寧に行う
- テンプレートを使って要件を固める
- AIと対話しながら詳細化
- 人間が最終レビュー・承認
4. コンテキストを明確に伝える
- 要件書・設計書を一緒に渡す
- 既存コードがある場合は一緒に渡す
- 制約条件(ガバナ制限、バルク対応など)を明示
5. テンプレートを用意しておく
- 要件定義書のフォーマット
- 設計書のフォーマット
- マークダウンの出力形式
→ 毎回同じ形式で出力されるので、効率化
まとめ
Salesforce開発でAIを使い倒すワークフローを紹介しました。
ポイント:
- 要件整理フェーズでテンプレートを活用(丁寧に整理することで実装精度UP)
- 設計 → 実装 → ドキュメント化の全工程でAIを活用
- 段階的に実装させることで精度UP
- 既存コードの理解にAIは最強
- バグ調査・影響調査も丸投げできる
AIを使うことで、開発効率が3倍以上になりました。
明日からの開発に、ぜひ取り入れてみてください。
【執筆者】
ナインテック株式会社 代表
株式会社テラスカイを経て独立。フリーランス時代の5年間は、複数の大手SIerにてSalesforce導入プロジェクトに参画。法人設立後は、大手SaaS企業のSalesforce AppExchange開発等に従事。Salesforce導入後の保守・運用支援を専門としている。

