チームスピリットデベロッパーブログ

チームスピリット開発者のブログ

Salesforce Basecamp Singapore Report

みなさん, こんにちは! This is ライアン (id:ryancsf) from TeamSpirit Singapore. Today, I would like to talk about my first Salesforce Basecamp experience in Singapore.

Today, on 28th of November 2018, salesforce basecamp was held in Marina Bay Sands, Singapore. Together with Koizumi-san, Nino-san, Go-san, Prashant, Ace and Jerry, all of us went to the basecamp. It was our first conference together as the Singapore team.

Below is the agenda of the event:

f:id:ryancsf:20181128172334p:plain

First Impression

The venue of the event, Marina Bay Sands exhibition center is huge. We spent around 5 minutes walking around the different expo theatre until finding the right one. Upon entering the venue, we were greeted with some nice refreshments of coffee and English tea. There's also some fresh fruit on display.

f:id:ryancsf:20181128173357j:plain Prashant and Nino-san were very happy when they discovered the drinks

f:id:ryancsf:20181128173611j:plain Fresh fruits provided as refreshments!

f:id:ryancsf:20181128173704j:plain Salesforce logo everywhere!

Keynote

Around 1.00 pm, the keynote started. All of us went to one of the bigger halls and the atmosphere changes. Lights were dimmed down and there was 2 big screens in front of us. It feels like a Mini-Dreamforce event to me.

f:id:ryancsf:20181128173944j:plain Mini DreamForce atmosphere

f:id:ryancsf:20181128174031p:plain We took a group photo before the event started

f:id:ryancsf:20181128174130j:plain The first slide they present is Thank You slides! So sweet :D

f:id:ryancsf:20181128174447p:plain This slide talks about the fourth revolution that we are in now.

f:id:ryancsf:20181128174406p:plain Salesforce's core values

The entire keynote was very inspiring as they showcase the latest innovation of Salesforce which is the Einstein Voice and there was a live demo on how they integrated different customer data using MuleSoft's anypoint platform, and then using Einstein AI to suggest the best recommendation after analyzing all the data.

After the keynote

After the keynote, we went back to the smaller room where we can each go to different tracks. There were many interesting tracks on that day. Each of us have different interests, so we separated and went to different tracks. If you are interested, you can see the list of all tracks here :

Salesforce Basecamp Singapore - 28 November 2018 - Agenda - Salesforce

As we are walking around... we saw some familiar characters!!! They are...

f:id:ryancsf:20181128181800j:plain

Astro & Codey, Salesforce's mascots!

So, we did the only thing that everyone else wants to do, which is...

f:id:ryancsf:20181128181857j:plain Take a picture with them!

Individual Track: Introduction to MuleSoft

MuleSoft is a company that was recently acquired by Salesforce. It is a company that specialise in integration of data. I joined a talk about MuleSoft's Anypoint platform.

f:id:ryancsf:20181128182422j:plain The speaker talks about their company's main feature : API-fying everything

f:id:ryancsf:20181128182739p:plain With API, you can avoid mass duplication.

Second talk: Transition to Lighting

Afterwards, around 3.00 pm, I joined another talk by Mr Dennis Chau, Senior Customer Adoption Analyst. In this talk, we learned about why Salesforce is pushing Lightning and how we can help customer to move to Lightning.

According to Mr Dennis, the main reason Salesforce is moving to Lightning is personalisation. Other reasons includes:

  1. Modern, intuitive interface
  2. Better performance.
  3. More customisability.

f:id:ryancsf:20181128182911p:plain The title slide

f:id:ryancsf:20181128183314j:plain Free salesforce notebook!

Conclusion

We went back to the office after the last talk. Overall, it was a good experience as we learned a lot more about how Salesforce works in Asia. We were also exposed to their vision and mission as well as their future products (Einstein Vision, Einstein Analytics, Anypoint integration).

I look forward to the next conference so we can get more knowledge and bring it back to TeamSpirit.

Lightning プロセスビルダーで通知を考える

今年も 技術系アドベントカレンダーの季節がやってまいりました。皆さま元気にお過ごしでしょうか?

日本では、もうすぐ1年に1度の Salesforce World Tour Tokyo 2018 が 12月5日に迫ってきています。 イベントを楽しみにして待っている方、登壇のため資料などの準備に追われている方などさまざまでしょう。

クリスマスまで25日ですので、今日から毎日投稿されるアドベントカレンダーの記事を読んで楽しみながら過ごしてもらえればと思います。

はじめに

Salesforceでの通知といえば、これまではワークフロールールを利用して、メールアラートを送信するが主流だったのではないかと思い込んでいます。

