Dancing with Heroku AppLink / 1

(まずはよくありそうなパターンでも)

構成の概要

Heroku AppLinkの活用例として、こんな構成を試しているところ。

  • HerokuとSalesforceを組み合わせて上のようなWebシステムを構築してる。
    • HerokuはFrontend(Next.js)とBackend(Medusa.js)を使ってアプリケーションを作成している。
    • Salesforceで作成したデータをHeroku Backendに連携する。BackendのAPIを外部サービスとしてSalesforceに登録しておいて、SalesforceからはFlowを使って連携する。
    • Fronendから送信されたデータは、Backendを介してSalesforceに連携する。Heroku AppLinkを使ってSalesforceへのアクセストークンを取得してSalesforceにデータを書き込む。

構成としては、よくありそうなパターンではなかろうか。

しかし、Heroku BackendにAppLinkを組み込むことで、BackendとSalesforceの実装工数を削減できるし、セキュアな連携を実現できて大変ありがたいのである。
活用ポイントとしては、Heroku BackendとSalesforceの連携が主なところになる。Heroku Backend側の内部についてもう少し細かく見てみよう。


Heroku Backendの中身をもう少し

Heroku AppLinkをaddonとして追加したアプリケーションにはServiceMeshビルドパックを組み込んで、アプリケーション起動時にServiceMeshも起動するように、とドキュメントで明記されている。
(↓こんな感じのProcfileにしよう、と。)

web: APP_PORT=3000 heroku-applink-service-mesh npm start

そうすると、Heroku Routerとアプリケーションの間にServiceMeshが入り込んで、アプリケーションへのリクエスト内容を検証してリクエストヘッダに情報を付加してアプリケーションに流す、といったことをしてくれる。(赤線)

Salesforceからリクエストを投げる際にはリクエストヘッダにアクセストークンなどの情報を暗号化して付与する。それをServiceMesh内で検証して問題なければアプリケーションにリレーする。
検証に失敗すると、Heroku Routerにエラーを返すという具合だ。

従って、アプリケーション側としては、受けとったリクエストがSalesforceからのリクエストかどうか判定するといった防御機能が不要になる。
(ServiceMeshがそこを担保してくれるため)

一方、Salesforce以外のWebアプリケーションからもアクセスしたい場合がある。そういったWebアプリケーションからのリクエストには、当然Salesforceが付与するような情報はないので、そのままではエラーとなってしまう。この場合は(青線)のように「認証とかその他諸々」はスキップして欲しいのである。

実はServiceMeshには、特定のURLパターンへのアクセスであれば「認証とかその他諸々」をバイパスする、という設定を付け足すことができる。[Dig into the Heroku AppLink (not a deep dive) - サービスメッシュについて]
その設定を施すことで、外部アプリケーションからのリクエストも通せるようになるのだ。
(この設定はありがたいが、バイパスする際のリスクは許容できることを確認しましょう)


冒頭の図だと大雑把なので、もう一段詳細なレベルで見てみると、例えばこんな感じに連携できる。

Salesforceが絡むことがないリクエストも、Salesforceが絡むリクエストも実現することは可能である。
Salesforceからも安心して連携できるし、外部とのやりとりも対応できるということで「こういうのでいいんだよ こういうので」という気分になる。

さいごに

別にHeroku AppLinkを使わなくたって構築することは可能だろうが、色々と考慮しなければならないことも多くなるし、それに伴って実装工数も増えるし...と、使わないことのメリットというのはあまりない...と感じる今日この頃。

上記以外にも使い道はあると思うので、ぜひ色々試してみて共有して頂けると大変嬉しいです。

Read more

Agentforce

文字起こしエージェントアクションの追加(Summer'26)

エージェントアクションにWhisper V3 Turbo (Whisper Large V3 Turboと思われる)による文字起こし機能が追加。6/22週から利用可能。 * Whisperはセルフホストっぽい。 * 5MB未満 * 話者識別やタイムスタンプはない。 電話音声だと帯域狭いから、適切な前処理すれば50分ぐらいいけるかも。MP3 64Kbpsだと10分ほどの計算になる。 Choose a Transcription Model for the Speech to Text Agent Action Use the Transcription Model parameter on the Speech to Text action to control which model converts audio to text. Choose the model

By Hiroki Matsumoto

Salesforce

Multi-FrameworkでReactAppを(内部向けアプリ)

あれ、もうGAになったのかな? 前に外部向け(Experience Cloud)のReact Appを作成してみたので、今度は内部向けも試してみる。今回はSandbox環境にデプロイして動かせるのか試してみよう。 内部向けのsfdxプロジェクトを作成 今回は --template に reactinternalapp を指定する $ sf template generate project --name wkInReactApp --template reactinternalapp npmパッケージのインストール&ビルド READMEにある通りに、作成したプロジェクトのルートディレクトリで、以下を実行する $ npm install $ npm run sf-project-setup > @salesforce/ui-bundle-template-base-sfdx-project@1.135.0 sf-project-setup >

By Takahiro Yonei

Salesforce

Multi-FrameworkでReactAppを(外部向けアプリ)

拝啓 もうすぐGAでしょうか... Salesforce Mult-Framework を使用した React による UI 開発 SalesforceでReactアプリを動かせるようになるということで試してみた備忘録を記録してみます。 以下、ご参考 GitHub - trailheadapps/multiframework-recipes: A collection of easy-to-digest code examples for React on Salesforce PlatformA collection of easy-to-digest code examples for React on Salesforce Platform - trailheadapps/multiframework-recipesGitHubtrailheadapps 公式ドキュメント -> Integrate Your React

By Takahiro Yonei