SlideShare a Scribd company logo
1 of 14
Download to read offline
Streaming API で実現する
クラウド     イントラ連携


   株式会社マッシュマトリックス
        冨田 慎一
Streaming API
• サーバでの更新がリアルタイムにクラ
  イアントに通知される仕組み

• Spring ’12 からGA
• Bayeuxプロトコル
 -   JavaScript(dojo, faye),Java,Ruby,Pythonなどのライ
     ブラリが利用可能
何に使う?
• Salesforceは、TwitterやFacebookほど更
 新が頻繁にはない

• Chatterでも10分に一度のポーリング
 で十分なレベル

• 1分1秒は争わないことに対して開発
 コストを掛けるか?
名前にだまされない


• “Streaming” はそんなに重要じゃない
• サーバ クライアント “Push” が重要
Force.comでのその他の通知
•   HTTPアウトバウンド系

    -   アウトバウンドメッセージ (ワークフロー)、
        HTTP Callout (Apex)

•   電子メール系

    -   メールアラート(ワークフロー)、Outbound
        Email (Apex)

•   APIポーリング
Streaming API
•   Firewallの影響を受けない
    (× HTTPアウトバウンド)

    ➡   通信はHTTPを利用、接続はクライアントから

•   リアルタイムな通知
    (× 電子メール、APIポーリング)

•   サーバリソースの利用負荷が低い
    (× APIポーリング)
構成

          リクエスト           レスポンス
                                        リソース
                                        サーバ
                                       (Javascript,
                                       Java, Ruby,
         Streaming        Streaming   Python, etc...)
 リクエスト
クライアント
フロー
•   メッセージやり取り用のカスタムオブジェクトを作成

    -   リクエストメッセージとレスポンスメッセージを項目として持つ

•   リクエスト側のTopicとリソース側のTopicを用意

•   リクエストを送信する時はSオブジェクトに行を作成

•   リソース側にリクエストメッセージが通知

•   同リクエストのレスポンスとしてSオブジェクトの行を更新

•   リクエスト側にレスポンスメッセージが通知
Apexからの利用
• ResponseListenerインターフェースを実
 装したオブジェクトを登録

 -   リクエストメッセージとともにオブジェク
     トもシリアライズされる

• レスポンス到着時にトリガ経由でオブ
 ジェクトのメソッドが呼び戻される
コード例
public class LeadFaceCapture {

	   public static void startCapture(Id id) {
	   	   SecureConnect.ResponseListener listener = new LeadFaceCaptureResponseListener(id);
	   	   SecureConnect.request('capture', null, listener);
	   }
	
	   public class LeadFaceCaptureResponseListener implements SecureConnect.ResponseListener {
	   	   Id id;
	   	
	   	   public LeadFaceCaptureResponseListener(Id id) { this.id = id; }
	   	
	   	   public void onResponse(String responseCode, String responseData) {
	   	   	   if (responseCode == 'captureImage') {
	   	   	   	   String data = (String) JSON.deserialize(responseData, String.class);
	   	   	   	   Attachment attch = new Attachment();
	   	   	   	   attch.ParentId = this.id;
	   	   	   	   attch.Name = 'Captured Image';
	   	   	   	   attch.Body = EncodingUtil.base64decode(data.substring(23));
	   	   	   	   insert attch;
	   	   	   	   Lead lead = new Lead(Id=this.id);
	   	   	   	   lead.CaptureImageId__c = attch.Id;
	   	   	   	   update lead;
	   	   	   }	
	   	   }
	   	   public Type getClassType() { return LeadFaceCaptureResponseListener.class; }
	   }
}
Demo
利用例
• レコード更新   イントラ内のDBを検索
 しオンデマンドでアップデート(事前
 同期不要)

• モバイルから社内文書を検索・閲覧
• イントラ内DBとのマッシュアップ
Node-Salesforce

• Streaming APIにも対応した
  Node.jsでのSalesforceクライアントライ
  ブラリ

