進化が止まらない!10分で分かるCanvasやストリーミングAPIの最新状況

こんにちは。 金木犀の香りに秋の深まりを感じる今日この頃、皆様いかがお過ごしでしょうか。 2014年も残すところあと3ヶ月となり、月日の流れの早さには驚くばかりです。

前回まではこちらの場をお借りし、Salesforce の新しい機能を中心に、知っておいたら使えそうなものをピックアップしてご紹介してきました。 生後間もない機能の場合には、正直利用シーンが相当限られるかな、というものもありました。 しかし、歳月が流れ Salesforce がアップグレードを重ねるにつれ、生まれたての機能は着実な進化を遂げました。

今回は今までご紹介した記事につきまして、最新の状況をまとめてお伝えしたいと思います。

ストリーミング API

2013年5月に ストリーミング API についてご紹介しました。 当時としては画期的な機能であるものの、制限が厳しいため利用シーンは相当慎重に検討しなければいけないものでした。

Long polling 方式はサーバ側に負荷が掛かることは想像に難くないため、仕方ない部分と思っていましたが、アップグレードの度に制限は緩和されました。

制限の緩和

Performance Edition(PE) および Unlimited Edition(UE)、Enterprise Edition(EE)ごとに制限が大幅に緩和されています。一覧で見てみましょう。

説明 PEおよびUE EE その他
組織あたりのトピック (PushTopic レコード) の最大数 20→100 20→50 20→40
トピックあたりのクライアント (登録者) の最大数 20→2,000 20→1,000 10→20
全トピックの同時クライアント (登録者) の最大数 20→2,000 20→1,000 10→20
1 日あたりのイベントの最大数 (24 時間) 20,000→1,000,000 20,000→200,000 10,000→50,000(無料組織は1,000→10,000)
接続中のソケットタイムアウト (CometD セッション) 110 秒
接続成功後の再接続までのタイムアウト (keepalive) 40 秒
PushTopic レコードのQuery 項目でのSOQL クエリの最大長 1300 文字
PushTopic 名の最大長 25 文字

厳しい制限であった「トピックあたりのクライアント (登録者) の最大数」と「全トピックの同時クライアント (登録者) の最大数」、「1 日あたりのイベントの最大数 (24 時間)」が劇的に緩和されましたね。

機能追加

そのほかにも、幾つか機能も追加されています。

  • ■ チャネル登録時の絞込み条件設定 論理 AND または OR 演算子を含む式を Subscribe 時の登録 URL に追加することができます。PushTopic クエリで全体の絞込みは行い、個々の Visualforce ページで Subscribe を行う際に追加の絞込み条件をつけることができます。 e.g. /topic/myChannel?Company=='Acme'&&City=='Timbuktu'
  • ■ Force.com Canvas との連動 キャンバスアプリケーションがストリーミング API からの通知を受け取ることができるようになりました。
  • ■ 汎用ストリーミング 現時点ではパイロットですが、Salesforce のデータの変更とは関連付かないイベントの通知を、ストリーミング API チャネルで送信できるようです。試してみたい方は有効化を salesforce 社に依頼しましょう。

Force.com Canvas

2013年7月に Force.com Canvas についてご紹介しました。 当時から今後の可能性を強く感じる機能でしたが、さらに劇的な進化を遂げています。

キャンバスアプリケーションの表示場所

前回記事では Chatter タブとVisualforce ページでのみ、キャンバスアプリケーションを表示できました。 ところが現在では、6箇所も表示できる場所が追加されています。

  • ■ Chatterのタブ アプリケーションナビゲーションリスト
  • ■ Visualforce ページ
  • ■ ページレイアウトまたはモバイルカード 標準/カスタムオブジェクトのページレイアウトによりレコード詳細ページまたは Salesforce1 のモバイルカードに表示
  • ■ Chatter フィード
  • ■ Salesforce1 のナビゲーションメニューからアクセス
  • ■ パブリッシャー
  • ■ Salesforce コンソールのフッターまたはサイドバー
  • ■ Open CTI の通話制御ツール

インストールしたキャンバスアプリケーションの表示場所は、接続アプリケーションの [場所] 項目で設定します。 表示場所が広がったことに伴い、Force.com Canvas SDK が提供するコンテキストオブジェクトに、上記の呼び出し元の種別や、表示されるオブジェクト情報などを取得できるオブジェクトおよび項目が追加されています。どこから呼ばれているかによって、動作や表示を変える必要があるキャンバスアプリケーションの実装で利用できますね。 また、モバイルデバイスから利用する際には、デバイスの方向変更を検知するイベントである orientation が利用可能になっています。

認証の拡張

