tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:開発者向けWinter'26の新機能の抜粋とフローとApexのテスト統合

TrailheadでWinter'26の認定資格モジュールが追加されていました。

Stay Updated with Salesforce Platform Developer Changes

Apex のヒープ制限に達することなく大規模な外部サービスコールアウトおよびペイロードを処理する

これまで外部システムとの間でファイル連携をするとヒープサイズ制限に達してしまう課題がありました。外部サービスを介する大規模なコールアウトを管理するための効率的なプロセスが導入され、外部サービスでは、バイナリデータを Apex ヒープに直接読み込むのではなく、ContentDocument オブジェクト ID へのポインターを使用するようになったそうです。これにより、ヒープ制限に達することなく最大 16 MB のバイナリファイルをアップロードまたはダウンロードが可能になるとのことです。

抽象メソッドと上書きメソッドでアクセス修飾子を使用する

API バージョン 65.0 以降、Salesforce では抽象メソッドと上書きメソッドでの明示的なアクセス修飾子の使用が適用されます。 protected、public、または global として宣言する必要があるそうです。開発者が誤ってサブクラスによって実装できないメソッドを記述することを防止するための調整とのこと。

LWS 信頼済みモードを使用してサードパーティスクリプトを昇格させる

LWS 信頼済みモードを使用することで信頼するコードに対して制限を緩和することができるようです。


ヘルプサイトがありましたが、設定手順やコードの書き方は乗っていませんでした。ほんとに必要になったときには情報見つかるようになっていると思います。これでjQueryなどがLWCで利用できるようになるそうです。

Salesforce Help

重要:信頼モードを有効にすると、サードパーティのスクリプト(それぞれ「非SFDCアプリケーション」)が、LWSおよびLockerで通常必要とされるセキュリティ制限なしで実行できるようになります。サードパーティのスクリプトがセキュリティ要件を満たしていることを保証するのは、お客様の単独の責任です。お客様、ISV、またはその他の関係者がスクリプトを信頼モードに設定することでお客様のソリューションに損害が発生した場合、Salesforceは責任を負わず、また、その回復を支援する義務も負いません。

信頼モードは、アプリケーションと統合にいくつかの重要な利点をもたらします。

・無制限のAPIアクセス:LWCコードから、ブラウザが提供するあらゆるAPI(LWSでブロックされるAPIやLockerでラップされるAPIも含む)を直接呼び出すことができるようになりました。このアクセスにより、コードはネイティブAPIに無制限にアクセスでき、名前空間の分離が実質的に解消されます。

・完全な DOM 操作: スクリプトでは、通常の制限なしに、Salesforce 管理の要素や Shadow DOM を含むドキュメント オブジェクト モデル (DOM) の任意の部分を操作できるようになります。
パフォーマンスの向上: パフォーマンスが重要なアプリケーションは、LWS レイヤーなしでより高速に実行できます。

・グローバル ライブラリの互換性の強化: jQuery や D3 などのグローバル状態に依存するサードパーティの JavaScript ライブラリが意図したとおりに動作するようになり、Salesforce ソリューション内での互換性が向上します。

新規追加および変更された LWC モジュールについて学ぶ

・「lightning/graphql」GraphQL API を使用して UI API が有効なオブジェクトのデータを取得できるようになったそうです。
・lightning/omnistudioPubsub – カスタムコンポーネントが公開/登録メカニズムを使用して FlexCard や Omniscript と通信できるように。

画面フローで LWC コンポーネントを使用してローカルアクションを実現する

「画面フローはユーザーにビジネスプロセスをガイドする強力なツールですが、従来はブラウザーとのやり取りが制限されていました。このリリースでは、画面フローで Lightning Web コンポーネント (LWC) ローカルアクションを使用してクライアント側の操作を実行できるようになりました。」

テストの統合 (Apex テストとフローテストを一緒に実行)

自動化アプリケーションにアクセス。


フロータブを開く。


新規自動化でレコードトリガーフローを選択。


取引先オブジェクトを対象にフローを作成。


レコードを更新の設定。


取引先説明項目に固定文言を設定する簡易は更新フローの用意ができました。これで保存、有効化を行います。

フローのテスト

まずはフロー側のテストです。画面右上のテストを表示ボタンをクリックします。


テストの詳細、トリガー、パスを設定の部分はこのような形。


