今からでも遅くないDreamHouse総復習!

はじめに

皆さん、こんにちは。
iPhone 7の発表からそわそわしているソリューション部の植松です。

早速本題となりますが、皆さんは今年の夏に開催されました
「Salesforce Summer Tokyo 2016」には参加されましたでしょうか。

私は主に開発者セッションに参加してきました!
Developer Keynoteでは弊社製品である「mitoco」も取り上げて頂き、
イベント全体を通してLightningを始め、Heroku・Bot・IoTなどの様々な技術を
キャッチアップすることが出来ました。

なぜ今更夏のイベントを思い返しているかとお思いの方もいらっしゃるかもしれませんが、
イベントで動いていたサンプルアプリケーションの最新技術気になりませんでしたでしょうか!?

個人的には以下の様な技術が気になりました。

  • モバイルとWebアプリケーションの実装
  • Facebook Messanger上で動作するBot
  • Iot機器をLightningコンポーネントから操作
  • プロセスビルダー活用したSlack連携

実は上記の様な実装の大部分が公開されていることはご存知でしょうか!?
既にご存知の方でもすべて確認するには大変なボリュームの情報が公開されています。
そこで参考になった部分をエンジニア目線で解説しながら復習したいと思います!

公開されている資料

タイトルに記載の「DreamHouse」とは、イベントの各所で使用されていたサンプルアプリケーションとなります。様々なサンプルがありますが、ブランディングが統一されていて全体像が把握しやすいと個人的に感じました。
日本語サイトが用意されていますので日本語サイトを利用したいと思います。

また、注目すべきはGithubのリポジトリです!
それぞれの機能のサンプルコードが公開されており、どれも参考になります!
イベントの公開されている資料とともに以下にまとめました。

DreamHouse

アーキテクチャ

まずはアーキテクチャをご確認下さい。
Force.comを中心としてHerokuやWEBサイト、Salesforce1などApp Cloud上で構築された複数のアプリケーションが連携しています。

インストール

実査に環境を構築して体験されたい方は、インストール手順に従ってDeveloper環境に非管理パッケージをインストールすることでサンプルを試すことが出来ます。

※1点補足です。最後の方の手順3.でナビゲーションメニューに「物件エクスプローラー」を追加する手順がございますが、先にLightningタブを作成して必要がございましたので、以下の用にLightningタブを作成して手順を進めました。

PropertyExplorer.png

総復習

上記で掲載されている全セクションの動画をチェックしました!
各セクションの技術概要やポイントをまとめてみました。

セクション タイトル

技術概要・ポイント

最小限のコード 80%のコーディング削減 ほとんどノンコーディングで実装可能なSalesforce標準機能の説明。
アプリケーションビルダー Lightningコンポーネントをアプリケーションビルダーでレコード編集画面に配置。
プロセスビルダー プロセスビルダーによる自動化。レコード作成、Chatter投稿、Apex呼び出し等。
カスタム開発 Lightningコンポーネント レコード画面にLightningコンポーネントを配置。Lightning アプリケーションをLightningタブから起動。
Lightningデザインシステム Lightningデザインシステム概要。その他フレーム上でLightningデザインシステム利用するメリット。
Heroku Angular2とIonic2によるWEBアプリケーション。Heroku ConnectによるSalesforceとの連携。
モバイル Salesforce1アプリ Salesforce1のメリット(開発スピードやネイティブ機能の利用など)
Mobile SDK Mobile SDKを利用したサンプルアプリ(Ionic2 or React Native)
コミュニティ Lightning コミュニティビルダー
Bot Facebook Messnger Salesforceと連携したFacebook Messenger Bot。Node.jsによる実装。
Alexa Alexa Bot。音声に反応し、Salesforceから情報を取得し応答する。
Slack プロセスビルダーにる着信フック。スラッシュコマンドやBotによるSalesforce連携。
IoT スマート照明 VisualforceからPhilips Hue ブリッジを制御するサンプル。
スマートロック VisualforceからコンポーネントからLockitron社のロックを制御するサンプル
スマートサーモスタット VisualforceからコンポーネントからEcobee3 スマートサーモスタットを制御サンプル
機械学習 PredictionIO Heroku 上で実行できる機械学習フレームワークであるPredictionIOのデモ。

全体をチェックして気づいたことがいくつかありましたので幾つかピックアップしてみます。

自動化プロセス

まず、外部サービスの呼び出しなどで使用されるプロセスの自動化には、
これでもかという程プロセスビルダーが使用されていました。

プロセスの自動化にはプロセスビルダーやビジュアルワークスフロー、ワークフローなど複数の方法がありますが、
起動条件やApex呼び出しの要件でプロセスビルダーが利用に適しているケースが多かったようです。

ProcessBuilder.png

開発者目線だと実行順序やトランザクション制御を考慮して、
はじめからApexトリガーによる実装にしてしまいたくなりがちですが、
プロセスビルダーのような自動化の手段がどんどん機能強化されてきている印象です。

非同期でも問題ない処理や再帰的に起動して良い処理などは自動化プロセスとの相性が良さそうなので、
そのようなビジネスロジックは自動化プロセスから呼び出せるように実装するアプローチも増えてきそうです。
開発者として上記の様なアプローチに応えるためには、どこから呼ばれても問題ないビジネスロジックを提供できるのがかっこいいのかもしれません。
やはりここでも標準に寄せる部分とそうでない部分の両方を使いこなすのが、Salesforceエンジニアの腕の見せ所となりそうですね!

ちなみに自動化プロセスは起動条件や利用用途に応じていつも何を選んでいいか迷ってしまいます
そんな時は私はこちらのTrailheadの記事中の表がとてもわかりやすいのでオススメです。

JavaScript

LightningコンポーネントやWEBアプリ、モバイルアプリでJavaScriptでの実装が目立ちました。
特に9月に入りRC6がリリースされたAngular2は、最近エンジニアの勉強会などでも多く取り上げられているように感じます。
最新の技術を使った動くサンプルがソース付きて共有されているのはとても参考になりました。
またサーバサイドの実装もNode.jsが多く利用されています。

Heroku

HerokuとSalesforceの利用例と言えばまずHeroku Connectがまず思いあたります。
しかしPredictionIOの動画を見て機械学習でも検証してみたくなりました。

Lightning Experience (通称LEX)

動画の中ではほとんどLEXで操作説明されています。個人的にはLightningデザインシステムが好きなのでLEXに期待しています!
LEXとLightningコンポーネント + 外部フレームワークでもLightningデザインシステムを利用することで、
全体のUXはかなり統一される印象を受けました!

最後に

流行りの外部サービスの連携やAngular2など最新の技術を利用したサンプルはいかがでしたでしょうか?
イベントに参加していても意外と詳細は知らない方も多いかと思われます。

また今回はGithub等のサンプルに注目しましたが、
実は非管理パッケージでインストールされるApexクラスやLightnignコンポーネントも参考になります!

今後もサンプルは積極的に活用したいと思います!
私はAngular2とIonic2でネイティブ機能を利用したアプリの開発をチャレンジしてみました。

ノンコーディングで実装できる点が多いことと、
サンプルがあるおかげで作りたい機能に集中することができます。

下記は社内のブックレビュー等の情報共有をテーマにしたアプリとして少しブランディングして遊んでみました。
少しのコードを修正しただけ雰囲気出ますねー!
ここからIonic2やCordovaの機能を色々と検証しようかと思います。

サンプルアプリ_サイドメニューサンプルアプリ_ホーム

皆さんも気になる技術はございましたでしょうか?
ブログを見て頂いて気になるキーワードを見つけて頂けたら幸いです!