Dancing with Heroku AppLink / 2

(ローカルアプリと組み合わせる...?)

構成の概要

Heroku AppLinkの活用例として、こんな構成を試してみた。

  • 個別に作成したElectronアプリケーションがあって、そのアプリケーションはSalesforceのデータを参照したり、データを作成する。
    • Electronアプリケーションに、Salesforceのアクセストークンを持たせてアクセスできるようにしたい。
    • しかし、Electronアプリケーション内にSalesforceのアカウント情報を持たせたくないし、個別のログイン機能なんて作りたくない。
  • Electronアプリケーションに渡す情報にはSalesforce外の情報もあり、その諸々の情報をまとめるためにHerokuアプリケーションを設置した。
  • (Apexコードを書くのがやや面倒...)

といったあたりで、上のような構成を試してみた。

Heroku AppLinkの活用ポイント など

※主に②で大活躍するので、そこに絞った話をしてみよう。

まず、Heroku側の実装としては以下を前提として、Node.jsアプリケーションを構築する。

  • Heroku AppLinkをAdd onに追加する
  • Heroku AppLink Service Meshをビルドパックに追加する
  • Webアプリケーションフレームワークはお好きなもので
    • fastify, Express など

そして、Salesforceからのリクエストを受け付けるエンドポイントを実装して、Salesforceにインポート(OpenAPIに沿って記述したyamlを取り込む)する。
そうすると、動的Apexとしてインポートされるので、Flowから呼び出すことも可能になる。

Salesforceからリクエストする(②)と、Heroku Router => Service Mesh => Herokuアプリケーションという順番でリクエストが流れてくる。

Service MeshではSalesforceの認証情報が含まれているか検証して、認証情報がなければエラーとしてHeroku Routerに返す。つまり、Herokuアプリケーションまでリクエストが届かないこととなる。
したがって、認証情報を持たないリクエスト(≒ Salesforce外からのリクエスト)は除外される、ということだ。
Herokuアプリケーション側に独自の認証機構を実装せずに済むのは、非常に楽と言える。

そして、Herokuアプリケーションは③の時点では、Salesforceの認証情報を持っている状態でゴニョゴニョできる。
Salesforceの認証情報のほかに、必要な情報をペイロードに持たせてJWTを返す、みたいなことも可能になる。

その他

⑤では、Electronアプリケーションを起動するためのディープリンクを返すのだが、Electronアプリケーションに登録したカスタムスキームを指定して数式項目やSalesforceが用意するタグを使用することはできない。
※Salesforceでは外部アプリケーションを起動するスキームとして https, mailtoといった標準的なものだけに限定している。

VisualforceページもしくはLightning Web Componentを作って、<a>タグで埋め込む必要がある。

Read more

heroku

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の実装工数を削減で

By Takahiro Yonei

Dancing with Heroku vibes / 2

heroku vibesの画面操作を見るに、プロンプトを入力しつつ1つのherokuアプリを自動生成していくように見える。 1つのアプリで完結するようなものであれば、それでも良さそうに思える。 しかし、複数のherokuアプリを組み合わせてシステムを構築することもあるので、その場合はどうサポートしてくれるだろうか? プログラマの視点からすると、アプリの自動生成については...あまり優位性が見出せない。 pipelineを使いたいとかgithubとの連携とかあるので、自分でやった方が良いかなぁと思う。その辺りはむしろheroku MCPサーバの方がやりやすいかもしれない。 ボンヤリとしたアイディアから、構成や使用するadd onをいい感じに提案してくれる壁打ち相手として使えそうだろうか?と思う。 プログラマでない人からすれば、herokuアプリを自動生成してくれるのは助かる場面はありそうだ。 ただの想像だけど、salesforceを拡張する機能としてheroku applinkを使ったherokuアプリを自動生成する...みたいな場面であれば、プログラマでない人には有益かもしれない

By Takahiro Yonei