• github.com/stomita/node-salesforce
おわり

More Related Content

What's hot

ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalatakezoe
 
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますElixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますfukuoka.ex
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞYoshitaka Fujii
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAmazon Web Services Japan
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Tokuhiro Matsuno
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...Amazon Web Services Japan
 
Expectation for cloudSearch
Expectation for cloudSearchExpectation for cloudSearch
Expectation for cloudSearchMinoru Osuka
 
サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方Yugo Shimizu
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるTsuyoshi Seino
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますfukuoka.ex
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」fukuoka.ex
 
lua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestlua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestmosa siru
 
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep DiveAmazon Web Services Japan
 
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」fukuoka.ex
 
MSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシーMSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシーMakoto Miida
 
第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編tzm_freedom
 
Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用真司 藤本
 

What's hot (20)

ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
 
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますElixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
 
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS LambdaAWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
 
Expectation for cloudSearch
Expectation for cloudSearchExpectation for cloudSearch
Expectation for cloudSearch
 
サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方サーバーサイドボトルネックの探し方
サーバーサイドボトルネックの探し方
 
少しだけ先取りRails4.0
少しだけ先取りRails4.0少しだけ先取りRails4.0
少しだけ先取りRails4.0
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
lua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Requestlua_nginx_module JSON-RPC 2.0 Batch Request
lua_nginx_module JSON-RPC 2.0 Batch Request
 
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
 
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
 
MSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシーMSPとしてのオペチー向けReadOnly IAMポリシー
MSPとしてのオペチー向けReadOnly IAMポリシー
 
第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編第一回Web技術勉強会 efkスタック編
第一回Web技術勉強会 efkスタック編
 
Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用
 

Viewers also liked

Herokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバHerokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバShinichi Tomita
 
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭りForce.com とか @ PaaS祭り
Force.com とか @ PaaS祭りShinichi Tomita
 
Beiko gen gis2-share
Beiko gen gis2-shareBeiko gen gis2-share
Beiko gen gis2-sharebeiko
 
Innovative Technologies and Student Success
Innovative Technologies and Student SuccessInnovative Technologies and Student Success
Innovative Technologies and Student SuccessHeather Lambert
 
Blessings of knowledge
Blessings of knowledgeBlessings of knowledge
Blessings of knowledgevirtualMaryam
 
How to Survive in a Startup Accelerator as a Technical Co-Founder
How to Survive in a Startup Accelerator as a Technical Co-FounderHow to Survive in a Startup Accelerator as a Technical Co-Founder
How to Survive in a Startup Accelerator as a Technical Co-FounderJustin McCammon
 
Los bosques
Los bosquesLos bosques
Los bosquesiesMola
 
Town hall
Town hallTown hall
Town halliesMola
 
Defensa animal
Defensa animalDefensa animal
Defensa animaliesMola
 
Tell Your Story - Brian Ritchie
Tell Your Story - Brian RitchieTell Your Story - Brian Ritchie
Tell Your Story - Brian RitchieBrian Ritchie
 
Annotating with Annotations - PHPBenelux June/2012
Annotating with Annotations - PHPBenelux June/2012Annotating with Annotations - PHPBenelux June/2012
Annotating with Annotations - PHPBenelux June/2012Rafael Dohms
 
How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...
 How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ... How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...
How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...KPIT
 
Reinforce your Growth with JD Edwards EnterpriseOne 9.0
 Reinforce your Growth with JD Edwards EnterpriseOne 9.0  Reinforce your Growth with JD Edwards EnterpriseOne 9.0
Reinforce your Growth with JD Edwards EnterpriseOne 9.0 KPIT
 
Presentatie marcom12 social media strategie_hans molenaar
Presentatie marcom12 social media strategie_hans molenaarPresentatie marcom12 social media strategie_hans molenaar
Presentatie marcom12 social media strategie_hans molenaarBeeckestijn Business School
 
