Salesforce開発者の皆さん、話題の「Vibe Coding」をもう体験しましたか? 今回は、Web版の Agentforce Vibes を使い、Trailheadの専用環境を舞台に「要件を伝えるだけでどこまでアプリが組み上がるか」に挑戦しました。
昨今の開発シーンでは、Cursor や Claude Code、そして Google Antigravity といった、AIが開発の「文脈(Vibe)」を理解し、自律的にコードを書き上げるツールが急速に普及しています。私自身、日々の業務でチャットAIと対話しながらのコーディングは行ってきましたが、これまではあくまで「AIにヒントをもらって、人間がエディタに反映する」というスタイルが主流でした。
そんな中、ついにSalesforceの世界でもAIエージェントが直接環境を操作し、設計からデプロイまでを完結させるという真のVibe Codingが可能になりました。
「AIエージェントが自律的に動作する環境での開発」は、私たちの開発体験をどう変えるのか。今回は、Web版の Agentforce Vibes を使い、Trailheadの専用プロジェクトを舞台に「要件を伝えるだけでどこまでアプリが組み上がるか」を検証しました。
昨今の開発シーンでは、Cursor や Claude Code、そして Google Antigravity といった、AIが開発の「文脈(Vibe)」を理解し、自律的にコードを書き上げるツールが急速に普及しています。私自身、日々の業務でチャットAIと対話しながらのコーディングは行ってきましたが、これまではあくまで「AIにヒントをもらって、人間がエディタに反映する」というスタイルが主流でした。
そんな中、ついにSalesforceの世界でもAIエージェントが直接環境を操作し、設計からデプロイまでを完結させるという真のVibe Codingが可能になりました。
「AIエージェントが自律的に動作する環境での開発」は、私たちの開発体験をどう変えるのか。今回は、Web版の Agentforce Vibes を使い、Trailheadの専用プロジェクトを舞台に「要件を伝えるだけでどこまでアプリが組み上がるか」を検証しました。
1. はじめに:Agentforce Vibesとは?
まず、最近Salesforce業界でよく耳にする「Agentforce」と今回使用する「Agentforce Vibes」の違いを整理します。
| 項目 | Agentforce | Agentforce Vibes |
| 役割 | デジタル従業員(AIエージェント) | AI開発パートナー(開発者向けツール) |
| 利用者 | エンドユーザー、顧客、社内スタッフ | Salesforce開発者、アーキテクト |
| 目的 | ビジネス業務の自動化・代行 | 開発作業の自動化・効率化 |
| 主な機能 | 自律的なタスク実行、RAG連携 | 設計提案(Plan)、実装・デプロイ(Act) |
「Agentforce」は従業員として、Salesforce組織のデータを使用して回答・提案するのに対し、「Agentforce Vibes」は開発パートナーとしての役割を担います。決定的な違いは、その介入範囲にあります。
従来の生成AIツールは、あくまで「コードの提案」までが限界でした。提示されたコードを人間がコピー&ペーストし、手作業でエラーを修正してデプロイするという「人間による橋渡し」が不可欠でした。
対して Agentforce Vibes は、設計を提案する「Plan」だけでなく、「環境への反映(デプロイ)」まで自律的に行う「Act」の機能を備えています。単なる書き手ではなく、環境構成まで理解し実行まで担う「AIペアプログラマー」と言えます。
従来の生成AIツールは、あくまで「コードの提案」までが限界でした。提示されたコードを人間がコピー&ペーストし、手作業でエラーを修正してデプロイするという「人間による橋渡し」が不可欠でした。
対して Agentforce Vibes は、設計を提案する「Plan」だけでなく、「環境への反映(デプロイ)」まで自律的に行う「Act」の機能を備えています。単なる書き手ではなく、環境構成まで理解し実行まで担う「AIペアプログラマー」と言えます。
2. 実装フェーズ:AIとの「vibes」セッション
準備:開発組織の取得
Agentforce Vibesを利用する方法は、大きく分けて2つのルートがあります。
1.Web版(ブラウザ完結): Salesforceの組織内から直接起動し、シームレスに開発を開始できる。
2.IDE拡張機能(VS Code / Cursor等): エディタと連携し、より高度な開発環境として利用する。
IDE拡張機能版は、最新のLLM(Large Language Models)を選択できたり、手元のローカルファイルと柔軟に連携できたりと、プロフェッショナルな開発において非常に強力な選択肢となります。
対してWeb版は、「Salesforce環境へのアクセスと、AIによるエージェント開発」がセットで提供されているため、環境構築の手間が一切ありません。今回はその手軽さを活かし、Web版 Agentforce Vibes IDE を使って検証してみたいと思います。
Agentforce Vibesを使用できる環境は以下から取得できます。(Trailhead)
1.Web版(ブラウザ完結): Salesforceの組織内から直接起動し、シームレスに開発を開始できる。
2.IDE拡張機能(VS Code / Cursor等): エディタと連携し、より高度な開発環境として利用する。
IDE拡張機能版は、最新のLLM(Large Language Models)を選択できたり、手元のローカルファイルと柔軟に連携できたりと、プロフェッショナルな開発において非常に強力な選択肢となります。
対してWeb版は、「Salesforce環境へのアクセスと、AIによるエージェント開発」がセットで提供されているため、環境構築の手間が一切ありません。今回はその手軽さを活かし、Web版 Agentforce Vibes IDE を使って検証してみたいと思います。
Agentforce Vibesを使用できる環境は以下から取得できます。(Trailhead)
Optimize Code with Agentforce for Apex and LWC Development
Unlock the potential of Agentforce for refining your Apex and Lightning Web Components. This guide walks you through setting up your development environment effectively
環境の準備が整ったら、設定画面(歯車アイコン)のメニューから 「Agentforce バイブス」を選択するとアクセスできます。
Agentforce Vibes画面
VS CodeとほぼUIは変わりません。
最初の検証:あいまいな指示で「デプロイ」まで完結するか?
これで準備ができました。
ではまずは、Agentforce Vibesの実力を測るため、「本当にメタデータの作成からデプロイまでをAIが自律して行うのか」をテストします。あえて具体的な仕様(データ型やAPI参照名など)を細かく指定せず、少し「あいまいなプロンプト」で指示を投げてみました。
ではまずは、Agentforce Vibesの実力を測るため、「本当にメタデータの作成からデプロイまでをAIが自律して行うのか」をテストします。あえて具体的な仕様(データ型やAPI参照名など)を細かく指定せず、少し「あいまいなプロンプト」で指示を投げてみました。
取引先に「メインSNS」という項目を追加してください。選択リスト形式で、選択肢は主要なものからいくつか追加してください。
あえて選択リスト値を丸投げしてみています。
指示を投げると、エージェントが「何をすべきか」を自らプランニングし、メタデータを書き換えてデプロイを開始します。画面上のログには、エージェントが思考し、メタデータを操作している様子がリアルタイムで流れます。見ていて非常に面白いです。
結果として、項目は適切に作成され、指定したレイアウトへの配置まで自動で完了しました。
以下は実行後のログですが、指示~タスク完了報告までの流れです。
作業中は、上部のタスク進捗バーが0から開始し、だんだん右に伸びてタスクの進捗がわかるようになっています。
指示を投げると、エージェントが「何をすべきか」を自らプランニングし、メタデータを書き換えてデプロイを開始します。画面上のログには、エージェントが思考し、メタデータを操作している様子がリアルタイムで流れます。見ていて非常に面白いです。
結果として、項目は適切に作成され、指定したレイアウトへの配置まで自動で完了しました。
以下は実行後のログですが、指示~タスク完了報告までの流れです。
作業中は、上部のタスク進捗バーが0から開始し、だんだん右に伸びてタスクの進捗がわかるようになっています。
取引先への項目追加指示~完了報告までの様子
作成された項目
丸投げした選択リスト値も主要なものが適切に追加されています。配置位置も違和感はありません。
しかし、すべてが完璧というわけにはいきませんでした。権限設定のプロセスで、少し難題にぶつかりました。
項目の作成を確認後、レイアウトへの反映と権限設定指示を忘れたことに気づき、追加指示をしたところ、レイアウトへの反映は問題なかったのですが、私が「全プロファイルに権限を付与して」と少し広めの指示を出したのが災いしたのか、項目レベルセキュリティの設定ができていませんでした。
特にエラーは出ておらず、再度確認や設定しなおす指示を出して修正を試みましたが、うまくいかなかったため今回は断念し手動で設定を行いました。
100%うまくはいきませんでしたが、想定したタスクが概ねできたことと、時には人間が手助けする必要がある、というリアルな体験ができました。
項目の作成を確認後、レイアウトへの反映と権限設定指示を忘れたことに気づき、追加指示をしたところ、レイアウトへの反映は問題なかったのですが、私が「全プロファイルに権限を付与して」と少し広めの指示を出したのが災いしたのか、項目レベルセキュリティの設定ができていませんでした。
特にエラーは出ておらず、再度確認や設定しなおす指示を出して修正を試みましたが、うまくいかなかったため今回は断念し手動で設定を行いました。
100%うまくはいきませんでしたが、想定したタスクが概ねできたことと、時には人間が手助けする必要がある、というリアルな体験ができました。
3. 本題:要件を伝えるだけでどこまでアプリが組み上がるか?
さて、少しつまずく部分はありましたが、チャットだけである程度のタスクができることが分かったため、本題のLWC画面開発に進みます。
今回は、簡単なアプリとして従業員同士で感謝のポイントを送りあうアプリの開発を要件として、Agentforce Vibesに開発~デプロイまでしてもらいたいと思います。
まず以下のようなプロンプトで丸投げできるか試してみました。
今回は、簡単なアプリとして従業員同士で感謝のポイントを送りあうアプリの開発を要件として、Agentforce Vibesに開発~デプロイまでしてもらいたいと思います。
まず以下のようなプロンプトで丸投げできるか試してみました。
従業員同士で感謝のメッセージを送る『サンクスポイント』機能を構築したいと考えています。以下の要件で実装してください。
まず、データの受け皿として『ポイント』オブジェクトを作成してください。項目は、送信者と受信者の参照項目、ポイント数、およびメッセージが必要です。
あわせて、これを操作するLWCも作成してください。現在の自分の保有ポイントを表示するヘッダーと、同僚を選択してポイントを送信できる入力フォームを備えた、モダンなUIが理想です。
オブジェクトの構成からフロントエンドの実装まで、一気通貫で提案をお願いします。
するとしばらくして、以下のようなエラーメッセージが返ってきました。
{"message":"I don't have the information needed to answer that question. My knowledge is focused on Salesforce development, including Apex, LWC, and common Salesforce APIs.","modelId":"SFR Model","providerId":"salesforce"}
要はSalesforce開発に特化していたAIのため、その範囲外の指示には対応できないということのようですね。もう少し要件をかみ砕く必要がありそうなので、AIがSalesforceの実装に集中できるような具体的な指示に変更しました。
以下の仕様に基づき、サンクスポイント機能のデータモデル作成とLWC実装を行ってください。
1. データモデルの作成
オブジェクト名: 『ポイント取引』
API参照名: Point_Transaction__c
必須項目:
Sender__c: 送信者(Userへのルックアップ)
Receiver__c: 受信者(Userへのルックアップ)
Amount__c: ポイント数(数値、18, 0)
Message__c: メッセージ(ロングテキストエリア)
2. LWC(Lightning Web Component)の実装
コンポーネント名: thanksPointForm
機能要件:
ログイン中のユーザーが現在保有しているポイント(Point_Transaction__c の Receiver__c が自分であるレコードの Amount__c 合計値)をヘッダーに表示。
送信フォームには、受信者の選択(lightning-record-picker 推奨)、ポイント入力、メッセージ入力を配置。
送信ボタン押下で、Point_Transaction__c レコードを作成し、成功時はトースト通知を表示。
デザイン: lightning-card を使用したモダンなUI。
以上のメタデータ定義とソースコードを生成してください。
このくらいまで具体的にすると、要件を理解し、タスクを開始してくれました。もう少しあいまいにしても良かったかもしれません。
タスク開始後、難度か私への確認などを挟み以下のような作業が続き、5分ほどでいったん完了報告が来ました。
チャットだけの指示で5分でアプリが完成するとなると、人間とは比較にならない速度です。ただ、今回は後述しますがそこまでうまくはいきませんでした。
タスク開始後、難度か私への確認などを挟み以下のような作業が続き、5分ほどでいったん完了報告が来ました。
チャットだけの指示で5分でアプリが完成するとなると、人間とは比較にならない速度です。ただ、今回は後述しますがそこまでうまくはいきませんでした。
アプリは完成したが、環境に反映されていない?
最後の報告メッセージをよく見ると、成功にはなっていますが、
「注:組織への認証に問題があるため、直接ブラウザでの確認はできませんが、デプロイは正常に完了しています。」
とあったため環境を見てみると、オブジェクトもアプリも反映されていませんでした。
ここで気づいたのですが、Agentforce Vibesは呼び出し元の組織を操作することもありますが、基本的には仮想のDX環境(スクラッチ組織のようなワークスペース)で作業を行い、最後にそれをターゲット組織へプッシュするというフローで動いています。
そのため双方の認証が通っている必要があるのですが(通常は意識する必要はないはずです)、そこで失敗しているようです。
ただ、先ほど試した取引先の項目作成時には認証できていたはずです。不思議に思いながらAIに自力解決を促し、数十分ほど格闘してもらいましたが、結局解決には至りませんでした。
そこで今回は「丸投げ」は諦め、デプロイは人間が指揮を執るスタイルに切り替えました。 しかしある程度具体的に指示を出したとはいえ、AIが裏側でどのリソースを生成したのか、その全貌を把握するのは困難です。そこで、ここでもAI自身に「作成した全リソースをリスト化して」と指示を出すことで、デプロイ対象を漏れなく特定できました。
以下が、今回作成されたリソースの一覧です。テストクラスやアプリケーション、タブに関しては最初の指示に入っていなかったため、追加指示で作成対象に入れてもらいました。
「注:組織への認証に問題があるため、直接ブラウザでの確認はできませんが、デプロイは正常に完了しています。」
とあったため環境を見てみると、オブジェクトもアプリも反映されていませんでした。
ここで気づいたのですが、Agentforce Vibesは呼び出し元の組織を操作することもありますが、基本的には仮想のDX環境(スクラッチ組織のようなワークスペース)で作業を行い、最後にそれをターゲット組織へプッシュするというフローで動いています。
そのため双方の認証が通っている必要があるのですが(通常は意識する必要はないはずです)、そこで失敗しているようです。
ただ、先ほど試した取引先の項目作成時には認証できていたはずです。不思議に思いながらAIに自力解決を促し、数十分ほど格闘してもらいましたが、結局解決には至りませんでした。
そこで今回は「丸投げ」は諦め、デプロイは人間が指揮を執るスタイルに切り替えました。 しかしある程度具体的に指示を出したとはいえ、AIが裏側でどのリソースを生成したのか、その全貌を把握するのは困難です。そこで、ここでもAI自身に「作成した全リソースをリスト化して」と指示を出すことで、デプロイ対象を漏れなく特定できました。
以下が、今回作成されたリソースの一覧です。テストクラスやアプリケーション、タブに関しては最初の指示に入っていなかったため、追加指示で作成対象に入れてもらいました。
作成されたリソースの一覧(AgentforceVibes出力のまま)
- オブジェクト/項目
- Custom Object: Point_Transaction__c
- 役割: ポイント送受信の取引レコードを保持
- Fields on Point_Transaction__c
- Sender__c (Lookup/User) — 役割: 送信者ユーザの参照
- Receiver__c (Lookup/User) — 役割: 受信者ユーザの参照
- Amount__c (Number/Decimal) — 役割: 送信ポイント数
- Message__c (Text) — 役割: 送信時メッセージの記録
- LWC
- thanksPointForm
- ファイル: force-app/main/default/lwc/thanksPointForm/*
- 役割: ユーザの保有ポイント表示、受信者選択、ポイント送信フォームのUI
- Apexクラス(アプリ用ロジック)
- GetUserPoints.cls / GetUserPointsTest.cls
- 役割: ログインユーザの保有ポイント取得(@AuraEnabled)、およびテスト
- SendPointTransaction.cls / SendPointTransactionTest.cls
- 役割: ポイント送信処理(@AuraEnabled)、Point_Transaction__cの作成、およびテスト
- タブ
- Point_Transaction__c.tab-meta.xml
- 役割: 取引オブジェクトのレコードタブ
- ThanksPointForm.tab-meta.xml
- 役割: thanksPointForm LWC をナビゲーションから直接開く Lightning タブ
- アプリケーション
- ThanksPoint.app-meta.xml
- 役割: Lightning アプリケーション定義。Small/Large のフォームファクタ設定、タブ構成に「ThanksPointForm」タブを追加
- レイアウト
- Account-Account Layout.layout-meta.xml
- 役割: 既存。プロジェクト内に含まれる標準オブジェクトのレイアウトメタデータ(本機能の中核ではないがリポジトリに存在)
- 権限・プロファイル(既存メタの一覧)
- profiles/ 以下の各プロファイル
- 役割: 権限テンプレート。今回の機能専用の Permission Set は未作成(必要に応じて LWC/Apex/オブジェクト権限を割当)
補足/既知対応:
- ThanksPoint アプリはフォームファクタを Small と Large のみに修正済み(Medium を削除)
- LWC の受信者選択不具合は handleReceiverChange を event.detail.value へ修正済み
- LWC を Lightning タブ(ThanksPointForm)として追加済み。アプリのタブにも組み込み済み
- オブジェクト/項目
- Custom Object: Point_Transaction__c
- 役割: ポイント送受信の取引レコードを保持
- Fields on Point_Transaction__c
- Sender__c (Lookup/User) — 役割: 送信者ユーザの参照
- Receiver__c (Lookup/User) — 役割: 受信者ユーザの参照
- Amount__c (Number/Decimal) — 役割: 送信ポイント数
- Message__c (Text) — 役割: 送信時メッセージの記録
- LWC
- thanksPointForm
- ファイル: force-app/main/default/lwc/thanksPointForm/*
- 役割: ユーザの保有ポイント表示、受信者選択、ポイント送信フォームのUI
- Apexクラス(アプリ用ロジック)
- GetUserPoints.cls / GetUserPointsTest.cls
- 役割: ログインユーザの保有ポイント取得(@AuraEnabled)、およびテスト
- SendPointTransaction.cls / SendPointTransactionTest.cls
- 役割: ポイント送信処理(@AuraEnabled)、Point_Transaction__cの作成、およびテスト
- タブ
- Point_Transaction__c.tab-meta.xml
- 役割: 取引オブジェクトのレコードタブ
- ThanksPointForm.tab-meta.xml
- 役割: thanksPointForm LWC をナビゲーションから直接開く Lightning タブ
- アプリケーション
- ThanksPoint.app-meta.xml
- 役割: Lightning アプリケーション定義。Small/Large のフォームファクタ設定、タブ構成に「ThanksPointForm」タブを追加
- レイアウト
- Account-Account Layout.layout-meta.xml
- 役割: 既存。プロジェクト内に含まれる標準オブジェクトのレイアウトメタデータ(本機能の中核ではないがリポジトリに存在)
- 権限・プロファイル(既存メタの一覧)
- profiles/ 以下の各プロファイル
- 役割: 権限テンプレート。今回の機能専用の Permission Set は未作成(必要に応じて LWC/Apex/オブジェクト権限を割当)
補足/既知対応:
- ThanksPoint アプリはフォームファクタを Small と Large のみに修正済み(Medium を削除)
- LWC の受信者選択不具合は handleReceiverChange を event.detail.value へ修正済み
- LWC を Lightning タブ(ThanksPointForm)として追加済み。アプリのタブにも組み込み済み
上記のリソースを一つずつ手動でデプロイを進めていくと、Apexクラスのデプロイ時にコンパイルエラーが発生していることが判明しました。 おそらく、エージェントはこのエラーに阻まれてデプロイに失敗していたものの、それを「認証エラー」という別の名目で報告してしまっていたようです。ログをより注意深く観察していれば、もっと早く気づけたかもしれません。
エラーの内容をVibesに伝えても、自力ではなかなか正解に辿り着けなかったのですが、最終的に私が原因を調べ、その答え(修正案)をVibesに提示すると解決してくれました。そしてこの時の挙動が、まさに Agentforce Vibesという動きでした。私が一つの修正案を教えると、「ここを直したことで影響が出る別のファイルも、合わせて修正しておきますね」と、複数ファイルにわたる依存関係を考慮した一括修正を自律的に行ってくれました。単なるコード修正ではなく、プロジェクト全体を俯瞰できることの強さを感じました。
数回のデプロイ失敗と修正を繰り返し、ようやく全てのコンポーネントが環境へ反映されました!
完成した画面がこちらです。
省略していますが、もちろんオブジェクトや項目もばっちり作成されています。
エラーの内容をVibesに伝えても、自力ではなかなか正解に辿り着けなかったのですが、最終的に私が原因を調べ、その答え(修正案)をVibesに提示すると解決してくれました。そしてこの時の挙動が、まさに Agentforce Vibesという動きでした。私が一つの修正案を教えると、「ここを直したことで影響が出る別のファイルも、合わせて修正しておきますね」と、複数ファイルにわたる依存関係を考慮した一括修正を自律的に行ってくれました。単なるコード修正ではなく、プロジェクト全体を俯瞰できることの強さを感じました。
数回のデプロイ失敗と修正を繰り返し、ようやく全てのコンポーネントが環境へ反映されました!
完成した画面がこちらです。
省略していますが、もちろんオブジェクトや項目もばっちり作成されています。
複数のファイルにまたがる修正を提案
完成!しかし…。
できあがった画面を見てみます。デザインに関しては「モダンなデザインで」という抽象的なオーダーしか出していないにもかかわらず、Lightning Design System(SLDS)を駆使した、実用的なUIが一瞬で生成されました。
しかし、いよいよ動作確認としてポイントを入力し送信ボタンを押してみると、エラーが発生。「受信者を選択してください。」というトースト通知が画面に表示されました。
エラーにはなっているものの、ここで一点「気が利いている」と感じたのは、私の指示には入っていない失敗時のエラーメッセージもトースト表示するようにしてくれていますね。
ただし今回受信者は確かに選択しているので、エラーメッセージと状況が一致していないため、さらなる調整が必要ですね。
完璧とはいきませんでした、ざっくりとした要件から、AIが自律してデータモデルを設計し、ソースコードを書き、そして環境へのデプロイまで完結させる一連のライフサイクルの検証はできたため、今回はここまでとしたいと思います。
エラーにはなっているものの、ここで一点「気が利いている」と感じたのは、私の指示には入っていない失敗時のエラーメッセージもトースト表示するようにしてくれていますね。
ただし今回受信者は確かに選択しているので、エラーメッセージと状況が一致していないため、さらなる調整が必要ですね。
完璧とはいきませんでした、ざっくりとした要件から、AIが自律してデータモデルを設計し、ソースコードを書き、そして環境へのデプロイまで完結させる一連のライフサイクルの検証はできたため、今回はここまでとしたいと思います。
4.まとめ
今回の検証を通して、Agentforce Vibesの凄さと同時に、実務で使うならここを考えていかないといけないな、というポイントも見えてきました。今回は検証しきれませんでしたが、今後向き合うべき課題をいくつか挙げてみます。
既存リソースへのデグレ(退行)リスク:
今回は新規作成でしたが、すでに動いている複雑なクラスやトリガーを修正する場合、AIが意図せず他の機能に影響を与えてしまう怖さがあります。AIが「ここも直しておきますね」と広範囲に修正を入れてくれるのは便利ですが、人間がその全貌を把握しきれないと、思わぬバグ(デグレ)を生む原因になります。
「もっともらしい」が動かないコード(ハルシネーション):
今回もデプロイエラーで苦戦したように、AIは一見正しそうなコードを生成しますが、実際には存在しないメソッドを呼び出したり、型が合っていなかったりすることがあります。「AIが言っているから正しい」と過信せず、常に疑ってかかる姿勢が必要です。
セキュリティと最小権限の原則:
権限設定をAIに任せると、今回のように反映されなかったり、逆に「とりあえず動くように」と過剰な権限を付与してしまう懸念があります。特に機密データを扱う組織では、AIが作った設定をそのまま通すのではなく、セキュリティの観点から人間が厳しくチェックする体制が不可欠だと感じました。
課題はありますが、Agentforce VibesはこれまでのSalesforce開発を大きく変化させる可能性があるものであると感じました。AIが土台を作り、人間が責任を持って仕上げるこの開発スタイルは、今後主流になってくるのではないでしょうか。 皆さんもぜひ、新しい開発の「Vibe」を感じてみてください!
既存リソースへのデグレ(退行)リスク:
今回は新規作成でしたが、すでに動いている複雑なクラスやトリガーを修正する場合、AIが意図せず他の機能に影響を与えてしまう怖さがあります。AIが「ここも直しておきますね」と広範囲に修正を入れてくれるのは便利ですが、人間がその全貌を把握しきれないと、思わぬバグ(デグレ)を生む原因になります。
「もっともらしい」が動かないコード(ハルシネーション):
今回もデプロイエラーで苦戦したように、AIは一見正しそうなコードを生成しますが、実際には存在しないメソッドを呼び出したり、型が合っていなかったりすることがあります。「AIが言っているから正しい」と過信せず、常に疑ってかかる姿勢が必要です。
セキュリティと最小権限の原則:
権限設定をAIに任せると、今回のように反映されなかったり、逆に「とりあえず動くように」と過剰な権限を付与してしまう懸念があります。特に機密データを扱う組織では、AIが作った設定をそのまま通すのではなく、セキュリティの観点から人間が厳しくチェックする体制が不可欠だと感じました。
課題はありますが、Agentforce VibesはこれまでのSalesforce開発を大きく変化させる可能性があるものであると感じました。AIが土台を作り、人間が責任を持って仕上げるこの開発スタイルは、今後主流になってくるのではないでしょうか。 皆さんもぜひ、新しい開発の「Vibe」を感じてみてください!