もう一つの手段としてはChatter での通知なども考えられますが、Chatter 投稿を自動化できるようになったのも比較的最近であるため、まだ使い始められていない方も多いのではないでしょうか?

この Chatter 投稿を自動化するためには、Lightning プロセスビルダーを利用します。Chatter 投稿以外にもいろいろとできるので、Lightning プロセスビルダーを活用すると、どういった通知が自動化できるか考えてみたいと思います。

考えてみた

プロセスビルダーで自動化できるものは数限りなくありますが、ここでは「通知」に絞って考えることとします。

プロセスビルダーで「通知」に関連してくる機能として、メールアラート、Chatter、レコード追加・更新の3つに分けて取り上げていきたいと思います。 その他にも何かあれば教えてもらえると嬉しいです。

メールアラート

まずは、メールアラート。これまではワークフロールールを利用して、メールアラートを送信してきました。

ご存知のかたも多いと思いますが、プロセスビルダーからもメールアラートを起動できるようになっています。設定できる項目についてもワークフロールールも同じですね(詳しく差分を取っていないので、差分があれば教えてください)。

f:id:a-kura:20181201012027p:plain
図:メールアラート

Chatter

次に、Chatter投稿。

「Chatter」に投稿する場合は、ユーザー、Chatter グループ、レコードを選択できます。Chatterでの通知となるため Salesforce モバイルアプリでも通知して受信することができます。通知としては、自分のタイムラインに投稿が表示されてしまうところは良くない点なので、Chatter メッセージ(自分宛てだけに)で送信できるようになるとよいですね。

ところで、Chatter メッセージは Lightning Experience で対応される気配が…(げふんげふん)。

f:id:a-kura:20181201014113p:plain
図:Chatterに投稿

レコードを作成

最後に、レコード関係。こちらはいろいろな応用が考えられます。

プロセスビルダーでは、アクションとしてレコードを作成できるようになっています。レコードを作成・更新できると Sales Cloud や Service Cloud などの機能をかなり自動化できるので、かなり強力な機能となります。

それに加えて、Salesforce ではレコードを作成・更新で起動する Apex トリガーを仕込むことで外部サービスとの連携を含めてさまざまなことができるようになります。

ここでは、「通知」という観点で関連しそうなものを挙げていきます。

ToDo

ToDoは、いわゆるタスク管理ツールのタスクにあたります。ToDoはタスクとしての意味合いがあるので通知より強制力があり、完了させる(通知を消す)ためには本人が明示的に操作する必要があります。

f:id:a-kura:20181201012808p:plain
図:レコードを作成(ToDo)

行動

「行動」は開始日時、終了日時を登録できるので、予定として登録したい場合に非常に有効になります。また、クイックアクションでも登録できますが、いろいろな方法で登録できるのは少し謎なところがあり、どの手段が一番よいのか気になるところです。

行動を「レコードを作成」で作成する

f:id:a-kura:20181201124510p:plain
図:レコードを作成(行動)

行動を「クイックアクション」で作成する

f:id:a-kura:20181201013505p:plain
図:クイックアクション(行動)

Slack

少し前からメールに集約していた通知を、Slack などのチャットツールに集約していく流れがあります。 これは日常的なやりとりに使っているツールがメールからチャットツールに変遷していることに関連しています。

ここでは、Salesforce から Slack に通知する方法について2015年の Advent Calendar にやり方を書いた記事がありますので紹介しておきます。

Salesforce App Cloud Advent Calendar 2015 (23日目) - Salesforce→Slack通知をオープンソースで公開しました

TeamSpirit

最後に、私が携わっているプロダクト「TeamSpirit」と絡めて小技をご紹介します。

「TeamSpirit」は勤怠管理、経費精算、工数管理、カレンダーを一体にした働き方改革プラットフォームです。もう少し知りたい、という方はこちら

TeamSpirit の勤務表を開くと、お知らせが表示されることがあります。このお知らせ機能はカスタムオブジェクトでデータを管理しています。そのため、今回のプロセスビルダーでレコードを作成するように設定してあげることで、勤務表に任意のお知らせを表示できるようになります。

ここからは、少し具体的に設定方法について解説していきたいと思います。

今回設定するお知らせは、「36協定残業時間(法定休日労働を含む)」が40時間を越えたときに通知する、というものです。

新規プロセス

まず、プロセスビルダーを起動して、新規のプロセスを作成します。下記のように新規プロセスを設定します。

f:id:a-kura:20181201135418p:plain
図:新規プロセス

  • プロセス名:残業通知(任意)
  • API 参照名:OvertimeNotification(任意)
  • 説明:(任意)
  • プロセスを回位するタイミング:レコードが変更されたとき