最初のトリガーレコードを設定はこのような形。必須の取引先名に値を設定します。


アサーションを設定は次のようになります。


これで保存。準備ができたらテストを実行します。


テストの実行完了という感じの緑メッセージが表示さrます。そのあと「最終実行日時」「結果」の欄が更新されます。


開発者コンソールからテスト

歯車メニューでアクセス。MacでChromeの場合でCmd+クリックで別タブで開けます。(Windowsも別タブで開くショートカットキーで同じことができます。)

以下のコードを実行します。

RunTestsUsingToolingAPI.runAsynchronousTestsWithToolingAPI();

//この呼び出しは、Apex テストを Tooling API を使って非同期実行する処理を開始します。
//主に CI/CD・自動化・大量テスト実行の文脈で使われます。


設定メニューにアクセスしてアプリケーションテスト実行を選択します。これでフローとApexテストがそれぞれ成功したログをチェックすることができました。

SFDC:Service Cloudの次世代サービスコンソールについて

Service Cloudの次世代サービスコンソールに関するTrailheadモジュールを見つけました。Service Cloudユーザーが利用しているサービスコンソールについてまた新しい考え方のツールが登場するみたいです。

Next Generation Service Console Overview and Benefits


SLDS 2デザインのデモ画面で紹介されていました。



従来のサービスコンソールは1つの画面の中にタブを複数開いてさまざなな情報にアクセスできる考え方のツールです。


次世代サービスコンソールはAIとデータ統合を使った顧客情報のページを起点とした仕組みとなるようです。


次世代サービスコンソールでどのような顧客サービス改善が可能になるかの紹介がありました。


「Customer 360 Metrics & Insights」の機能として顧客の詳細情報を一元管理でき、「Agentforce Service Coach」の機能でAIによる業務サポートを得られ、「サービス担当アシスタント」で電話の要約、メールの作成、ケースの更新、自動化が実現でき、会話の雰囲気チェック機能も用意されているとのこと。マネージャー向けには「スーパーバイザーコンソール」でチーム全体のパフォーマンスの可視化が可能です。


サービス担当、マネージャー、システム管理者にとって価値のある機能となっていることが紹介されています。


次世代サービスコンソールにアクセスする方法ですが、Service Cloudライセンスのユーザー全員が利用できるとのことです。(Agentforceライセンスなどが別途必要になりそうな気がします)。まだ現時点では設定操作を試すことはできず、既存のサービスコンソールに段階的に展開されていくタイプの新機能のようでした。ただし、早期アクセスプログラムも用意されていて、Salesforceアカウント担当に問い合わせしてみると何かしら案内してもらえるかもしれません。(まだ日本展開されていないなどはあるかもしれません。)

SFDC:Salesforce Lightning Design System 2 を試してみました

Salesforce Lightning Design System 2 を試してみました。SLDS2とも呼ばれるものです。

Explore Salesforce Lightning Design System 2 for UI Development

SLDS2とは


見た目が変わるだけじゃなくて開発者ツールなども使いやすくなるみたいです。

SLDS2の切り替え方法

設定のテーマおよびブランド設定から有効化します。まだベータ版でカスタムテーマに対しては予期しない効果が発生する場合があるとのこと。


テーマの参照画面を確認したところ、この画面自体は特に目新しい設定はありませんでした。


これまでのテーマの設定と変わらず有効化ボタンから有効化します。


有効化の前と後の画面です。標準のSLDS2テーマで問題なく利用できます。

SLDS1


SLDS2


カスタムテーマの作成を行う場合は通常時がSLDS2で作成され、SLDS1を作成したい場合は▼メニュー内のボタンから作成する流れとなります。


ページに表示される情報は当然変わらずスタイルが最新UIになるという変更です。


移行にあたり以下のようなチェックポイントがあるようです。

開発者向け移行ツール

SLDS Linter または SLDS Validator、および Figma キットを使用してコードを分析し、移行要件のチェックを行えるという仕組みが用意されているそうです。

SARIF Viewerのインストール

SARIF Viewer - Visual Studio Marketplace

Node.jsのインストール

SLDS Linter を実行するにはこれが必須です。サポートされている最小バージョンは v18.4.0 です。最新のActive Long Term Support (LTS) バージョンの Node.js を 使用することをお勧めします。


