yonet77的な雑記帳

日々思いついたネタなどを書き留めておきます

Japan Dreamin' 2020 で話をしました(後日談)

大盛況に無事に完走したJapan Dreamin' 2020 ( https://www.japandreamin.com/ )でした。
運営、サポーター、スポンサーの方々は本当にお疲れ様でした。
1回 -> 2回 で規模が倍になってるので、来年は...(ry

さてはて、今年はスピーカーとして参加してみたわけなのですが、自身のセッションで(うっかり)伝え忘れたこととか、後から「あぁ!」と思ったことなど補足したいと思います。(すみません。準備不足が露見しm...)
www.japandreamin.com

(当日の資料)

www.slideshare.net



CDataSyncについて

Salesforce -> Postgres への連携ではCData Software社が提供するCDataSyncを利用しました。
www.cdata.com

CDataSyncは別にSalesforceに特化した製品というわけではなく、2つのDBを片方向同期させるためのツールです。データソースとデータ同期先に様々なDBを指定できます。
この時にはデータソースにSalesforce、データ同期先をPostgresにした、という具合です。

  • 同期するレコードを絞れる(Where句を指定できる)
  • 同期先テーブルのテーブル名、カラム名を変更できる( Id など一部のカラムはNGですが)

といった利点があります。
同期するタイミングも毎時とか10分おきとか選択できます。

その他、同期処理ジョブをAPI化することも可能で、外部から任意のタイミングで同期処理を実行させることもできます。

ただ、Salesforceをデータソースに選択した場合は(当然ではありますが)APIを消費します。

そんなわけで、Salesforce案件に限らず、データを同期させたい場合には非常に心強い製品だと思います。
(また、CData Software社のサポートの対応も早くて非常に良いと思います!)

Heroku Connectについて

Heroku Connectについて言及しそこなったのは

事前に、同期するレコード件数の見積をしましょう

ということでした。

同期するレコード件数によって段階的に課金されるので、まずは同期する対象レコードの範囲、件数(5年くらい先まで見積もれたら良いと思います)をしっかりと検討することが大事だと思います。
また、Heroku Postgresに同期して良いレコードなのかどうか、についても確認すべきだと思います。

今回、案件の中では同期するレコード件数を絞って不要な同期を回避したい、という要望があったので、同期用のカスタムオブジェクトを用意して、例えばキャンペーンや商談などのレコードのうち、同期させたい条件に合致したら、同期用のカスタムオブジェクトを作成(or更新)するといったトリガを実装しました。
※具体的には after insert, after update, before delete で大元のレコードから同期用のレコードにデータを同期させる、という仕組みです。意外に面倒かもしれません。

あと、なぜかよく分からないのですが、Salesforce側でしばらく更新してないオブジェクトの同期間隔が、ある日 1440min とかになってて、Salesforce側のデータを更新したのに全然同期してくれない...という事態もありました。(Demo Edition限定なのかもしれませんが...)

ただ、勝手に同期してくれるのは大変楽ですね!
例えば、ユーザが問合せフォームから問合せを作成したら、その内容がSalesforceのCaseオブジェクトに勝手に連携されるとか非常に楽でした。

使い所を間違えなければ、非常に心強いAddonだと思います。

AWS S3を使って会員向けのコンテンツ(プライベートコンテンツ)配信について

Heroku AddonにCloudinaryというサービスがあります。こちらのサービスでもプレミアユーザになればアクセス制御もできそうなコメントがあります。
support.cloudinary.com

が、今回はそれを使わず、S3を使ってプライベートコンテンツを配信することを検討しました。
(「S3 private contents」というキーワードで検索すると色々とヒットするので、そちらを参考にすると良いでしょう。)

CloudFront + S3で署名付きCookie or 署名付きURLを使って配信する、というものが多かったです。(以下、サンプル)
dev.classmethod.jp

この場合、CloudFrontも使う必要があるので、BucketeerというHeroku Addonは使わずに自前でS3 Bucketを用意することとなります。

こういったプライベートコンテンツ配信については、Salesforceを使う、という選択肢もあるとは思いますが...他にも良い方法があったらコメント欲しいところです。

Auth0 でハマってるところ

  • 登録したユーザのメールアドレスに確認メールなどが届かないのをどうやって検知するか?
  • 携帯キャリアメールアドレスにシステムからHTMLメールを送るときにどうやって送るのが良いか?

qiita.com

といったことに悩んでおります。もう少し使いこなせるよう引き続き学習しないとな...といったところです。

あ、あとコレもハマりがちかもしれません。
rso.hateblo.jp

ハマりポイントと、うまいこと回避する方法を色々と共有できたら良いな、と思います。。

CData API Serverについて

これはDBに対して、APIを生やしてくれるというCData Software社が提供する製品です。
www.cdata.com

GUIで設定するだけで、例えばHeroku PostgresにAPIをつけることできる、というものです。(Private Spaces内は未検証)
APIを作りたいけど、そんなリソースは確保できない...!なんて場合には、非常に強力な製品だと思います。
何と言っても、GUIでサクッとAPIが作成できてしまいますので。

そんなわけで、「現時点ではAPIはないんだけど、外部システムからデータを読み込めるようにしたい」といった場合には非常に心強い製品です。

その他メッセージ

Japan Dreamin' のようなイベントに参加して、セッションを聞いていると

こうやって登壇できる人ってのはスーパーな人なんだろーなー

と思うことがあるかもしれません。
※確かに、実際のところスゴイ人も中にはいます。

僕がなんであんな場所で話をできるようになったのか?と言われたら...それは多分「やってみようか」と思ったからに過ぎません。。

実は昨年に、中原淳さんという方の本で『「学び」の教科書』という本を読みました。
https://www.amazon.co.jp/働く大人のための「学び」の教科書-中原-淳/dp/4761273127

その中で、

「こちら側・あちら側」の違いは、能力的な差ではないということ。
「決めて、動いたかどうか」だけです。

という一節があり、非常に感銘を覚えました。

書籍の中で紹介されていたのですが、ある方が、何かのフォーラムでスピーカーになった時のエピソードでした。
それまでは聞く立場で「あちら側の人」という見方をされていたようですが、いざ自分が立ってみて感じたことが「決めて、動いたかどうか」ということだそうです。

Meetupなどのイベントで登壇できる/できないのではなく、「登壇する」と決めたかどうか...といった具合でしょうか。
もちろん、決めるにあたっては色々と不安に思うこととかあるとは思いますが...こんな話が誰かの背中を押す最後の一押しになったら良いな、と思います。

その他所感

(1)

コミュニティの力だけで、これだけのイベントを開催できるって、良い意味でクレイジーになったものだと思います。(語彙力

(2)

あと、普段触れない分野のセッションとか聞けるのも良いと思います。
僕が個人的にリスペクトしてやまない日本の初代MVPが「聞きにいこうと思ってるんですよね」というコメントを受けて、僕もSDGs入門のセッションを聞いてみました。
www.japandreamin.com

まだうまく整理できてないですが、こういったことを自分ゴトと捉えて(いつか)頑張れたら良いな、と思いました。
ちなみにアンケートの結果は「Education」でしたが、さてはて...?w

(3)

ランチセッションでTeam Spiritの小泉さんのセッションに参加しました。
www.japandreamin.com

Product Managerという人種が一体何をやっているのか?という話を簡潔に語ってくれてました。
また、色んなことに興味を持ってる人は合うかもね、というコメントが印象的でしたw

最後に質問したら書籍(「サブスクリプションシフト」)を頂きました。ありがとうございます!

さいごに

また来年、頑張れたら頑張りたいと思います。知らんけど