オブジェクトを選択

次に、プロセスビルダーの画面で対象となるオブジェクトを選択します。

下記のようにオブジェクトを選択してプロセスを開始するタイミングを指定します。

f:id:a-kura:20181201135913p:plain
図:オブジェクトを選択

  • オブジェクト:勤怠月次
  • プロセスを開始:レコードを作成または編集したとき

条件を追加

そして、下記のように条件を追加します。

f:id:a-kura:20181201130319p:plain
図:条件を追加

  • 条件名:36協定対象残業時間(法定休日労働を含む)>40時間
  • アクションの実行条件:条件を満たしている
条件を設定
項目 演算子 種別
teamspirit__AtkEmpMonth__c > 36協定残業時間(法定休日労働を含む) 番号 2,400

※ 値は分単位で設定します(例:40時間×60分のため、2,400分を設定しています)

詳細
  • レコードに指定の変更が行われた場合にのみアクションを実行しますか? :オン

ルール適用時のアクション

下記のように、上記で設定した条件を満たす場合のルール適用時のアクションを設定します。

f:id:a-kura:20181201133603p:plain
図:アクションを選択して定義

  • アクション種別:レコードを作成
  • アクション名:勤怠お知らせを作成(適宜、わかりやすい名前をつけてください)
  • レコードタイプ:勤怠お知らせ
項目値を設定
項目 種別
勤怠お知らせ名 文字列 teamspirit__AtkEmpMonth__c > 社員ID > 社員名
メッセージ 文字列 36協定残業時間(法定休日労働を含む)が40時間を越えました
社員 ID 項目の参照 teamspirit__AtkEmpMonth__c > 社員ID > カスタムオブジェクトID
所有者 ID 項目の参照 teamspirit__AtkEmpMonth__c > 社員ID > 所有者ID

任意の残業時間でお知らせを表示するためのプロセス

以上で主だった設定は終わりになります。下記のようなプロセスが作成できていると思います。

f:id:a-kura:20181201134914p:plain
図:プロセス - 残業通知

プロセス有効化

最後に、忘れずプロセスを有効化しましょう。

テスト

実際に、今回設定した条件を満たすように勤務表から出退社時刻を入力していってみましょう。

条件を満たすところまで入力した後に画面を再表示すると、下記のようにお知らせが表示されました(パチパチパチ)。

f:id:a-kura:20181201151123p:plain
図:お知らせが勤務表に表示される

このように設定することで、かなり柔軟な条件でお知らせを表示できますので、ご参考にしていただければ幸いです。

まとめ

ここで紹介した通知の方法についてメリット、デメリットを独自判断でまとめておきます。書いてみて参考にならなさそうですが、ご参考まで。

通知方法 メリット デメリット
メールアラート これまでと同様、メールによる通知でわかりやすい 通知を受け取る手段としてメールのみになる
Chatter投稿 Salesforce モバイルアプリで通知として受信できる タイムラインに通知のための投稿が表示されてしまう
ToDo 強制力のあるやり方で、本人が明示的に完了させることができる 余計なToDoが作成されてしまう
行動 日時を指定して知らせることができる 余計な行動が作成されてしまう
Slack Slackに通知を集約する運用ができる 設定の難易度が高い
TeamSpirit TeamSpiritのお知らせをある程度自由に拡張できる TeamSpiritを利用していないと使えない

おわりに

今回は、Lightning プロセスビルダーを通じて、Salesforce における通知について考えてみました。皆さまはどういった通知を作成していますでしょうか?

通知を一つとっても実際の運用を考慮するとなかなか奥が深いところがあり、いろんな方の知見を伺いたいと思いました。

最後になりましたが、この投稿は チームスピリット Advent Calendar 2018 - AdventarSalesforce Platform Advent Calendar 2018 - Qiita 第1日目の投稿になります。

Dreamforce2018レポート - Day3 -

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

とうとう3日目も終わり、残すところあと1日となってしました。

Developer Keynote

Developer Keynote に参加。 MVP 席があるので、少し前で見ましたが、全体的に人数が少なめでその他の人たちもそれほど遠くなかったようです。

Winter'19 でリリース・パイロットされる機能。

Spring'19 の予定機能。

Salesforce MVPの1人にゴールデンパーカーが授与されました! Admin ではお馴染みですが、デベロッパーとしては世界で唯一だと思います。 Congrats!

Mini Hack