Efficiently handling Applications of Customer Receipts in Oracle Receivables
Efficiently handling Applications of Customer Receipts in Oracle Receivables Efficiently handling Applications of Customer Receipts in Oracle Receivables
Efficiently handling Applications of Customer Receipts in Oracle Receivables KPIT
 
Employee empowerment
Employee empowermentEmployee empowerment
Employee empowermentRahul Kantak
 
When you believe in god but don't witness
When you believe in god but don't witnessWhen you believe in god but don't witness
When you believe in god but don't witnessBrian Salisbury
 
Wolters Kluwer 2011 Full-Year Results
Wolters Kluwer 2011 Full-Year ResultsWolters Kluwer 2011 Full-Year Results
Wolters Kluwer 2011 Full-Year ResultsWolters Kluwer
 

Viewers also liked (20)

Herokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバHerokuで動かす スクリーンショットサーバ
Herokuで動かす スクリーンショットサーバ
 
Force.com とか @ PaaS祭り
Force.com とか @ PaaS祭りForce.com とか @ PaaS祭り
Force.com とか @ PaaS祭り
 
Beiko gen gis2-share
Beiko gen gis2-shareBeiko gen gis2-share
Beiko gen gis2-share
 
Parent Resource Guide
Parent Resource GuideParent Resource Guide
Parent Resource Guide
 
Innovative Technologies and Student Success
Innovative Technologies and Student SuccessInnovative Technologies and Student Success
Innovative Technologies and Student Success
 
Blessings of knowledge
Blessings of knowledgeBlessings of knowledge
Blessings of knowledge
 
How to Survive in a Startup Accelerator as a Technical Co-Founder
How to Survive in a Startup Accelerator as a Technical Co-FounderHow to Survive in a Startup Accelerator as a Technical Co-Founder
How to Survive in a Startup Accelerator as a Technical Co-Founder
 
The Power of Dua
The Power of DuaThe Power of Dua
The Power of Dua
 
Los bosques
Los bosquesLos bosques
Los bosques
 
Town hall
Town hallTown hall
Town hall
 
Defensa animal
Defensa animalDefensa animal
Defensa animal
 
Tell Your Story - Brian Ritchie
Tell Your Story - Brian RitchieTell Your Story - Brian Ritchie
Tell Your Story - Brian Ritchie
 
Annotating with Annotations - PHPBenelux June/2012
Annotating with Annotations - PHPBenelux June/2012Annotating with Annotations - PHPBenelux June/2012
Annotating with Annotations - PHPBenelux June/2012
 
How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...
 How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ... How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...
How to play Golf on the first day of Go-Live for a JD Edwards EnterpriseOne ...
 
Reinforce your Growth with JD Edwards EnterpriseOne 9.0
 Reinforce your Growth with JD Edwards EnterpriseOne 9.0  Reinforce your Growth with JD Edwards EnterpriseOne 9.0
Reinforce your Growth with JD Edwards EnterpriseOne 9.0
 
Presentatie marcom12 social media strategie_hans molenaar
Presentatie marcom12 social media strategie_hans molenaarPresentatie marcom12 social media strategie_hans molenaar
Presentatie marcom12 social media strategie_hans molenaar
 
Efficiently handling Applications of Customer Receipts in Oracle Receivables
Efficiently handling Applications of Customer Receipts in Oracle Receivables Efficiently handling Applications of Customer Receipts in Oracle Receivables
Efficiently handling Applications of Customer Receipts in Oracle Receivables
 
Employee empowerment
Employee empowermentEmployee empowerment
Employee empowerment
 
When you believe in god but don't witness
When you believe in god but don't witnessWhen you believe in god but don't witness
When you believe in god but don't witness
 
Wolters Kluwer 2011 Full-Year Results
Wolters Kluwer 2011 Full-Year ResultsWolters Kluwer 2011 Full-Year Results
Wolters Kluwer 2011 Full-Year Results
 

