Dreamforce2014 レポート1日目 - Magical External Objects - Seamless Integration is here !!

皆さんこんにちは!
Dreamforceに参加するためサンフランシスコにやってまいりました。

幼稚園の運動会で普段動かしていない体を酷使した直後の長時間のフライトだったせいか腰を痛めてしまい、初日にいきなり出鼻をくじかれましたが、宿泊しているホテルの近くのスーパーで湿布を張ってゆっくり寝たらなんとか痛みも引いてくれたところです。

二日目からはケーブルカーに乗って急勾配な上り坂と下り坂を楽しんだ後に、フィッシャーマンズワーフでシーフード料理を食べたり、ホテルの近くでクラムチャウダー等を食べたりと、サンフランシスコを満喫しております。

DSC_1379DSC_1386DSC_1297

サンフランシスコの今の気候は空気が乾燥していて、昼間は日差しが強く少し暑いくらいですかね。
腕とか少し日焼けしたように思います。でも夜は寒く感じる時もあり服装には注意が必要な時期かもしれません。

ちなみにサンフランシスコはもちろんアメリカに来たこと自体が初めてで、色々と発見することがありました。

街を散歩していると色んなところで何かの消臭剤?のような匂いや、下水道や強い香水の匂いで気分が悪くなる時があり、個人的にちょっと苦手です(他の地域でもそうなのかな?)

でも、前が詰まって身動きが取れなくなった車の運転手が激しくクラクションを鳴らしていると、タトゥーをがっつり入れた警官がその車に近寄り「気が 短いなお前、俺だったらちょっと待つぐらい全然気にならないけどな(意訳)」って感じで大声で注意していたり、普通に地下鉄に自転車(折り畳みではない) を担いで乗り降りする人がたくさんいたりと、何かこう自由な感じは個人的に好きですね。

また、「ライター貸してくれる?今日の天気はあんまりよくなくて気分が滅入っちゃうね(意訳)」なんていきなり話しかけてきたり、割り込みをせず順番を守ったりお年寄りには積極的に席を譲るし、基本的に友好的でマナーの良い人が多い印象を持ちました。

その一方で、私よりも若い子たちが物乞いをしていたりするのを何度も見かけて、先進国のアメリカでこういう情景を見た事には色々と考えされられるものがあります。

DSC_1348DSC_1415DSC_1295DSC_1291

そういえば初日に上の写真のBARTと呼ばれる地下鉄に乗ったのですが、一つ失敗をしてしまいました。

腰が痛かったのと睡眠不足で意識が朦朧としてたせいか、行先とは反対方向の地下鉄に乗ってしまいサンフランシスコから海中トンネル?を通って西オークランドに行ってしまったのです。

フィッシャーマンズの近くの駅から地下鉄に乗り、2つ先の駅で降りてホテルに帰ろうと思ったのですが、距離的にすぐに隣の駅に着くはずなのに地下鉄はいつまで経っても止まる気配がありません。
おかしいな~すぐに着くはずなのにな~と思ったので心配になり、隣に立っていた長身のイケメンに「次の駅はどこですか?」って片言の英語で聞いたら、まさかの西オークランド!
※今思うと、既に乗車しているのに「次の駅はどこですか?」って聞き方は何か変ですね(笑)

次の駅が西オークランドと聞いた次の瞬間、岩井さんが「オークランドは治安が良くないらしいよ」と言っていたのをはっと思い出し周りを確認したら乗客の中に悪人っぽい人が何人かいるように思えてきました(行先が西オークランドと分かるまでは何とも思わなかったのに・・・)

そして、さっき会話した長身のイケメンをふと見てみると、車内が暑かったせいか先程着ていたカーディガンを脱いでタンクトップ一枚になっていて、体 の露出している部分全てにタトゥーが・・・(会話した時は次の駅ばかり気になっていたのと肌を露出していなかったのでタトゥーには全然気付きませんでし た・・・)
その後、変な恐怖感にとらわれて西オークランド駅に着くまでの15分ぐらい?ずっと冷や汗が止まりませんでした。

西オークランド駅に着いたら猛ダッシュで反対側に移り、サンフランシスコに戻る地下鉄が早く来ることを願ったのですが、「サンフランシスコ行きはあと15分後だよ(意訳)」と無情な構内アナウンがすぐに流れました。

その間、アジア人が珍しいのか何なのか分かりませんがじろじろ周りの人に見られたり、マッチョで怖そうな黒人がぞろぞろとプラットホームに上がって きたり、独り言を何度も叫んでいるサラリーマン風の変なおじさんがいたりして、生きた心地がしないというのはまさにあのような状況なんですね。
とても怖い思いをしました。

えーと、このままだとサンフランシスコに旅行に来ただけの記事となってしまいますので、ここから少しDreamforceの事を書こうと思います。

スライド1

前回のブログでherokuを利用して外部のデータをSalesforceの画面から参照する記事を書きましたが、それに少し近い内容のセッションが13日(月)にあり、興味がてら参加したので、概要と感想を書いてみようと思います。

去年?ぐらいから発表されていた内容かと思いますが「External Objects」に関するセッションです。
概要は恐らくこんな感じだと思います。

