0
Session 3-2
Force.comとモバイルでイベント管理実例
株式会社セールスフォース・ドットコム
#forcedotcomjp
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presenta...
イベント用モバイルアプリケーションはこちら
http://bit.ly/devconapp
※本アプリケーションはイベント会場内での利用を想定したものであり、イベント会場外や終了後の利用は出来ませんのでご注意下さい。
※iOS版ではインストール...
#forcedotcomjp
Speakers
岡本 充洋
ディベロッパプログラム
マネージャ
@mitsuhiro
高地 範弘
アジャイルビジネス合同会社
代表
@takachino
#forcedotcomjp
Developer Force Japanを是非フォロー下さい
Developer Force Japan
+Developer Force Japan
DeveloperForce Japan
@develope...
#forcedotcomjp
今回のイベント管理のテーマ
#forcedotcomjp
Salesforce.comのイベントで良く頂くご質問
§  何故自社プラットフォームを登録サイトで使わない?
‒  パートナーさんのソリューション
§  簡単にクラウドアプリ、モバイルアプリ作れると聞いた
‒...
#forcedotcomjp
イベント管理をSalesforce Platformで
§  Salesforce Platformで以下を実現する
1.  イベントランディングページ & 登録ページ
2.  登録確認、受講票発行等の各種メール...
プラットフォームの活用
#forcedotcomjp
イベント管理システムの概要
登録Webサイト
Force.com Sites
a. セッション
& ユーザ登録
b. アカウント、
受講票発行
c. ログイン
§  登録者情報管理
§  参加セッション情報
§...
#forcedotcomjp
イベント管理システム ‒ データモデル
イベント
セッション
セッション参加
取引先責任者
#forcedotcomjp
イベント管理システム ‒ データモデル
サーベイ回答者
質問回答
サーベイ質問
サーベイ
取引先責任者
#forcedotcomjp
イベント管理システム ‒ データモデル
ランキング 取引先責任者
ミッションサマリ
ミッション実施
ミッション
#forcedotcomjp
鉄則 : うまくForce.comの機能を使う
登録サイト(Anonymous User)
•  セッション一覧の閲覧
•  セッションの選択
•  個人情報入力
•  ユーザの登録
•  Community Ch...
#forcedotcomjp
1、登録サイト(Anonymous User)
§  イベントWebサイトの掲載
‒  セッション内容、スピーカーなど
§  通常のSalesforceではない
見栄えの良いデザインが必要
§  コンテンツの...
#forcedotcomjp
1、登録サイト(Anonymous User)
§  "ユーザ"を作成して登録する
‒  ログイン、ユーザ情報管理、セキュリティ
パスワードリセット、
§  "Salesforce"のユーザを利用する
‒  セ...
#forcedotcomjp
2. コミュニティサイト(Portal User)
§  ソーシャルネットワーク
§  イベント情報の閲覧
‒  セッション、スピーカー
§  参加セッションの更新
§  モバイルアプリケーション
‒  O...
#forcedotcomjp
2. コミュニティサイト(Portal User)
§  モバイルアプリケーション
‒  OAuth + API
§  Platformが標準で提供
§  特に意識しなくてもモバイルアプリ
を開発する下地はそ...
#forcedotcomjp
3. 管理者ページ(Platform User)
§  ソーシャルネットワークの管理
‒  Chatter
§  イベント情報の管理
‒  セッション、スピーカー
§  登録状況の管理
‒  登録者数など
#forcedotcomjp
3. 管理者ページ(Platform User)
§  Platform標準機能
‒  取引先、取引先責任者
§  ワークフロー、積み上げ集計
§  レポート & ダッシュボード
‒  登録者を即座に把握
‒...
#forcedotcomjp
Heroku
§  #forcedotcomjp の
ハッシュタグ付きTweetを収集
§  ClearDBに格納
§  たくさんつぶやいて下さい!!
#forcedotcomjp
Take A Look
#forcedotcomjp
Mobile側の作り
#forcedotcomjp
アジャイルビジネス合同会社
§  http://www.agilebusiness.jp/
§  雑食クラウドな会社です
§  案件量的にはこんな感じ
‒  Webアプリ開発>クラウド(IaaS)系のコンサル...
#forcedotcomjp
モバイルアプリケーションからの接続
【Endpoint】
https://japan.force.com/
devcon/services/oauth2/
【Instance】
https://
developer...
#forcedotcomjp
アプリケーションのスタック
PhoneGap Native Engine
Internal Browser
PhoneGap
JavaScript Engine
コンテンツ
HTML CSS JavaScript
...
#forcedotcomjp
プロジェクトの前提条件
§  iOSとAndroid両対応
§  開発スケジュールが非常にタイト
§  Salesforce Community(6月GA)を利用
§  ベンダー(SFDC)から仕様書とか出...
#forcedotcomjp
開発の体制と分担
SFDC
(サーバ側)
プロマネ
iOSチーム Androidチーム
REST/SOQLチーム
Herokuチーム
Designerチーム
#forcedotcomjp
開発の体制と分担
§  Designerチーム
‒  アプリケーションのデザインを担当
§  REST/ SOQLチーム
‒  Force.comへの接続部分、クエリ作成を担当
§  iOS/Androidチ...
#forcedotcomjp
プロジェクトアーキテクチャの選定
§  どのように作るべきか
‒  iOS/Androidそれぞれのネイティブアプリ
‒  Cordova(PhoneGap)でのハイブリッドアプリ
§  悩んだ結果
‒  とに...
#forcedotcomjp
APIの選定について
§  今回Chatter REST APIを直接利用した訳ではなく、
Force.com REST API経由で、Chatter APIを呼んだ
‒  Chatter API例
•  /se...
#forcedotcomjp
カスタムエンドポイント
§  カスタマーポータルやコミュニティのユーザには、カ
スタムEndpointが提供される
‒  通常のSalesforceのEndpointに接続しても
API利用はできない
§  つ...
#forcedotcomjp
カスタムエンドポイント
§  Google oAuth PlaygroundでカスタムEndpoint
に対して接続できるらしい
‒  https://developers.google.com/oauthpla...
#forcedotcomjp
Sandbox環境の自己署名SSLのエラー
§  SSLが自己証明書のため、ブラウザは警告を出す
‒  先のGoogle oAuth 2.0 Playgroundと同様の回避方法を
モバイルアプリでも実装していな...
#forcedotcomjp
Sandbox環境の自己署名SSLのエラー
§  要因
‒  SSLエラーが発生する環境でのクロスドメイン問題への対応
‒  Salesforceのログイン画面/カスタマーポータルのログイン
画面は、JavaSc...
#forcedotcomjp
Take A Look
Tips & Trick
#forcedotcomjp
Tips & Trick
§  QRコードの生成と受講票
§  考慮すべき項目 ‒ 共有ルールとセキュリティ
§  ミッションの実施と正解チェック
#forcedotcomjp
QRコードの生成と受講票
§  Force.comにはQRコードを生成する機能は無い
‒  Google Chart APIにOutbound CallをしてQR生成
•  添付ファイルに保存
‒  Batch ...
#forcedotcomjp
考慮すべき項目 ‒ 共有ルールとセキュリティ
§  通常のHCPやSitesの場合、Visualforceのみを利用
させればデータへのアクセス権限は画面である程度制
御できる
‒  ※ただし最低限の考慮は必要
...
#forcedotcomjp
§  APIが有効になると・・・・
‒  特にHCPは共有ルールが無いのでデータモデルを意識すべき
考慮すべき項目 ‒ 共有ルールとセキュリティ
...v28.0/query/q=SELECT name,emai...
#forcedotcomjp
コミュニティを有効にするとき
§  会社を超えたコミュニティを形成する場合
‒  コミュニティユーザ表示
#forcedotcomjp
コミュニティを有効にするとき
§  例えばこんなモデルにしておくと・・・・
イベント用取引先
Aさん Bさん Cさん
#forcedotcomjp
High Volume Customer Portal
§  HCPは共有ルールが使えない
‒  非公開 or 全公開
§  非公開でも取得できるもの
‒  自身が所有者のデータ
‒  自身を表す取引先責任者
...
#forcedotcomjp
再掲 ‒ データモデル
イベント
セッション
セッション参加
取引先責任者
#forcedotcomjp
ミッションの実施と正解チェック
§  ミッション実施時は、HCPユーザのinsertによって処
理が行われる
‒  例えばQRコードをスキャンする場合
0000fdakeacceek
正解データ:
0000fda...
#forcedotcomjp
ミッションの実施と正解チェック
§  Salesforce Platformの重要な仕様
§  1トランザクションは、実行したユーザの権限で最後
まで動作する
‒  API Call
‒  Trigger
‒ ...
#forcedotcomjp
ミッションの実施と正解チェック
§  このケースでは、正解確認するには
"正解にアクセスできる"
必要がある
0000fdakeacceek
正解データ:
0000fdakeacceek
正解チェック
#forcedotcomjp
§  解決策 : 暗号化
ミッションの実施と正解チェック
0000fdakeacceek
正解データ(非公開):
0000fdakeacceek
正解チェック
復号化キー
(コード内埋込、非公開)
暗号化済み正解...
#forcedotcomjp
まとめ
§  Force.comでイベント管理は可能
‒  Platformとしての底力を証明
‒  生産性は高い
§  足りない部分は、開発者の知恵と工夫で乗り切れる
§  Salesforce Commu...
#forcedotcomjp
まとめ
是非皆様の会社のイベント管理にも
Salesforce Platformを利用下さい
#forcedotcomjp
Q & A
岡本 充洋
ディベロッパプログラム
マネージャ
@mitsuhiro
高地 範弘
アジャイルビジネス合同会社
代表
@takachino
#forcewebinar
Upcoming SlideShare
Loading in...5
×