Similar to Streaming API で実現する クラウド ⇔ イントラ連携

Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめShuhei Aoyama
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter IntegrationKazuki Nakajima
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep diveAtsushi Fukui
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発Kazuki Nakajima
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWINYoshifumi Kawai
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Hideki Hashizume
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へDevelopers Summit
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)Takahiro Yonei
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライMasanobu Sato
 

Similar to Streaming API で実現する クラウド ⇔ イントラ連携 (20)

Ext.directことはじめ
Ext.directことはじめExt.directことはじめ
Ext.directことはじめ
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
20080524
2008052420080524
20080524
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
APIKit
APIKitAPIKit
APIKit
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
How To Drink Wsgi
How To Drink WsgiHow To Drink Wsgi
How To Drink Wsgi
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
 

More from Shinichi Tomita

SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)Shinichi Tomita
 
SalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLSalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLShinichi Tomita
 
Developing SLDS Apps with React.js
Developing SLDS Apps with React.jsDeveloping SLDS Apps with React.js
Developing SLDS Apps with React.jsShinichi Tomita
 
Spring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutSpring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutShinichi Tomita
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~Shinichi Tomita
 
Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Shinichi Tomita
 
アイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connectアイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID ConnectShinichi Tomita
 
モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)Shinichi Tomita
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)Shinichi Tomita
 
(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile ApplicationsShinichi Tomita
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用Shinichi Tomita
 
クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告Shinichi Tomita
 
Cloud-to-Intranet messaging by Force.com Streaming API
Cloud-to-Intranet messaging by Force.com Streaming APICloud-to-Intranet messaging by Force.com Streaming API
Cloud-to-Intranet messaging by Force.com Streaming APIShinichi Tomita
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Shinichi Tomita
 
Phantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuPhantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuShinichi Tomita
 
Collecting Photo Stream in Node.js on Heroku
Collecting Photo Stream in Node.js on HerokuCollecting Photo Stream in Node.js on Heroku
Collecting Photo Stream in Node.js on HerokuShinichi Tomita
 

More from Shinichi Tomita (20)

SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
SalesforceでのモダンSPA開発(Mashmatrix ”Sheet"の場合)
 
SalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAMLSalesforceからAWSへの接続 using OIDC/SAML
SalesforceからAWSへの接続 using OIDC/SAML
 
Developing SLDS Apps with React.js
Developing SLDS Apps with React.jsDeveloping SLDS Apps with React.js
Developing SLDS Apps with React.js
 
Spring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running CalloutSpring'15 Update - Named Credential & Long Running Callout
Spring'15 Update - Named Credential & Long Running Callout
 
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
スマートデバイス×HTML5で
 企業情報システムはどう変わる? ~最新動向から考えるエンタープライズWebの現在と未来~
 
Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -Summer'14 Update - What's new in Force.com Canvas -
Summer'14 Update - What's new in Force.com Canvas -
 
アイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connectアイデンティティ2.0とOAuth/OpenID Connect
アイデンティティ2.0とOAuth/OpenID Connect
 
モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)モバイルBaaSの概観と最新動向(2014版)
モバイルBaaSの概観と最新動向(2014版)
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
Salesforce1最速経路
Salesforce1最速経路Salesforce1最速経路
Salesforce1最速経路
 
モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)モバイルBaaSの概観と最新動向 (2013/6/7)
モバイルBaaSの概観と最新動向 (2013/6/7)
 
