0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】Canvasフレームワークはなぜ実務で使われないのか?

0
Posted at

Canvasフレームワークとは?

Canvas(キャンバス)フレームワークとは、既存の外部WebアプリケーションをSalesforceのUI内にシームレスに埋め込むための統合フレームワークです。

外部アプリをiframe内でSalesforce画面に表示しながら、Canvas SDK(JavaScript) を通じてSalesforceのデータや認証情報と双方向通信が可能になります。

仕組み:署名付きリクエスト(Signed Request)

Canvasの認証は「署名付きリクエスト」方式が代表的です。

① ユーザーがSalesforceにログイン
       ↓
② SalesforceがユーザーセッションをHMAC-SHA256で署名
       ↓
③ 署名済みPOSTリクエストを外部アプリに送信
       ↓
④ 外部アプリが署名を検証 → 再認証なしでアクセス可能

公式引用
"Canvas enables you to easily integrate a third-party application within Salesforce. Instead of requiring users to navigate to a separate web application, you can display the application within the Salesforce environment."

引用元:Salesforce Developer Docs - Canvas Framework


Canvasフレームワークのメリット

メリット 内容
既存アプリの再利用 外部Webアプリを作り直すことなくSalesforce内に組み込める
SSO(シングルサインオン) 署名付きリクエストでSalesforceログインと認証を統合できる
ユーザー体験の統一 Salesforceの画面を離れずに外部アプリを操作できる
Canvas SDKによる双方向通信 Salesforceのレコード情報取得・更新が外部アプリから可能
最小限の改修 外部アプリにCanvas SDKを追加するだけで連携が成立する

外部アプリとの統合実務では、LWCやAPI連携がCanvasより採用される理由

これが本記事の核心です。Canvasフレームワークは機能的には有効ですが、実務プロジェクトではほとんど採用されません。その理由を技術・運用・組織の観点から整理します。

理由① Lightning ExperienceにおけるiframeのCSP制限

SalesforceのLightning ExperienceはデフォルトでCSP(コンテンツセキュリティポリシー)が厳格に適用されており、iframe埋め込みに対して制約があります。

"Salesforce uses a stringent Content Security Policy (CSP) to prevent cross-site scripting (XSS) attacks. Some Canvas apps may not render correctly in Lightning Experience if the third-party app doesn't meet CSP requirements."

引用元:Salesforce Help - Considerations for Canvas Apps in Lightning Experience

特にサードパーティのスクリプトや外部リソースを多用するアプリでは、CSPエラーが頻発し、対応コストが増大します。

理由② モバイルSalesforce・Salesforce1との互換性問題

CanvasアプリはモバイルのSalesforceアプリでの表示に制限があります。
LWCはモバイル対応が標準で組み込まれており、レスポンシブデザインにも対応しています。

理由③ デバッグ・保守のコスト増大

iframeを介した通信はブラウザの開発者ツールでのデバッグが困難です。
特に以下のケースで保守コストが大幅に上昇します。

  • 外部アプリ側のライブラリ更新時にCanvas SDKとの互換性が崩れる
  • クロスオリジン通信のエラーが発生した際のトレースが困難
  • Salesforce側のリリースで挙動が変わった場合の影響範囲が広い

理由④ LWCが「Salesforceの現代標準」として確立されている

Salesforceは2019年以降、LWC(Lightning Web Components)を公式の推奨開発標準として強力に推進しています。

観点 Canvas LWC
Salesforceロードマップ 現状維持(積極投資なし) 継続的に機能強化中
パフォーマンス iframeオーバーヘッドあり ネイティブ描画で高速
UI一貫性 外部アプリのUIをそのまま表示 Salesforce Lightning Designに準拠
テスト容易性 困難 Jest等での単体テストが容易
開発者採用コスト Canvas SDK習得が必要 広くドキュメント・コミュニティが充実

理由⑤ REST API / GraphQL APIで「データ連携」は完結する

外部アプリとのデータ連携が目的であれば、Canvasを使わずとも以下の方法で対応できます。

外部アプリ ←→ Salesforce REST API(CRUD操作)
外部アプリ ←→ Salesforce GraphQL API(柔軟なクエリ)
外部アプリ ←→ Platform Events(リアルタイム連携)

SalesforceのデータをGUIに表示したい → LWCで標準コンポーネントを活用
外部アプリにSalesforceデータを渡したい → REST APIで連携

Canvasはこの両方を「iframeと署名」で解決しようとしますが、
実務では目的に応じた専用技術を組み合わせる方が保守性・拡張性ともに優れています


Canvasフレームワークを実装した方が良い判断軸

「それでもCanvasを使うべき場面はあるのか?」という問いへの答えをフローチャートで整理します。

判断まとめ

条件 推奨アプローチ
新規開発・大幅改修が可能 LWC + REST API
既存アプリ再利用 + SSO要件 + デスクトップのみ Canvas(署名付きリクエスト)
既存アプリ再利用 + モバイル対応必要 LWC + API連携
JavaScript追加不可 認証プロバイダー + OAuth

まとめ

Canvasフレームワークは「既存の外部WebアプリをSalesforceに最小改修で組み込む」という特定の要件においては有効な手段です。

しかし実務で採用されにくい理由は明確です。

  1. CSP・Lightning制約によるiframeの表示問題
  2. モバイル非対応による適用範囲の限定
  3. 保守・デバッグコストの高さ
  4. LWCがSalesforceの現代標準として確立されている
  5. REST APIで多くのユースケースが代替可能

実際の統合プロジェクトでは、目的ごとに最適な技術を選択することが重要です。
「Canvasが使えるか」ではなく「Canvasである必要があるか」という問いを起点に判断することで、保守性・拡張性の高いアーキテクチャを選択できます。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?