プロジェクトにSLDS Linterをインストールして実行します。VS Codeのプロジェクトルートディレクトリで、以下の手順に従ってください。SLDS Linter がインストールされていない場合は、SLDS Linter パッケージをインストールするように求められます。「y」と入力してパッケージをインストールしてください。

npx @salesforce-ux/slds-linter@latest lint


このコマンドを実行すると、プロジェクトのルート ディレクトリに SARIF レポートが生成されます。ファイル名は「slds-linter-report.sarif」です。

npx @salesforce-ux/slds-linter report


SLDS Linter で特定したエラーを修正するには、次の 2 つのオプションがあります。

1. このコマンドを実行すると、問題が一括して自動的に修正されます。

npx @salesforce-ux/slds-linter@latest lint --fix

2. SLDS Linter が提供する推奨事項に基づいて、コードを手動で修正します。

npx @salesforce-ux/slds-linter@latest lint


エラーが出てなければ修正対象無いので実行しても関係なし。

別のやり方

SLDS Validator を使用してコードを分析する方法はSLDS Linterのやり方とは別の方法として用意されたものとのこと。片方だけ覚えておけば大丈夫そう。

SLDS 2 は既存のカスタマイズに影響するか

基本は影響無し。


古いBEM構文の件はヒットするもの出てきそう。


困ったときの問い合わせはSalesforceヘルプではなくコミュニティサイトの方になります。

その他重要そうな話

SLDS2のダークモード

まだベーダ版ですが、ダークモードが用意されているそうです。


SLDS2のみサポートされ、次のようなメリットがあるとのこと。

・暗い場所での目の疲れを軽減します
・まぶしさとブルーライトの露出を軽減
・視力の弱いユーザーの読みやすさを向上


ダークモードの有効化はテーマとブランディングの設定の中にチェックボックスがあるらしいです。


ただ、検証環境で確認したときには特に見当たりませんでした。


また、テーマとブランディングの設定で有効化したあとも、各ユーザーがどちらを利用するかはプロフィールアイコンのメニューから選択できるみたいです。(設定画面)


将来的にはそういう機能が追加されるということで覚えておくくらいで良さそうです。

ダークモードを有効にできる組織について

上の情報確認後のTrailheadモジュールでダークモードが試せる専用Developer Edtion組織があることがわかりました。


有効化してみた結果です。


Lighnting Web コンポーネントのダークモード対応

これがダークモード未対応のLWCの画面です。


対象LWCのコードです。


まずは修正点のチェックを行います。

npx @salesforce-ux/slds-linter@latest lint


2エラー1警告という結果がでました。


修正処理を実行します。

npx @salesforce-ux/slds-linter@latest lint --fix


これでHTMLが修正されました。classの「slds-p-around_medium」部分が修正された結果です。


CSSの部分は自動修正されなかったので直接更新。


修正結果です。ダークモードに対応したLWCに修正する手順を確認できました。

まとめ

Salesforce Lightning Design System 2についてはこのような感じでした。テーマとブランド設定からの有効化ということで一部ユーザーにお試し有効化という使い方はできなそうです。将来的にはSLDS1から2への移行が求められると思うので準備を整えて行く必要はありそうでした。

Salesforce Help

SFDC:Agentforce DX を使用したエージェントを作成を試してみました

TrailheadのAgentforce DX を使用したエージェントを作成を試してみました。

Create an Agent with Agentforce DX Tools


さっそくですが、このDramforce2025でまた新しい作成エクスペリエンスが発表されたとのことで、もっと作りやすい環境が登場しているみたいです。今回はこういうやり方もあったというくらいでの学習となりそうです。


まずはAgentforceが使えるDeveloper Edtionの作成。(最近、作成処理を開始してから利用可能になるまでけっこう時間がかかるようになった気がします。)


組織の用意ができたらEinstein と Agentforce を有効化します。

VSCodeで開発環境を設定する

Salesforce CLIを使える状態を用意してSalesforce DX プロジェクトを作成。


プロジェクト作成後はSalesforce組織の接続。

エージェントコマンドを表示する

Salesforce CLIでは「agent」コマンドが利用できます。sf searchコマンドを使うと利用可能なコマンドをチェックできます。


「sf agent generate agent-spec -h」というように -h をつけるとコマンドの詳細が確認できます。