今回の Mini Hack は下記の8つのお題が出題されました。

  1. Point and Click App
  2. Food Surveywith no /Code
  3. Lightning App Builder and Dreamhouse
  4. Smart Base Lightning Components, No Apex
  5. Dynamic Percentage Calculator
  6. Searchable Contact List
  7. Hello Einstein, Search Visually
  8. Heroku App in Action

3年前にもあった Leaderboard が今回もあり、今回は6問正解で84位につけています。 ランキングなので6問以上正解した方が出ると順位が下がっていくはずなので、100位以内に残れると嬉しいです。

最終日に時間があれば、結果を見に行きたいと思います。

今回は、3以降の6問を回答しました。最後の2問はたぶん同じ問題がどこかで出題されていたように思います。 ただ、Heroku については環境のセットアップが必要なため、普段 Heroku を使っていない人は時間がかかるかもしれません。

傾向として3〜6までが Lightning Component 関連の出題です。Base Lightning Component も充実してきており、そろそろ普及期に入ってきたように感じました。

セッション

Custom Permissions というキーワードに惹かれて受講しました。 内容としては、CRUD/FLS をチェックするためのライブラリなのですが、システムモード(without sharing)なのか、ユーザーモード(with sharing)なのか、を切り替えることができるようになっています。

このライブラリの最初の課題感としては、企業コンプライアンスを考えるとセキュリティの処理が複雑になってしまう、というもので、この点は日本でもアメリカでもあまり変わらないのかもしれないと思いました。このライブラリを作成したのは FinancialForce の方のようで、AppExchange でプロダクトを提供しており、同じ ISV/OEM パートナーとしてはどのようにシステムモードを使っているのか気になりました。

ソースコードはこちら。 github.com

Japan Partner Night

毎年恒例の Japan Partner Night。今年も多くのパートナーが参加していました。

おまけ

今回の Dreamforce でゲットした仲間たちです。 前回に引き続き、ミドルサイズのぬいぐるみ(今回は Cloudy)を持ち帰ることができてよかったです。

朝7時ごろ。

会場の様子。

名残惜しい気もしますが、最後まで楽しんでいきましょう!

Enjoy!

Dreamforce2018レポート - Day2 -

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

連日、朝から晩まで予定が詰まっていて疲れてきました。 夜もパーティーなどありますが、しっかり睡眠を取ることが大切ですね。

Trailhead

Developer Zone や AppExchange Den など Developer、Admin には一日いても飽きなさそうなゾーンに乗り込んでいきました。 セッションとしては、SalesforceDX と BitBucket の連携について受講してきました。 BitBucket Pipeline を使って、Docker 上でビルドし、SalesforceDX でデプロイするような流れで構築していました。 自社で BitBucket を利用しているので、構成を参考にトライしたいと思います。

セッション。

子鹿。

IoT Village にそびえ立つ Salesforce Tower。

Hootie座。

Saasy先輩の可愛がりを受けて成長しました!

CAMP DESIGN

Salesforce のデザインチームの方と少し話してきました。もっと英語ができれば、いろいろ質問したかったです。

プロダクト開発チームでもデザイナーの方を採用して、同じような取り組みをやっていきたいと思います。 というわけで、デザイナーの方、募集中です!

UIデザイナー | 株式会社 チームスピリット | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2018/08/28 20:24:14更新 | id:56010

AppExchange Lodge

パートナー向けセッションを受けるべく AppExchange Lodge へ。 パートナー向けセッションは一段と厳しさの増すセッションが多く、かなり良かったです。 「Apex CPU time limit exceeded」「Apex heap size too large」などのパートナーであれば一度は通る問題について、どのように頑張ればいいか解説してくれました。 AppExchange Partner は何もやらなくても Gift をもらうことができました。パートナーの方はぜひ Park Central Hotel まで行ってみましょう!

パートナー向けセッション

AppExchange Lodge

Salesforce Tower ツアー

16:30から Salesforce Tower のツアーに参加しました。残念ながら力不足のため最上階にはいけませんでしたが、十分雰囲気を満喫できました。 エリア全体がトレイルのデザインで統一されており、落ち着く雰囲気でとてもよかったです。

Saleforce Tower

明日も朝食を食べながらのミートアップです。 もう少しなので、楽しみながら頑張ります!

Enjoy!

Dreamforce2018レポート - Day1 -

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

サンフランシスコはサマータイムなのですが、朝7時くらいだとまだまだ白み始めた感じでした。 サマータイム、必要なんですかね。

Community Leader State of the Union

コミュニティリーダーの集いに、会長の米井さんに代わって参加しました。どなたもコミュニティを引っ張るだけあってパワフルな方ばかりでした。朝食を食べたあと、コミュニティ活動がどういった状態になっているか、新ツールのバージョンアップの計画などについて話を伺いました。

