Common Data Service : Metadata-Visualizer でメタデータを視覚化する

先日 Common Data Service や Dynamics 365 のメタデータを視覚化できるツールが GitHub に公開されました。本記事では以下レポジトリにある README を元にツールを紹介します。

[GitHub: Metadata Visualizer](https://github.com/microsoft/PowerApps-Samples/tree/master/cds/Metadata-Visualizer)


# Metadata Visualizer

![Entity diagram example](https://github.com/microsoft/PowerApps-Samples/raw/master/cds/Metadata-Visualizer/images/intro-graphic.PNG)

Metadata Visualizer (MetaViz) は Dynamics 365 Customer Engagement や Common Data Service のデータベースよりメタデータをダウンロードして、エンティティや関連、登録されているプラグインなどを視覚化できるツールです。

## MetaViz の機能

自分の環境のデータベースから、エンティティやプラグインの情報をテキスト形式で取得して保存できます。テキスト形式で保存できるため以下のような事ができます。

- 結果をレポジトリに保存
- 他環境のデータベースと比較
- メタデータの変更を追跡
- メタデータだけを他の人に確認してもらう

以下に生成されるファイルの説明をします。

- トリガーの定義 (HTML 形式)

同期/非同期プラグインおよびカスタムワークフローアクティビティの情報が HTML
HTML 形式で保存されます。この情報にはフィルターしている属性の情報なども含まれます。これによりエンティティに対する、作成/更新/削除などの、どの操作でプラグインが実行されるかを確認できます。

- エンティティの定義 (テキスト形式)

エンティティの情報がテキスト形式で保存されます。これにはエンティティ自体の情報だけでなく、フィールドやその説明、データ型などすべての詳細が多言語化されたラベルやカスタムラベルを含めて保存されます。異なるバージョンのメタデータや、複数環境のメータデータを、任意のテキスト比較ツールを利用して差分を確認することができます。

- エンティティリレーションシップの相関図 (JSON 形式)

ER ビューワーを使ってエンティティの相関を表示する事ができます。任意のエンティティを複数選択して、表示することが可能です。

## 使い方

### アプリケーションのビルドと実行

1. ソリューションを Visual Studio で開き、実行。
2. ダウンロードダイアログが表示されたら、組織の URL を入力。
3. ファイルの保存先を指定。
4. 接続する資格情報を入力。
5. メタデータのダウンロードが開始される。完了まで数分かかる場合があるため待機。
6. ER ビューワーが起動し、既定で選択されているエンティティについてリレーションシップが表示される。

ビューワーでは以下のことができます。

- 必要に応じてウィンドウをリサイズする
- ズーム (+) アイコンを使ったりペンやタッチで操作
- ボタンにマウスオーバーすると機能が表示

### エンティティの選択を変更

1. ER ビューワーで **Entities** > **Clear** を選択。
2. 左ペインで任意のエンティティを選択。
3. **Diagram** > **Draw Selected Entities** をクリックしてリレーションシップを表示。
4. **Diagram** > **Draw Related Entities** を選択すると選択したエンティティに対するすべてのリレーションが表示される。

![Entity Relationship (ER) Viewer](https://github.com/microsoft/PowerApps-Samples/raw/master/cds/Metadata-Visualizer/images/er-viewer.PNG)

### エンティティのメタデータを表示

1. ER ビューワーのエンティティダイアグラムより任意のエンティティにマウスオーバーし、説明を確認。
2. エンティティをクリックするとフィールドやリレーションシップの情報が表示される。
3. 他のエンティティをクリックしてスキーマビューウィンドウに表示される情報を確認。
4. 次に任意のブラウザを開き、Common Data Service 環境や Dynamics 365 にログイン。
5. ER ビューワーよりエンティティを選択し **Selected Entity** > **Copy URL** をクリック。
6. コピーされた URL をブラウザに張り付け。レコードの一覧が表示れることを確認。

![Schema Viewer](https://github.com/microsoft/PowerApps-Samples/raw/master/cds/Metadata-Visualizer/images/schema-viewer.PNG)

### プラグインとカスタムワークフローアクティビティの確認

1. 任意のブラウザを開き、Common Data Service 環境や Dynamics 365 にログイン。
2. ER ビューワーより **Diagram** > **Trigger information** を選択。ブラウザで登録されているプラグインなどの情報が表示される。
3. エンティティのリンクをクリックして、特定エンティティに登録されたプラグインやカスタムワークフローの情報へ移動。
4. 他のリンクもクリックして表示される情報を確認。

![Trigger information page](https://github.com/microsoft/PowerApps-Samples/raw/master/cds/Metadata-Visualizer/images/trigger-view.PNG)

## FAQ

**Q. ER ビューワーに表示するエンティティの選択方法は？**

エンティティリストから個別に選択する必要があります。

1. **Entities > Clear** から一旦すべての選択を解除。
2. 表示したいエンティティを選択。
3. **Diagram > Draw Selected Entities** か **Draw Related Entities** メニューをクリック。

**Draw Selected Entities** メニューは、選択したエンティティに関連のあるエンティティを自動的に展開します。**Entities > Copy** and **Entities > Paste** メニューを使えば、現在選択されているエンティティをコピーできます。

**Q. 関連エンティティの追加や削除の方法は？**

ダイアグラムでエンティティを選択し、**Selected Entity > Remove** より削除、もしくは **Select Related Entities** から関連エンティティを追加できます。

**Q. ER ビューワーで使っているライブラリは何？**

[Microsoft Automatic Graph Layout](https://www.microsoft.com/research/project/microsoft-automatic-graph-layout/) (MSAGL). *MSAGL とはグラフ形式でデータを表示する .NET ツールです。Microsoft の Lev Nachmanson,、Sergey Pupyrev、Tim Dwyer および Ted Hart によって開発されました。

# まとめ

エンティティが増えてくると相関の確認は非常に面倒ですが、このツールがあれば履歴管理も含め簡単にできます。一度お試しください！