【データモデル】セールスフォースデータモデルを使用してみる

# はじめに #
Sharperlightにはセールスフォース用のデータモデルも用意されているので、今回はそのデータモデルを使用して簡単なレポートを作成してみたいと思います。

セールスフォースは、クラウドベースの顧客関係管理（CRM）ソフトウェアです。
Sharperlightは、セールスフォース用のデータモデルを用いてそのAPIと会話し、クラウド上のデータをローカルに準備したデータベースと同期することで、個々のニーズにあったレポーティングを可能にします。

# データモデルのダウンロード #
セールスフォース用データモデルは、[Sharperlight](https://www.sharperlight.com/)のサイトからダウンロードします。
トップメニューから**Resources** -> **Datamodels**とアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/7c3b3722-d94e-e89f-e651-fe229cb6e626.png)
Sharperlightが開発、提供するデータモデルの一覧が表示されるので、その中からセールスフォース用データモデルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fb5f75e2-0590-1074-28a5-b43bede6d8c1.png)

# データモデルのインストール #
ここからはSharperlightがインストールされていることを前提とします。

SharperLightサービスを含むすべてのSharperLightアプリケーションを閉じます。
SharperLightのアプリケーションメニューを起動し、`データモデルのインストーラー`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/774e42ad-b551-1062-060f-474a1407f027.png)

`データモデルのインストーラー`が起動したら、追加ボタンを利用して先ほどダウンロードしたデータモデルを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9243fe0a-b327-f82f-1d63-35b81e2d65c0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/3370531f-1d2a-eecf-8ce3-dfb42aacff49.png)
`完了`ボタンでインストールを終了します。同時にデータモデルのコンパイルが自動で行われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/18fb23db-a257-f563-7bb0-a49e09114d8c.png)

# データベースの準備 #
マイクロソフトSQLデータベースに、空データベースを準備します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fa4a9db5-ea32-eaaf-740f-b37df5ee3d63.png)

# データモデルとデータベースの接続 #
Sharperlight`クライアントのセットアップ`を利用して、セールスフォース用データモデルと同期用に準備したデータベースの接続を定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/70bd2fef-9dd7-4148-12ff-dadd5a59ba8d.png)
今回は、このようにデータベースサーバーの認証を使用しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2ec6917f-336e-3030-0bbb-3ac6ae291a52.png)
最後に`接続テスト`ボタンで接続を確認します。
`OK`ボタンで`クライアントのセットアップ`を終了します。

# API接続情報の設定 #
次にSharperlightがセールスフォースAPIと会話するための接続情報を設定します。

あらかじめセールスフォース側でAPI接続を有効にするための設定を行ってください。そうすることで ConsumerKeyやConsumer Secret等のキー情報が手に入ります。

Sharperlight`サイトセットアップ`を利用し、取得したキー情報を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e456a27a-b3ec-0b59-c193-686f49f9d3f2.png)
プロダクトの設定から**SalesForce**を選択すると、右側にキー情報を入力するプロパティが表示されます。以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/75ec985e-456d-2b7c-404f-c44364639044.png)
設定が済んだら、`閉じる`ボタンで保存します。

# 同期の開始 #
以上でセールスフォースとのデータ同期の準備が終了したので、Sharperlightサービスを起動して同期を開始してみます。
### Sharperlightサービスの起動 ###
Sharperlightアプリケーションメニューより`サービス`を選択して起動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6cd21991-0e3c-da84-3309-fe35cb7abcd7.png)

もしくはWindowsサービスからSharperlightサービスを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e9ea664f-6da8-bc35-bb95-1e62e67717bc.png)

### セールスフォース同期WEBインターフェースの使用 ###
Sharperlightアプリケーションメニューより`ソリューション`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a6200e73-80d0-6c7a-ee45-71e6275296a3.png)

ソリューションが起動したらSalesForceの`Sharperlight SalesForce UI`をダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fbff415a-334e-a260-2929-a29b6f0c62a2.png)
ブラウザに同期等を管理するページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ee9eaa21-58eb-da3f-c801-173727fddcec.png)

### 同期処理の開始 ###
管理ページの上部メニューより、`System` -> `Sync Settings`を選択します。
**Execute Sync Now**ボタンで同期を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/23618f00-1423-a278-42ad-6547cf721db0.png)
同期が開始されると、Sync Stats画面に切り替わります。しばらく経過すると画面下部のProcess Progressリストの処理履歴が表示されるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/55913acf-54df-be9e-0ead-22d75037382a.png)
更に同期処理が経過すると...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a6f92888-3bcd-d735-83e2-08e54c912976.png)
同期が終了するとこのような表示となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a842248c-38f8-c738-05ec-efe398998aea.png)

# データの確認とレポーティング #
同期したデータを確認するため、管理ページの上部メニューより、`Dashboard`を選択します。
データが表示されてますね。私のセールスフォースは開発用のデモ環境なのでデータが少ないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4b5543ba-b322-ac5d-dc91-bb35f25e868d.png)

これは、Sharperlightが準備したレポート群ですが、SharperlightのパブリッシュクエリーやExcelアドインを利用して、あなたの目的に合ったレポートを作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/99c9375c-4ff9-a96c-4aa2-2abd48559e6d.png)

また、同期処理はスケジューリング可能なので、毎日決まった時間に同期処理を実行し、同期データベースを最新情報に保つことができます。
ウェブUIではここで実行時間を指定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/adcd5f05-8d11-7eb2-ebaa-acd6632675d0.png)
また、もう少し細かな設定をしたい場合は、Sharperlightスケジューラで行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e602e4ad-dac8-cd36-f5ea-75d6795a3b8a.png)


# おわりに #
セールスフォースのデータモデルを利用したデータの同期およびレポーティングを見てきました。データの同期を設定してしまえば、Sharperlightのもつ強力なレポーティング機能を利用して、個々の業務にあったレポートを作成できるのではないかなと思いました。