認証関連につきましても、拡張が行われています。

  • ■ 署名付き要求のオンデマンドでの要求 キャンバスアプリケーションから、署名付き要求の再送信や、新しい署名付き要求を随時 Salesforce に送信可能になりました
  • ■ 署名付き要求キャンバスアプリケーションのユーザ承認 従来の OAuth 認証時のみならず、署名付き要求を利用するキャンバスアプリケーションでも、ユーザがアプリケーションを承認可能になりました
  • ■ キャンバスアプリケーションの SAML シングルサインオン 署名付き要求と OAuth 認証のどちらを利用する場合でも、SAML ベースの SSO が利用することができるようになりました

その他の機能追加

Force.com Canvas 自体にも幾つかの機能追加がされています。

  • ■ ストリーミング API 通知の受信 キャンバスアプリケーションでイベントを作成してストリーミング API のチャネルに関連付け、Subscribe を行うことにより、ストリーミング API からの通知をキャンバスアプリケーションが受信できるようになりました。
  • ■ キャンバスアプリケーションと Visualforce ページ間でのイベントの使用 以前は同一 Visualforce ページ内のキャンバスアプリケーション間でイベントによるコミュニケーションが可能でしたが、キャンバスアプリケーションと親 Visualforce ページの間でもイベントが使用可能となりました
  • ■ アプリケーションライフサイクルのカスタマイズ なんのことだ?となりそうですが(汗) カスタム Apex クラスで Canvas 名前空間の CanvasLifecycleHandler インターフェースを実装することで、キャンバスアプリケーションに送信されるコンテキスト情報を制御し、アプリケーションが表示されるときのカスタム動作を追加できます。 たとえば、リクエストに含まれていない特定情報の追加や削除を動的に行う、などの使い方ができそうですね。
  • ■ レコード詳細データ添付 <apex:canvasApp> コンポーネントの entityFields にオブジェクト項目名を指定することで、関連付けられているレコードのデータをキャンバスアプリケーションに返すことができます。項目はカンマ区切りで指定し、無指定の場合は Id のみ、 * を指定すれば全項目が対象となります。 ページレイアウト中に表示しているときなどで、有効に利用できそうですね。
  • ■ Force.com Canvas SDK のデバッグモード デバッグモードを有効にしてトラブルシューティングがしやすくなりました。コンソールで Sfdc.canvas.console.enable(); と入力することでデバッグモードになります。

設定関連

Force.com Canvas 関連の設定でも幾つか進化したポイントがあります。

  • ■ [API の有効化] が不要 キャンバスアプリケーションの実行にプロファイルの [API の有効化] が不要になりました
  • ■ カスタムアイコン Salesforce1 ナビゲーションメニューでのカスタムアイコンが指定できるようになりました。60 x 60 ピクセル以下の画像を指定しましょう
  • ■ パブリッシャーのヘッダーと[共有]ボタンの表示/非表示設定 パブリッシャーでヘッダー(「今何をしていますか?」と表示されるテキストボックス)と [共有] ボタンの表示/非表示設定が可能になりました

本当に盛りだくさんですね。 重点的に強化されていることがよく分かります。

契約・注文

2014年7月に Place Order REST API と契約・注文オブジェクト構成 についてご紹介しました。 こちらもオブジェクトの関連が追加されました。

契約・注文v2

青い太い関連が追加されたものです。契約・注文・商談・見積がそれぞれ直接の関連を持つようになりましたね。 また、パイロットですが、商談または見積から注文を生成する機能がリリースされています。 検証してみたい方は、有効化を salesforce 社に依頼しましょう。

SalesforceA

2014年2月に Salesforce# と SalesforceAについてご紹介しました。 SalesforceA も進化しています。

  • ■ ナビゲーションメニューの追加 各 SalesforceA 機能にアクセスしやすくするナビゲーションメニューが画面左上隅に [三] マークで追加されました
  • ■ ユーザレコードへのアクセス SalesforceA ホーム画面から、自身のユーザ名をタップして、ユーザ詳細画面を開けるようになりました
  • ■ システム状況の表示
  • ■ 複数アカウントの切り替え 複数組織アカウントをログイン/ログアウトをし直さなくても切り替えられるようになります

Force.com IDE

2013年10月に Force.com 開発環境 についてご紹介しました。 この当時と異なり、Force.com IDE では Java7 が利用可能となり、 Eclipse も 4.3 "Kepler" がサポートされています。 私個人的には、Force.com IDE よりも 弊社加藤の 記事1 記事2で紹介された Sublime Text を愛用していますが、Meta データを操作したい時など、時々 Force.com IDE も利用します。

止まらない進化

比較的ライトな記事で今回は終わらせようとしたのですが、改めて各機能の進化を洗い出してみると、結構なボリュームになってしまいました。 (10分で読みきれたか少々心配です) Salesforce は今回ご紹介した内容に限らず、アップグレードごとに猛烈なスピードで進化を続けています。最近のリリースノートは350ページを超えるほどで、キャッチアップも容易ではなくなっています。 我々も進化の歩みを止めることなく、日々精進を積み重ねて行きましょう!