エージェント仕様を生成する

次のコマンドで生成できます。

sf agent generate agent-spec


処理を進めるとagentSpec.yamlファイルが作成されます。specsフォルダの中に格納されています。

エージェントを作成する

次のコマンドで生成します。

sf agent create --spec specs/agentSpec.yaml --name "Resort Manager"

ここでエラー。「Failed to create agent: Error generating agent definition. No topic drafts found or generated to build agent with type Customer」


一つ、Agentforce エージェント設定ページで、「Agentforce (デフォルト) エージェントを有効化」をONにするのを忘れていたのがわかったのでこのタイミングでONにしました。


検索すると同様のエラーに関する情報が見つかりました。

https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D5KX00000bFGWG


topicsのところを手で直すというのが結論っぽい。以下で動きました。

agentType: customer
companyName: Coral Cloud Resorts
companyDescription: Coral Cloud Resorts provides customers with exceptional
  destination activities, unforgettable experiences, and reservation services,
  all backed by a commitment to top-notch customer service.
role: The resort manager fields customer complaints, manages employee schedules,
  and generally makes sure everything is working smoothly.
maxNumOfTopics: 5
enrichLogs: false
tone: casual
topics:
  - name: Employee Schedule Management
    description: Manage and optimize employee schedules.



これで以下のようなファイル作成されていることを確認できます。


プレビューコマンドも実行してみました。

sf agent create --spec specs/agentSpec.yaml --name "Resort Manager" --preview


Resort_Manager_Preview_2025-12-07T08-34-11.160Z.jsonファイルが生成されてエージェント情報を参照できました。

Developer Edition 組織の Agentforce Builder UI でエージェントを開く

オープンコマンドがあります。これをつかえばすぐにそのエージェントの設定画面にアクセスできます。

sf org open agent --api-name Resort_Manager


設定ページに存在していることを確認できます。勝手に有効化はされていないみたいです。

SFDC:Agentforceの見積エージェント構築を試してみました

TrailheadのAgentforceの見積エージェント構築を試してみました。これはRevenu Cloudで使える機能の一つとのことです。

Build an Agent to Generate Quotes Quickly and Easily


Agentforceを動かすための専用のDeveloper Edtionが用意されているのでそこから環境を作成します。


組織を有効化すると、Developer Edtion組織の作成とあわせてOmnistudio メタデータの有効化まで実施されました。


ログイン後の画面は次のとおり。

見積エージェントのサポート機能を有効にする

Salesforce 価格設定

Salesforce 価格設定のメニューを選択。価格設定データを同期ボタンをクリックして同期処理を動かします。


Einstein 設定の有効化

設定メニューから有効化を行います。ただ、この環境では最初から有効化されてました。


Sales Emailを有効にします。

Einstein for Sales の画面から有効化。

Agentforce有効化

Agentforce エージェントの設定画面から有効化を実施。


見積エージェントを作成する

Agentforce エージェント画面の新しいエージェントの作成ボタンをクリック。


テンプレートから作成→Agentforce Employee Agent→次へボタン。


エージェントのトピックを選択。(トピックは、エージェントが実行できるジョブ。)


エージェントをカスタマイズ。


データソースを選択 (省略可能)はそのまま次へ。作成ボタンをクリックして作成します。


トピックを追加します。トピックの追加は有効化前に行う必要があるとのこと。今回はQuote Managementのトピックを追加する形。(アセットライブラリから追加します。)



トピックの追加ができたら右上の有効化ボタンから有効化します。以下の警告メッセージが表示されますが、無視できます。

設定の問題が検出されました
このエージェントの設定に、その動作に影響する可能性がある問題があります:

・Data Cloud が有効になっていません。
・権限セットが割り当てられていません。
・接続済みのチャネルがありません。
・Slack に接続されていません
・会話エスカレーションフローがありません。

エージェントをテストする

右側の会話プレビューでテストします。


(EdgeMX 取引先のオフィスアップグレード商談に Laptop Basic Bundle 2 個分の見積を作成してください。) と英語で入力。


Please show me the quote.と入力すると作成されたレコードのリンクが表示されます。
※会話プレビューでもデータの作成まで動くようなので本番環境では要注意っぽい。

営業担当にエージェントへのアクセス権を付与する

権限セットを作成します。