AppExchange Partner Keynote

今回の Dreamforce 最初の Keynote は AppExchange Partner Keynote でした。

世界のAppExchange登録企業の中でインストール数が多い名の知れた企業を掲載するものだそうです。 弊社のロゴもその中に入れてもらえました。ありがとうございます!

Marc's Keynote

この祭典の目玉と言えるマーク・ベニオフ氏のキーノートです。詳細は後日まとめ記事が出るので、聞き取れる範囲で聴いて雰囲気を楽しみました。 さすがのMVP席は中央に近くて、盛り上がりが凄かった!

プレショーでBGMを奏でていただきました。

やはり、この二人ですね。今回はスポンサーの関係上、コスプレはなしでした。

セッションの途中で、気球型ドローンが飛んでました。

MVP Party

最後に、今回はじめてMVP Partyに参加できました! 海外では有名な Salesforce 系 Podcast である WizardCast をやっている Brian Kwong さんと写真を撮らせてもらったり、インドのニューデリーから来た方と話したり、いろいろな方と話させてもらいました。英会話力のなさが悔しい。

マーク・ベニオフ氏の誕生日を祝って、ハッピーバースデーをMVP全員で歌いました。

おまけ

Saasy先輩に手荒い歓迎を。

昼食時は Moscone Center の中庭が Trailblazer たちで溢れかえります。

青い空と気球。よく見ると、恒例のネガティブキャンペーンですね(汗)。

今回はベジタリアンの方向けランチの数が充実していたように思います(間違えて取ってしまいました)。 ちなみに、どこかに VEGAN と書いてあるはずですので、皆さま注意して選んでください。

まだまだ始まったばかりなので、明日も頑張っていきましょう!

Dreamforce2018レポート - Day0 -

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

Day0 ではいくつかイベントもあったようですが、10時過ぎにサンフランシスコ空港に着いたため今回は参加しませんでした。

BART

まずは、BARTに乗って空港からサンフランシスコ中心部へ。 車内に荷物を盛大に置き忘れそうになる事件もありましたが、無事目的地で降りることができました。

チェックイン

弊社メンバーは Dreamforce のチェックインとバックパックをもらいに行きました。 今年のゲートは、アストロたちがきれいに並べられており、ますます気合の入ったものになっていました。

そして、空の青さ!いつ見ても羨ましいばかりの空の色でした。

観光

バックパックを受け取ったあとは昼食など諸々を済ませて観光に。 社長の荻島が何度も Dreamforce に参加していながら乗ったことのなかったケーブルカーに乗って観光に出かけました。

終点はフィッシャーマンズ・ワーフ。 日向は暖かいのですが日陰はかなり寒く、半袖・半ズボンで来ていたメンバーは寒さに震えていました。 油断せず、防寒対策は必要ですね。 (次の予定もあったので私は早々に引き上げましたが、屋台とかいろいろあります)

遠くに見える島がアルカトラズ島。

おまけ

夕食は明日に向けて英気を蓄えるべく CRUSTACEAN SAN FRANCISCO で決起集会でした。 巨大な蟹が一人一匹サーブされます。オイル煮に黒胡椒がアクセントとなり、やみつきになる味です。 Dreamforceに参加される方はぜひ訪れてみてください(要予約)。

www.crustaceansf.com

最後に

とうとう明日から Dreamforce が始まります。 初日は、コミュニティリーダーとの朝食、Marc's Keynote、MVP Partyなどイベントで目白押しです。 KeynoteはYouTubeなどにすぐにアップされるので内容は現地でなくてもキャッチアップできてしまいます。 現地でなくては味わえない雰囲気であったり、現地でしかやっていない上級者向けのセッションなどだったりを中心に見てきたいと思います。

明日からが楽しみです。

Dreamforce2018レポート - 出国前 -

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

Salesforceに関わる人にとって年一度の祭典の時期になりました!そう、Dreamforce!! Dreamforceに初参加したのは2015年なので、3年ぶり2回目の参加となります。

f:id:a-kura:20180924161841p:plain Dreamforce 18

今回は、事前にmyTrailhead、Einstein Voice、Quip Slidesなどの発表がありました。このあたりの発表を見ると、Appleのように新製品発表会でサプライズを演出するというより、事前に情報を出してしっかり理解して帰ってもらうことを主眼に置いているのかもしれません。

成田空港

さて、英語力は向上してる気がしませんが、しっかり雰囲気を楽しみ、現地ならではの情報を仕入れてきたいと思います。

See you soon San Francisco!