• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Chatterを使ったカスタムソーシャル
 

Chatterを使ったカスタムソーシャル

on

  • 3,465 views

2012年12月6日 Cloudforce Japan Developer Zone内のシアターで講演された資料です。

2012年12月6日 Cloudforce Japan Developer Zone内のシアターで講演された資料です。

Statistics

Views

Total Views
3,465
Views on SlideShare
2,002
Embed Views
1,463

Actions

Likes
6
Downloads
29
Comments
0

3 Embeds 1,463

http://jp.force.com 1458
http://blogjp.sforce.com 4
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Chatterを使ったカスタムソーシャル Chatterを使ったカスタムソーシャル Presentation Transcript

    • Chatterを使ったカスタムソーシャルアプリケーション開発組織に合ったChatterにカスタマイズMasashi Tsuji, Salesforce.com, Sales Support Engineer
    • Masashi TsujiSales Support Engineer@h2z
    • Safe harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward- looking statements.
    • 自己紹介 名前: 辻 正志 会社: salesforce.com 所属: Sales Support Engineer Twitter: @h2z GitHub: htz
    • Japan Force.com Developer Group • Force.com開発者のためのユーザグループ • Facebookグループで日々開発者が情報交換 • Force.comユーザ・ハッカーのコードアーティスト達の集い • 今年6月から始まり現在まで3回のMeetupを開催 •  セッション •  ビールとピザを片手に開発者によるLT •  Force.comをdisる • Force.com Advent Calendarの作成 • GitHub上のApexのランクアップへの貢献 • 18:45からLTもありますので是非お立ち寄り下さい
    • Meetup#2の様子
    • アジェンダなぜChatterのカスタム開発が必要か?Chatterカスタム開発の現状Connect in ApexForce.com CanvasChatterカスタム開発の実例
    • なぜChatterのカスタム開発が必要か?
    • 標準で提供しているChatterのカスタマイズ • メール通知 • フィードのリッチリンクプレビュー • 承認の投稿 • 同僚/顧客を招待 • フィード追跡 • チャットの設定 • 影響度
    • Chatterの標準カスタマイズには限度がある 追加機能が欲しい 地図 デザインを会社カラーにしたい 機能を制限したい
    • Chatterカスタム開発の現状
    • Chatterカスタム開発の現状 • FeedItem/FeedCommentトリガの利用 • <chatter:*>タグの利用 • ApexからSOQLを利用 • Visualforce PageからAJAX Toolkitを利用 • ApexからREST APIの利用
    • FeedItem/FeedCommentトリガの利用 • 追加機能系 •  関連レコードの更新 •  ロギング •  投稿したフィードのユーザ/レコードをフォロー • 禁止系 •  ファイル添付付き投稿の禁止 •  NGワードの投稿禁止/マスク
    • ファイル添付付き投稿の禁止 trigger NoFilePostTrigger on FeedItem (before insert) { for (FeedItem f : Trigger.new) { if (f.Type != ContentPost) continue; f.addError(ファイル添付は禁止されています。); }}
    • 投稿したフィードのユーザ/レコードをフォロー trigger RecordFollowTrigger on FeedItem (after insert) { List<EntitySubscription> insert_es = new List<EntitySubscription>(); for (FeedItem f : Trigger.new) { insert_es.add(new EntitySubscription( ParentId = f.ParentId, SubscriberId = f.CreatedById )); } if (insert_es.size() > 0) { insert insert_es; }}// ※注意: このコードではすでにフォローがされている場合にエラーになります
    • <chatter:*>タグの利用 • 出来ること •  <chatter:newsfeed>: 自身のニュースフィードを表示 •  <chatter:feed>:フィードを表示 •  <chatter:follows>:フォロワーを表示 •  <chatter:follow>:フォローボタンを表示 •  <chatter:feedWithFollowers>:フィードをフォロワー付きで表示 • 出来きないこと •  Chatterを好きにデザインできない •  Chatterに機能追加・削減ができない •  <chatter:followings>は?
    • <chatter:newsfeed> Visualforce <apex:page> <chatter:newsfeed/></apex:page>
    • <chatter:feed> Visualforce <apex:page> <chatter:feed entityId="0061000000C39YM"/></apex:page>
    • <chatter:followers> Visualforce <apex:page> <chatter:followers entityId="0061000000C39YM" /></apex:page>
    • <chatter:followers> Visualforce <apex:page> <chatter:follow entityId="0061000000C39YM" /></apex:page>
    • <chatter:feedWithFollowers> Visualforce <apex:page> <chatter:feedWithFollowers entityId="0061000000C39YM" /></apex:page>
    • ApexからSOQLを利用 • 出来ること •  好きなデザインに(リブランディング) •  Chatterに好きな機能を追加 • 出来ないこと •  メンション投稿
    • ApexでSOQLを利用 • 『フィード項目』オブジェクト •  FeedItem • 『フィードコメント』オブジェクト •  FeedComment • 『フィード「いいね!」』オブジェクト •  FeedLike • 『フィード追跡変更』オブジェクト •  FeedTrackedChange
    • SOQLでフィード/コメント/いいねの取得例 Select Id, ParentId, Type, Body, (Select CommentType, CommentBody From FeedComments), (Select FeedEntityId From FeedLikes)From FeedItem
    • リブランディングの例
    • Visualforce PageからAJAX Toolkitを利用 • 出来ること •  好きなデザインに(リブランディング) •  Chatterに好きな機能を追加 • 出来ないこと •  メンション投稿
    • Chatterフィードの取得例 sforce.connection.query( "Select Body, CreatedBy.Name From FeedItem", { onSuccess: function (queryResult, source) { var records = queryResult.records; $(#feedTemplate).tmpl(records).appendTo(#feeds); }, onFailure: function (error, source) {} });
    • ApexからREST APIの利用 • ApexからREST APIを叩く •  Calloutなのでリモートサイトの設定でhttps://*.salesforce.comが必要 • 出来ること •  メンション投稿 • 出来ないこと •  でもHTTP Request書いたりJSONをパースしたり面倒。。。
    • デモ https://c.na1.visual.force.com/apex/cfdemo0 https://c.na1.visual.force.com/apex/cfdemo1
    • Connect in Apex
    • Connect in Apex (Pilot) • ApexからREST APIを叩くためのIFを提供 • 投稿内容にテキスト、メンション、ハッシュタグ、リンクの区別がある • HTTP Requestを書く必要ない!! • JSONをパースする必要がない •  全てオブジェクト • リモートサイトの設定が必要無い
    • Connect in Apexのオブジェクト • 『フィード項目』オブジェクト •  ConnectApi.FeedItem • 『フィードコメント』オブジェクト •  ConnectApi.Comment • 『フィード「いいね!」』オブジェクト •  ConnectApi.LinkAttachment
    • Connect in Apexのオブジェクト • 投稿内容オブジェクト •  ConnectApi.FeedBody • 投稿文書オブジェクト •  ConnectApi.MessageSegmentリストに内容が入っている §  ConnectApi.MentionSegment §  ConnectApi.HashtagSegment §  ConnectApi.LinkSegment §  ConnectApi.TextSegment
    • REST APIとConnectApiのオブジェクトは1対1 "body": {§  ConnectApi.FeedBody "text": "test #testtag http://www.salesforce.com/ @Translator", •  List<ConnectApi.MessageSegment> "messageSegments": [ { •  ConnectApi.TextSegment "type": "Text", "text": "test " }, { •  ConnectApi.HashtagSegment "type": "Hashtag", "tag": "testtag", "url": "/services/data/v26.0/chatter/feed-items?q=%23testtag", "text": "#testtag" }, { •  ConnectApi.LinkSegment "type": "Link", "url": "http://www.salesforce.com/", "text": "http://www.salesforce.com/" },
    • REST APIとConnectApiのオブジェクトは1対1(つづき) { •  ConnectApi.MentionSegment "type": "Mention", "name": "Translator", "accessible": true, "text": "@Translator", "user": { •  ConnectApi.UserSummary "type": "User“, "name": "Translator", "photo": { •  ConnectApi.Photo "largePhotoUrl": "https://c.na1.content.force.com/profilephoto/729300000008bHZ/ F", "photoVersionId": "729300000008bHZAAY", "smallPhotoUrl": "https://c.na1.content.force.com/profilephoto/729300000008bHZ/ T" }, "id": "005300000043oCVAAY", "url": "/services/data/v26.0/chatter/users/005300000043oCVAAY" } } ]
    • デモ https://c.na1.visual.force.com/apex/ConnectInApexDemo
    • Force.com Canvas
    • Force.com Canvas • Facebookアプリと同様の仕組み • Chatterタブからアプリケーションを起動 • Heroku Quick Startを使うとワイヤフレームがHeroku上に作成 Ruby (Rails) Java (Play)
    • 各種APIで連携し、どんな言語でも作成可能
    • デモ https://na14.salesforce.com/_ui/core/chatter/ui/ChatterPage
    • Chatterカスタム開発の実例
    • GE Capital
    •   トヨタフレンド