「Salesforce外のデータソースをExternal Objects(外部オブジェクト)化して、あたかもカスタムオブジェクトにアクセスしているかのようにシームレスにSalesforceからアクセスできるという話は知っているよね?
今日はね、ODataじゃなくてApex Connector Frameworkを使って独自のコネクタを実装し、Googleのスプレッドシートのデータを外部オブジェクト化するサンプルプログラムの説明とデモをするよ(ほぼ推測)」
※間違っていたらすいません

実装のサンプルとデモの前にまず、外部データをSalesforce上の画面で表示させようとした場合、何かしらの手段でSalesforceに取り込むのが一つの選択肢になると思います、その場合の課題の一例をあげておりました。

スライド9

例えば各支店から大量に送られてくるCSV形式やExcel形式のデータをある部署のAさんがDataLoaderや DataImportWizardを使用してSalesforceに取り込む、という運用をしている場合、非効率だし間違いを起こしやすいのではないか、 と指摘されていたのかと思います(推測)

スライド11

そして次に、外部オブジェクト化すれば手動でデータを取り込むよりも運用が楽になるし、且つストレージ領域も食わないからいいことずくめだよ、と仰っていたと思います(推測)

スライド12

これが最終的なイメージのようです。
画面上半分がSalesforceのビューとして表示されていて、画面した半分がGoogleのスプレッドシートとなり、Salesforce上にデータ が存在していないのにも関わらず、外部オブジェクト化されたGoogleのスプレッドシートのデータがSalesforceの標準機能上に問題なく表示さ れていることを伝えているのかと思います。

スライド15

External ObjectsはWinter'15でGAだそうです。
先程新たにDeveloper組織を作成したところ標準で有効になっていました。

外部オブジェクト化する上で「External Data Source(XDS)Framework」の存在がとても重要となり、このフレームワークによってSalesforce外のデータソースに対して下記を実現することができるそうです(推測)
※但し、色々と制限がつきそうな気がしますので詳細を別途確認することをお勧めします。

・オブジェクト化
・ページレイアウトも設定可能
・Apexからカスタムオブジェクトのような感じで利用が可能
・もちろんSOQLのFromにも外部オブジェクトを指定可能
・項目セットも使用可能可能?(デモで説明していたような、していないような・・・)
・SOSLもSOQLと同様?
・レポートや分析機能でも使用可能?

スライド47
発表のまとめとして最後に、この機能は開発者にもユーザにもうれしい機能となっていくだろうということを仰っておりましたし(推測)、私自身とても興味を持った内容でした。

その後Q&Aがあったのですが、他の方にとっても興味深い内容だったようで多数のエンジニアの方が質問をされていました。
同期のタイミングはどうなんだ?トリガは仕掛けられるのか?等、色々な質問をされていたのですが、いかんせん内容が全然聞き取れなかった為、消化不良な感じで終わってしまったのが心残りです。

とても印象的だったのが、質問された方の中にどう見ても自分の親父より一回りぐらい若そうな感じの方が数名いらっしゃったことです(外見から判断した年齢が間違っていたら大変申し訳ないのですが)
質問が少ししか聞き取れなかったのであれですが、恐らく現役の開発者でないと分からないような技術的に深そうな質問をされているのを見て、50過ぎてもガンガン開発してそうな人がアメリカには普通にいるんだなと実感し、とても印象に残りました。
日本で社会人として働いて12年程になりますが、そのぐらいの年代で開発するような方とは一度もお会いしたことがないので、この業界におけるアメリカと日本のキャリアプランに対する考え方というか、働き方の違いのようなものを少し感じたセッションでした。

最後に

セッションに参加して得た知識を元に「External Objects」についての考えや疑問をまとめてみました(間違いがありましたらすいません)

・Salesforce外のデータソースをオブジェクト化できるよ
・ODataでSalesforce外のデータソースと接続が可能なのであれば、これを使わない手はないよね
・ODataに対応してないけど(もしくはOData対応が現実的ではないけど)、HTTP(S)で容易にデータが取得可能なAPIが存在するのであれば、「Apex Connector Framework」を使用して、独自のコネクタを実装すればいいよね
・ODataに対応してない(もしくはOData対応が現実的ではない)、且つHTTP(S)で容易にデータ取得できない場合は、外部のデータソースの前にheroku上に実装したODataAPIを一枚かませばいいよね
・Salesforce上で外部データソースに対するDMLは実行できるんだよね?(デモでSalesforce側から登録していたような気がしたんだけど、見間違いかな・・・)
・どんな制限があるんだろう?
・トリガは仕掛けられるのだろうか?
・外部データソースにはもちろんアクセスコントロールなんて効かないんだろうなあ・・・

上記の考えが正しい事を確認したり疑問を解決するため、この後日本に戻ってから下記の何れかを試してみようと思います。

・「Apex Connecter Framework」を使用して、以前ブログで触れたDynamoDBのテーブルを外部オブジェクト化
・前回のブログの続きでheroku上でODataAPIを実装してRDS等のテーブル or S3に配置したCSVを外部オブジェクト化

また、可能であれば次回のブログ等で上記に関連した内容を記載しようかと考えています。