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分で要件定義書が完成

実装フェーズ:段階的にコード生成

要件が固まったら、いよいよ実装です。

重要なのは「一気に全部作らせない」こと。

なぜ段階的に実装するのか?

  1. AIの生成精度が上がる
    • コンテキストが明確になる
    • 一度に生成するコード量が適切
  2. 人間のレビューがしやすい
    • 一度に数百行のコードを見るのは大変
    • 部分ごとなら確認しやすい
  3. 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を使い倒すワークフローを紹介しました。

ポイント:

  1. 要件整理フェーズでテンプレートを活用(丁寧に整理することで実装精度UP)
  2. 設計 → 実装 → ドキュメント化の全工程でAIを活用
  3. 段階的に実装させることで精度UP
  4. 既存コードの理解にAIは最強
  5. バグ調査・影響調査も丸投げできる

AIを使うことで、開発効率が3倍以上になりました。

明日からの開発に、ぜひ取り入れてみてください。


【執筆者】

ナインテック株式会社 代表

株式会社テラスカイを経て独立。フリーランス時代の5年間は、複数の大手SIerにてSalesforce導入プロジェクトに参画。法人設立後は、大手SaaS企業のSalesforce AppExchange開発等に従事。Salesforce導入後の保守・運用支援を専門としている。