Force.comとモバイルでイベント管理実例

1,709

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,709
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
41
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Force.comとモバイルでイベント管理実例"

  1. 1. Session 3-2 Force.comとモバイルでイベント管理実例 株式会社セールスフォース・ドットコム
  2. 2. #forcedotcomjp 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.
  3. 3. イベント用モバイルアプリケーションはこちら http://bit.ly/devconapp ※本アプリケーションはイベント会場内での利用を想定したものであり、イベント会場外や終了後の利用は出来ませんのでご注意下さい。 ※iOS版ではインストールにDeveloper ConferenceのIDおよびパスワードが必要になります。(AppleIDは必要ありません)
  4. 4. #forcedotcomjp Speakers 岡本 充洋 ディベロッパプログラム マネージャ @mitsuhiro 高地 範弘 アジャイルビジネス合同会社 代表 @takachino
  5. 5. #forcedotcomjp Developer Force Japanを是非フォロー下さい Developer Force Japan +Developer Force Japan DeveloperForce Japan @developerforcej / #forcedotcomjp
  6. 6. #forcedotcomjp 今回のイベント管理のテーマ
  7. 7. #forcedotcomjp Salesforce.comのイベントで良く頂くご質問 §  何故自社プラットフォームを登録サイトで使わない? ‒  パートナーさんのソリューション §  簡単にクラウドアプリ、モバイルアプリ作れると聞いた ‒  本当に簡単につくれるのか? Dogfoodingして証明、経験をシェア
  8. 8. #forcedotcomjp イベント管理をSalesforce Platformで §  Salesforce Platformで以下を実現する 1.  イベントランディングページ & 登録ページ 2.  登録確認、受講票発行等の各種メール配信 3.  登録者がログインして情報を見れるMyページ 4.  モバイルからアクセスして、情報が確認見れる
  9. 9. プラットフォームの活用
  10. 10. #forcedotcomjp イベント管理システムの概要 登録Webサイト Force.com Sites a. セッション & ユーザ登録 b. アカウント、 受講票発行 c. ログイン §  登録者情報管理 §  参加セッション情報 §  ソーシャルネットワーク §  ミッション §  アンケート §  Tweetの収集 §  フォトギャラリー
  11. 11. #forcedotcomjp イベント管理システム ‒ データモデル イベント セッション セッション参加 取引先責任者
  12. 12. #forcedotcomjp イベント管理システム ‒ データモデル サーベイ回答者 質問回答 サーベイ質問 サーベイ 取引先責任者
  13. 13. #forcedotcomjp イベント管理システム ‒ データモデル ランキング 取引先責任者 ミッションサマリ ミッション実施 ミッション
  14. 14. #forcedotcomjp 鉄則 : うまくForce.comの機能を使う 登録サイト(Anonymous User) •  セッション一覧の閲覧 •  セッションの選択 •  個人情報入力 •  ユーザの登録 •  Community Chatterの提供 •  セッション参加情報の更新 •  個人情報更新 •  アンケートの実施 •  イベント情報の管理 •  ユーザ情報の管理 •  受講票等の送付 •  ミッションの管理 コミュニティサイト(Portal User) 管理者ページ(Platform User)
  15. 15. #forcedotcomjp 1、登録サイト(Anonymous User) §  イベントWebサイトの掲載 ‒  セッション内容、スピーカーなど §  通常のSalesforceではない 見栄えの良いデザインが必要 §  コンテンツの更新は 簡単に行えるように
  16. 16. #forcedotcomjp 1、登録サイト(Anonymous User) §  "ユーザ"を作成して登録する ‒  ログイン、ユーザ情報管理、セキュリティ パスワードリセット、 §  "Salesforce"のユーザを利用する ‒  セルフレジストレーションを使用 String userId = Site.createPortalUser(user,account.Id,password,false);
  17. 17. #forcedotcomjp 2. コミュニティサイト(Portal User) §  ソーシャルネットワーク §  イベント情報の閲覧 ‒  セッション、スピーカー §  参加セッションの更新 §  モバイルアプリケーション ‒  OAuth & API
  18. 18. #forcedotcomjp 2. コミュニティサイト(Portal User) §  モバイルアプリケーション ‒  OAuth + API §  Platformが標準で提供 §  特に意識しなくてもモバイルアプリ を開発する下地はそろっている ‒  ブラウザだけでもChatterは使える
  19. 19. #forcedotcomjp 3. 管理者ページ(Platform User) §  ソーシャルネットワークの管理 ‒  Chatter §  イベント情報の管理 ‒  セッション、スピーカー §  登録状況の管理 ‒  登録者数など
  20. 20. #forcedotcomjp 3. 管理者ページ(Platform User) §  Platform標準機能 ‒  取引先、取引先責任者 §  ワークフロー、積み上げ集計 §  レポート & ダッシュボード ‒  登録者を即座に把握 ‒  デイリーEメール
  21. 21. #forcedotcomjp Heroku §  #forcedotcomjp の ハッシュタグ付きTweetを収集 §  ClearDBに格納 §  たくさんつぶやいて下さい!!
  22. 22. #forcedotcomjp Take A Look
  23. 23. #forcedotcomjp Mobile側の作り
  24. 24. #forcedotcomjp アジャイルビジネス合同会社 §  http://www.agilebusiness.jp/ §  雑食クラウドな会社です §  案件量的にはこんな感じ ‒  Webアプリ開発>クラウド(IaaS)系のコンサル>Webサイ ト制作>モバイルアプリ開発
  25. 25. #forcedotcomjp モバイルアプリケーションからの接続 【Endpoint】 https://japan.force.com/ devcon/services/oauth2/ 【Instance】 https:// developerforcejapan.my.salesforce.com/ oAuth 2.0 Force.com REST API
  26. 26. #forcedotcomjp アプリケーションのスタック PhoneGap Native Engine Internal Browser PhoneGap JavaScript Engine コンテンツ HTML CSS JavaScript PhoneGap Custom Native Plugin Force.com REST API PhoneGap Custom Plugin
  27. 27. #forcedotcomjp プロジェクトの前提条件 §  iOSとAndroid両対応 §  開発スケジュールが非常にタイト §  Salesforce Community(6月GA)を利用 §  ベンダー(SFDC)から仕様書とか出て来ない適当仕様 ‒  基本ChatterかGithub, メールで仕様をやり取り
  28. 28. #forcedotcomjp 開発の体制と分担 SFDC (サーバ側) プロマネ iOSチーム Androidチーム REST/SOQLチーム Herokuチーム Designerチーム
  29. 29. #forcedotcomjp 開発の体制と分担 §  Designerチーム ‒  アプリケーションのデザインを担当 §  REST/ SOQLチーム ‒  Force.comへの接続部分、クエリ作成を担当 §  iOS/Androidチーム ‒  各プラットフォーム向けのプログラム開発 §  Herokuチーム ‒  ギャラリーアプリケーション
  30. 30. #forcedotcomjp プロジェクトアーキテクチャの選定 §  どのように作るべきか ‒  iOS/Androidそれぞれのネイティブアプリ ‒  Cordova(PhoneGap)でのハイブリッドアプリ §  悩んだ結果 ‒  とにかく開発スケジュールが短い ‒  Chatterのサンプルコードが少ない §  最後の最後で、JavaScriptが流用できる率が高い Cordova(PhoneGap)を選択
  31. 31. #forcedotcomjp APIの選定について §  今回Chatter REST APIを直接利用した訳ではなく、 Force.com REST API経由で、Chatter APIを呼んだ ‒  Chatter API例 •  /services/data/v28.0/chatter/users/me ‒  Force.com API例 •  /services/data/v28.0/query?q=SELECT%20Name%20FROM %20Contact ‒  REST API経由コミュニティ版Chatter呼び出し •  /services/data/v28.0/connect/communities/[コミュニティID]/ chatter/users/me
  32. 32. #forcedotcomjp カスタムエンドポイント §  カスタマーポータルやコミュニティのユーザには、カ スタムEndpointが提供される ‒  通常のSalesforceのEndpointに接続しても API利用はできない §  つまり、ApigeeでRESTやSOQLが確認できない
  33. 33. #forcedotcomjp カスタムエンドポイント §  Google oAuth PlaygroundでカスタムEndpoint に対して接続できるらしい ‒  https://developers.google.com/oauthplayground/ ‒  参考 : •  http://blogjp.sforce.com/2011/11/forcecom-apigoo-5d7d.html ‒  実際に試しながらクエリを構築
  34. 34. #forcedotcomjp Sandbox環境の自己署名SSLのエラー §  SSLが自己証明書のため、ブラウザは警告を出す ‒  先のGoogle oAuth 2.0 Playgroundと同様の回避方法を モバイルアプリでも実装していないとSandbox環境に接続 してテストができない §  ハイブリッドアプリでトライ、動かない §  ネイティブアプリ(主にAndroidのJava)でもト ライ、動かない・・・
  35. 35. #forcedotcomjp Sandbox環境の自己署名SSLのエラー §  要因 ‒  SSLエラーが発生する環境でのクロスドメイン問題への対応 ‒  Salesforceのログイン画面/カスタマーポータルのログイン 画面は、JavaScriptで動的に作られていて、かなり複雑 ・・・残スケジュール的に厳しくなってきた §  本番環境の中にオブジェクトを分ける形で、開発環境 を作ってもらった!(岡本さんごめんなさい)
  36. 36. #forcedotcomjp Take A Look
  37. 37. Tips & Trick
  38. 38. #forcedotcomjp Tips & Trick §  QRコードの生成と受講票 §  考慮すべき項目 ‒ 共有ルールとセキュリティ §  ミッションの実施と正解チェック
  39. 39. #forcedotcomjp QRコードの生成と受講票 §  Force.comにはQRコードを生成する機能は無い ‒  Google Chart APIにOutbound CallをしてQR生成 •  添付ファイルに保存 ‒  Batch Apexで一括生成 §  受講票 ‒  Visualforceメールで、RenderAS=PDFで受講票を添付 ‒  Visualforceメールテンプレートは一括メール送信できない •  ポーリングする画面で処理
  40. 40. #forcedotcomjp 考慮すべき項目 ‒ 共有ルールとセキュリティ §  通常のHCPやSitesの場合、Visualforceのみを利用 させればデータへのアクセス権限は画面である程度制 御できる ‒  ※ただし最低限の考慮は必要 •  理由 : 標準画面はオブジェクトのPrefixが分かれば入れる ‒  例 : ミッション実施のレコードをWebサイトから入力しようとする https://japan.force.com/devcon/a0F/e
  41. 41. #forcedotcomjp §  APIが有効になると・・・・ ‒  特にHCPは共有ルールが無いのでデータモデルを意識すべき 考慮すべき項目 ‒ 共有ルールとセキュリティ ...v28.0/query/q=SELECT name,email,title ... FROM Contact 山田, yamada@hehe.com , 社長 田中, tanaka@acmecorp.jp , 常務 佐藤 , sato@jojo.com , CTO ...
  42. 42. #forcedotcomjp コミュニティを有効にするとき §  会社を超えたコミュニティを形成する場合 ‒  コミュニティユーザ表示
  43. 43. #forcedotcomjp コミュニティを有効にするとき §  例えばこんなモデルにしておくと・・・・ イベント用取引先 Aさん Bさん Cさん
  44. 44. #forcedotcomjp High Volume Customer Portal §  HCPは共有ルールが使えない ‒  非公開 or 全公開 §  非公開でも取得できるもの ‒  自身が所有者のデータ ‒  自身を表す取引先責任者 ‒  「親レコードに連動」をうまく使う
  45. 45. #forcedotcomjp 再掲 ‒ データモデル イベント セッション セッション参加 取引先責任者
  46. 46. #forcedotcomjp ミッションの実施と正解チェック §  ミッション実施時は、HCPユーザのinsertによって処 理が行われる ‒  例えばQRコードをスキャンする場合 0000fdakeacceek 正解データ: 0000fdakeacceek 正解チェック
  47. 47. #forcedotcomjp ミッションの実施と正解チェック §  Salesforce Platformの重要な仕様 §  1トランザクションは、実行したユーザの権限で最後 まで動作する ‒  API Call ‒  Trigger ‒  WorkFlow
  48. 48. #forcedotcomjp ミッションの実施と正解チェック §  このケースでは、正解確認するには "正解にアクセスできる" 必要がある 0000fdakeacceek 正解データ: 0000fdakeacceek 正解チェック
  49. 49. #forcedotcomjp §  解決策 : 暗号化 ミッションの実施と正解チェック 0000fdakeacceek 正解データ(非公開): 0000fdakeacceek 正解チェック 復号化キー (コード内埋込、非公開) 暗号化済み正解データ(公開): a;ho09432QH;OFA0JO;WEA-1=JM'FASJAPOJ 事前に作成
  50. 50. #forcedotcomjp まとめ §  Force.comでイベント管理は可能 ‒  Platformとしての底力を証明 ‒  生産性は高い §  足りない部分は、開発者の知恵と工夫で乗り切れる §  Salesforce Communityからのモバイルアプリケー ション作成は可能 ‒  だがまだ新しいためそこそこハマり所もある
  51. 51. #forcedotcomjp まとめ 是非皆様の会社のイベント管理にも Salesforce Platformを利用下さい
  52. 52. #forcedotcomjp Q & A 岡本 充洋 ディベロッパプログラム マネージャ @mitsuhiro 高地 範弘 アジャイルビジネス合同会社 代表 @takachino
  53. 53. #forcewebinar
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×