Ignite UI ドックマネージャーを利用したパーソナライズ可能なアプリケーションレイアウトの実装

![20210427130510.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/785128/6695472e-8d11-7ad8-3719-f0d65b904c8b.jpeg)

インフラジスティックスのWEBアプリケーション開発用の UI 製品である <a href="https://jp.infragistics.com/products/ignite-ui" target="_blank">Ignite UI</a> には「ドックマネージャー」という、ペインでアプリケーションのレイアウトをコントロールする部品が含まれています。ドックマネージャーを利用すると、エンドユーザーはペインをピン固定、サイズ変更、移動、非表示にすることで自分の使いやすい様にカスタマイズすることができます。

ドックマネージャーの動作イメージ
[![Image from Gyazo](https://i.gyazo.com/755d4d0c506c9e8d8a35dbec08a3b75a.gif)](https://gyazo.com/755d4d0c506c9e8d8a35dbec08a3b75a)

このドックマネージャーは開発者にとって、アプリケーションレイアウトにおける多くの可能性をもたらす一方で、具体的にどの様に自身のプロジェクトに組み込めば良いか、なかなか想像しにくい部品かもしれません。本記事では表形式でデータを一覧表示するための「グリッドコンポーネント」をドックマネージャーと組み合わせてデータの表示方法の幅を広げる例をご紹介します。UXを追求するフロントエンドエンジニアの皆様の参考になれば幸いです。

## グリッドコンポーネントの陥りやすいシナリオ

グリッドコンポーネントは、管理画面を持つ多くのウェブアプリケーションで、データの一覧を表示する際に利用されていることと思います。あくまでデータを一覧で確認するという目的の部品ですので、情報量は抑えたいものである一方で、実務上必要となる様々な情報を一覧画面で確認したいというエンドユーザーからの要望も上がってくるかと思います。そこでドックマネージャーを使用して、以下の様に、表示する情報の粒度を分けたレイアウトを考えてみます。

[![Image from Gyazo](https://i.gyazo.com/8fd045de99e0f59ef851e73a1e181bb6.png)](https://gyazo.com/8fd045de99e0f59ef851e73a1e181bb6)

仮に学校や学習塾のような、学生のテスト結果を管理するシステムとして、左側の赤色のエリアでは学生の名前とID、クラス番号を表示しています。この赤色エリアのグリッドの目的は、詳細情報を得たい対象の学生を素早く識別し選択できる様にすることです。ですので必要最小限の情報に留める様にします。赤色エリアで学生を選択すると、右側の青色のエリアに詳細情報が表示されます。

## デモアプリケーションを確認する

先ほど説明した内容を踏まえて、実際に Ignite UI のグリッドコンポーネント、チャートコンポーネント、ドックマネージャーを組み合わせて作成したデモアプリケーションを以下のリンクからご確認いただけます。
<a href="https://igjp-sample.github.io/react-demo-app/?lng=ja-JP" target="_blank">https://igjp-sample.github.io/react-demo-app/?lng=ja-JP</a>

上記のデモアプリケーションは React をフレームワークとし、<a href="https://jp.infragistics.com/products/ignite-ui-react" target="_blank">Ignite UI for React</a> の UI 部品を利用して構築していますが、全ての Ignite UI 製品（<span style="color: #ff0000">※</span>）において、同じ様な表現が可能です。

<span style="color: #ff0000">※</span> Ignite UI 対応のWEB開発フレームワーク ... Angular、ASP.NET (Core & MVC)、Blazor、jQuery、React、Web Components

このように、左側のエリアから欲しい情報に簡単にアクセスして、詳細な情報は右側のエリアで確認するという表現方法が可能です。

[![Image from Gyazo](https://i.gyazo.com/c717a3db2d2f4381ab0f89201712e20d.gif)](https://gyazo.com/c717a3db2d2f4381ab0f89201712e20d)

また、今回ドックマネージャーを利用してレイアウトを行なったことで、エンドユーザーが自分の見やすい様にサイズを調整することが可能です。全てのユーザーが同じ大きさ、画角の画面でアプリケーションを表示しているわけではなく、注目したい情報もユーザーによって異なる可能性があるため、パーソナライズ可能なレイアウトはUXの向上に一役買うでしょう。

[![Image from Gyazo](https://i.gyazo.com/b26d98803199656aa958cd0aba0c4539.gif)](https://gyazo.com/b26d98803199656aa958cd0aba0c4539)

## 発展：レイアウトの保存・読み込み

本記事ではドックマネージャーの機能のうち、シンプルなものの紹介に留めましたが、より複雑な要件を実現可能な機能もあります。そのひとつが「<a href="https://jp.infragistics.com/products/ignite-ui-react/react/components/dock-manager.html#%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E4%BF%9D%E5%AD%98%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF" target="_blank">レイアウトの保存／読み込み</a>」です。JSON形式でレイアウト設定を保存することができるので、エンドユーザーひとりひとりが個人の好みのレイアウト設定を保存して永続的に利用できる他、ユーザーの役割や業務シナリオに基づいた最適なレイアウトをあらかじめ定義しておき、必要なタイミングで読み込むといったことも可能になります。

## デモアプリケーションのソースコードや実装方法に関するお問い合わせ

今回ご紹介したデモアプリケーションのソースコードを確認されたい、手元で動かしたいなどのご希望があればご提供可能ですので <a href="https://jp.infragistics.com/about-us/contact-us" target="_blank">インフラジスティックスお問い合わせフォーム</a> よりご連絡をいただければ幸いです。
その他、ドックマネージャーやその他の UI 部品の実装方法や、こういったことが実現したいといった機能実現に向けたご相談などもお気軽にご連絡ください。