(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications(M)BaaS and Enterprise Mobile Applications
(M)BaaS and Enterprise Mobile Applications
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
 
クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告クラウド・スマートデバイス事例調査報告
クラウド・スマートデバイス事例調査報告
 
Cloud-to-Intranet messaging by Force.com Streaming API
Cloud-to-Intranet messaging by Force.com Streaming APICloud-to-Intranet messaging by Force.com Streaming API
Cloud-to-Intranet messaging by Force.com Streaming API
 
Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~Sales Force Episode VI ~ Return of Ajax Toolkit ~
Sales Force Episode VI ~ Return of Ajax Toolkit ~
 
Intro to JFDG
Intro to JFDGIntro to JFDG
Intro to JFDG
 
Phantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on HerokuPhantomjs Screenshot Server on Heroku
Phantomjs Screenshot Server on Heroku
 
Collecting Photo Stream in Node.js on Heroku
Collecting Photo Stream in Node.js on HerokuCollecting Photo Stream in Node.js on Heroku
Collecting Photo Stream in Node.js on Heroku
 
Ext js 20100526
Ext js 20100526Ext js 20100526
Ext js 20100526
 

Streaming API で実現する クラウド ⇔ イントラ連携

  • 1. Streaming API で実現する クラウド イントラ連携 株式会社マッシュマトリックス 冨田 慎一
  • 2. Streaming API • サーバでの更新がリアルタイムにクラ イアントに通知される仕組み • Spring ’12 からGA • Bayeuxプロトコル - JavaScript(dojo, faye),Java,Ruby,Pythonなどのライ ブラリが利用可能
  • 3. 何に使う? • Salesforceは、TwitterやFacebookほど更 新が頻繁にはない • Chatterでも10分に一度のポーリング で十分なレベル • 1分1秒は争わないことに対して開発 コストを掛けるか?
  • 5. Force.comでのその他の通知 • HTTPアウトバウンド系 - アウトバウンドメッセージ (ワークフロー)、 HTTP Callout (Apex) • 電子メール系 - メールアラート(ワークフロー)、Outbound Email (Apex) • APIポーリング
  • 6. Streaming API • Firewallの影響を受けない (× HTTPアウトバウンド) ➡ 通信はHTTPを利用、接続はクライアントから • リアルタイムな通知 (× 電子メール、APIポーリング) • サーバリソースの利用負荷が低い (× APIポーリング)
  • 7. 構成 リクエスト レスポンス リソース サーバ (Javascript, Java, Ruby, Streaming Streaming Python, etc...) リクエスト クライアント
  • 8. フロー • メッセージやり取り用のカスタムオブジェクトを作成 - リクエストメッセージとレスポンスメッセージを項目として持つ • リクエスト側のTopicとリソース側のTopicを用意 • リクエストを送信する時はSオブジェクトに行を作成 • リソース側にリクエストメッセージが通知 • 同リクエストのレスポンスとしてSオブジェクトの行を更新 • リクエスト側にレスポンスメッセージが通知
  • 9. Apexからの利用 • ResponseListenerインターフェースを実 装したオブジェクトを登録 - リクエストメッセージとともにオブジェク トもシリアライズされる • レスポンス到着時にトリガ経由でオブ ジェクトのメソッドが呼び戻される
  • 10. コード例 public class LeadFaceCapture { public static void startCapture(Id id) { SecureConnect.ResponseListener listener = new LeadFaceCaptureResponseListener(id); SecureConnect.request('capture', null, listener); } public class LeadFaceCaptureResponseListener implements SecureConnect.ResponseListener { Id id; public LeadFaceCaptureResponseListener(Id id) { this.id = id; } public void onResponse(String responseCode, String responseData) { if (responseCode == 'captureImage') { String data = (String) JSON.deserialize(responseData, String.class); Attachment attch = new Attachment(); attch.ParentId = this.id; attch.Name = 'Captured Image'; attch.Body = EncodingUtil.base64decode(data.substring(23)); insert attch; Lead lead = new Lead(Id=this.id); lead.CaptureImageId__c = attch.Id; update lead; } } public Type getClassType() { return LeadFaceCaptureResponseListener.class; } } }
  • 11. Demo
  • 12. 利用例 • レコード更新 イントラ内のDBを検索 しオンデマンドでアップデート(事前 同期不要) • モバイルから社内文書を検索・閲覧 • イントラ内DBとのマッシュアップ
  • 13. Node-Salesforce • Streaming APIにも対応した Node.jsでのSalesforceクライアントライ ブラリ • github.com/stomita/node-salesforce