エージェントアクセスを選択して今作成したエージェントを割り当てます。


権限セットをユーザーに割り当てます。

Revenre Cloudアプリケーションで利用

まずは設定画面から通常のアプリケーションに移動します。


取引先ページにアクセスします。


画面右上のアストロアイコンがAgentforceの機能のアクセスです。表示されてなかったら画面リフレッシュすれば出てきます。それでも駄目なら権限セットの割り当て漏れとかかも。


以下のように会話。


商談ページにアクセスすると見積作成されていることを確認できます。


見積のページにアクセスしてメール送信アクションを呼び出します。


Salesforceを介して送信を選択。



宛先と件名を設定。Rose Gonzalezは日本語ユーザーではGonzalez Roseとなるので注意。


Einsteinを使用してドラフトを作成ボタンをクリック。このボタンが出てなければSales Emailの有効化ができているかチェック。(やったときに有効化の作業が漏れていて最初出てこなかった。)


Einsteinメールの送信結果。ちゃんと動きました。

Trailheadチャレンジ

次のエラーが表示されました。

組織で Einstein 機能が有効になっていません。Einstein の切り替えがオンになっていることを確認してから、もう一度お試しください。


デフォルトでONになっていたので、一度オフ→再度オンの操作をやったら解決しました。


Agentforceの見積エージェント構築はこんな感じで簡単に設定できました。Sales Cloud + Revenu Cloudで実現できる仕組みのようです。

SFDC:Agentforce Vibes IDEを試してみました

Agentforce Vibes IDEを試してみました。

Get Started | Agentforce Vibes IDE | Salesforce Developers


設定メニューから有効化することで該当の組織で利用可能になるとのこと。


利用可能なエディションは以下となるそうです。

  • Enterprise Edition
  • Performance Edition
  • Professional Edition (with API Access add-on)
  • Unlimited Edition


ライセンス割り当てで利用できるようになるとのことで、Enterprise Edtionの場合は40ライセンスが利用可能になるようです。

Agentforce Vibes IDE は、ユーザーベースのライセンスを通じてアクセスされ、Identity ライセンスまたは無料の限定アクセス ライセンスで動作します。

Trailheadでハンズオン

Trailheadで専用のDeveloper Edtionを作成する形で試せるようです。

Build Your Development Environment with Agentforce Vibes


設定メニューでAgentforceと検索すると目当てのものが確認できます。

Agentforce バイブス


Agentforce バイブス拡張機能


Agentforce バイブスの方であればローカルに環境構築せずに利用できるようになっていました。

ESLintなどもインストールできるようです。


メニューバーのコーディーのアイコンをクリックするとAgentforceの同意チェックのページにアクセスできます。


これで利用準備完了なのですが、エラーメッセージが表示されてしまいました。


以下はエラーメッセージです。

「We couldn't access Agentforce Vibes. Open an issue and we'll get you the help you need.」


調べてみても原因がみつからず困っていたのですが、設定画面をみたところ、有効化のつもりで押したボタンがONのときに機能を無効化にするボタンだったことがわかりました。


これで利用可能な状態になりました。

Agentforce Vides IDEのお試し操作

デフォルトで用意されたサンプルアプリは合計値が未定義の状態。


ここから先、実際に動かしてみたのですが、まだ慣れないせいかなんか動いた感しかしませんでした。とりあえずTrailheadの記載の内容のとおりに操作を行うとLWCとApexに変更が加えられて未定義の結果のところに値が入ることを確認できました。


一応変更の差分の表示や実際に保存するかは操作できるのですが、変更見逃しで意図せず更新的なことが発生しやすそうな印象でした。とりあえずもっと試してどのような挙動になるか慣れていく必要がありそうです。

SFDC:Data Cloudの新しいブランド名「Data 360」

Data Cloudが2025年10月14日にData 360という名称に変更されたそうです。


2025年10月14日をもって、Data CloudはData 360にブランド名が変更されました。この移行期間中、アプリケーションおよびドキュメントにData Cloudへの言及が含まれる場合があります。名称は変更されますが、機能とコンテンツに変更はありません。


Trailheadのコンテンツも名称が変更されはじめていました。


ちょうど10月くらいにData Cloudのことを少し勉強したけどそのあたりで名前変わっていたみたいで、設定ページとかでは全然気づけませんでした。