AWS×EAIツールの連携考察、からのQuickSight触ってみた

## はじめに
この度、ANGEL Calendarの企画に参加させていただいています！
様々な良記事が投稿されておりますので、是非こちらのリンクからご覧ください！

https://qiita.com/organizations/2024-angel-dojo

本記事では、私が普段の業務で触れているEAIツールとAWSをリンクしてみようと考えてみました。
拙文ですが、ご興味ある方はぜひお付き合いください。

## EAIツールとは
[EAI](https://aws.amazon.com/jp/what-is/enterprise-application-integration/)とはEnterprise Application Integrationの略で、企業内で使用される複数の異なるシステム間において、データや業務プロセスを効率よく統合するミドルウェアのことです。
今日、企業は様々なシステムを導入していますが、その多くは業務・部門ごとに開発されており、各システム上にデータが分散、サイロ化されています。
こういった状況下で、必要な情報を迅速に取得できるようにするため、EAIツールが役立ちます。

https://aws.amazon.com/jp/what-is/enterprise-application-integration/

## ETLとの違い
混同しやすい概念としてETLがあります。
[AWS Glue](https://aws.amazon.com/jp/glue/)などのETLツールは、Extract・Transform・Loadの頭文字を取ったIT用語で、データの抽出・変換・書き出しを行うことによって、データを集約・統合することを目的としています。高度なデータ分析やデータマイニングが主な用途となります。
EAIツールは、データを単一のデータウェアハウス等に集約することを目的とはしていません。CRMやERPなどを使った業務システムやWebシステムといった、システム間の違いを吸収しながら、複数アプリケーションを通じてデータをやり取りするのが目的です。

https://aws.amazon.com/jp/glue/

## EAIツールとAWSの組み合わせ
AWSサービスを組み合わせてEAIを実現することも可能ですが、必要なアダプタやEAIツールにパッケージングされた機能の過不足等を考慮し、比較・選定を行う必要があります。

AWSとの連携の強化を進めているEAIツールも多く、必ずしもツールの得意領域までをAWSに頼らなくてもよさそう。。。(認識違ったらごめんなさい！)

そこで、EAIツールを使用しつつ、AWSを組み合わせたサービスの形を考えてみました。
挙げればキリがないですが、３例ほどまとめてみます。

### ■ リアルタイムデータ統合プラットフォーム
<dl>
<dt>1.データの収集</dt>
<dd>・EAIツールにより様々なデータソース（センサー、アプリケーション、データベースなど）からデータを収集</dd>
<dd>・これにより、異なる形式やプロトコルのデータを一元的に取り扱える</dd>

<dt>2.ストリーミング処理</dt>
<dd>・Kinesisを使用して、収集したデータをリアルタイムでストリーミング処理</dd>
<dd>・データのフィルタリング、変換、集約を行い、必要な情報を抽出</dd>

<dt>3.保存</dt>
<dd>・RedshiftやS3にデータを保存</dd>

<dt>4.可視化と分析</dt>
<dd>・QuickSightを使用し、データの可視化とダッシュボードの作成</dd>
<dd>・リアルタイムでデータの変化を監視し、ビジネスインサイトを得る</dd>
</dl>

#### ユースケース
EAIツールがデータの収集や初期の変換、ルーティングを担当し、Kinesisはその後のリアルタイム処理を担当することで、各ツールの強みを活かせる。スマートシティ、金融、製造業など、リアルタイムの監視・分析、意思決定に活用できそう。

### ■ IoTデバイス管理とデータ分析プラットフォーム
<dl>
<dt>1.IoTデバイスの管理</dt>
<dd>・AWS IoT CoreでさまざまなIoTデバイスを安全に接続・管理</dd>
<dd>・デバイスからのデータを収集</dd>

<dt>2.データの処理と連携</dt>
<dd>・EAIツールにより、収集したデータを異なるシステムやアプリケーションに連携</dd>
<dd>・データの変換、フィルタリング、ルーティングを行い、必要な場所にデータを提供</dd>

<dt>3.リアルタイムデータ処理</dt>
<dd>・Lambdaを使用して、リアルタイムでデータを処理</dd>
<dd>・イベント駆動型のアーキテクチャを採用し、データの変化に即対応</dd>

<dt>4.保存と分析</dt>
<dd>・S3等にデータを保存</dd>
<dd>・SageMakerを使用して、機械学習モデルを構築し、データ分析を行う</dd>
<dd>・QuickSightでデータの可視化を行い、インサイトを得る</dd>
</dl>

#### ユースケース
こちらもEAIツールでデータ収集、AWSに保存・分析の形。スマートホームや産業用のIoT、医療やヘルスケアにも活用できそう。

### ■ カスタマーエクスペリエンス向上プラットフォーム
<dl>
<dt>1.顧客データの統合</dt>
<dd>・EAIツールでさまざまなソース（CRMシステム、ウェブサイト、モバイルアプリなど）から顧客データを収集し、統合</dd>
<dt>2.パーソナライズされた推奨機能</dt>
<dd>・Amazon Personalizeで、顧客データに基づきパーソナライズされた情報提供</dd>
<dd>・過去の購入履歴や閲覧履歴に基づいて、顧客に最適な商品やサービスを推奨するなど</dd>
<dt>3.チャットボットによる顧客サポートの自動化</dt>
<dd>・Amazon Lex等を使用してチャットボットを構築</dd>
<dd>・よくある質問への対応や、簡単なトラブルシューティングなど</dd>

#### ユースケース
ECサイトや金融サービスなど、商品やサービスの推奨、自動サポートが求められる場面。

## Amazon QuickSightを触ってみる

挙げてきたように、基本①EAIツールで複数のシステムからデータを統合し、②AWSに保存して分析や意思決定に寄与する、という形になりそうです。
役割上、BIツールである[Amazon Quicksight](https://aws.amazon.com/jp/quicksight/)は特に相性が良いのですが、
私自身まだQuickSightを使ったことがないため、この機会に触ってみようと思います。

### 手順
+ QuickSightにサインアップ
+ データセットの準備
+ 分析

シンプルな３段階です。

### QuickSightにサインアップ
初めてQuickSightを使う場合、まず、コンソールからQuickSightにサインアップを行います。

![SU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/8c574077-97d9-3b4c-05f5-8fe66cf64e54.png)


その際に選択するQuickSightリージョンは、ユーザ情報を格納するディレクトリをどのリージョンに確保するかを指定するもので、ここで選択したリージョンに無料で使用できるSPICE領域が確保されます。

:::note info
SPICE領域
QuickSightにはSPICEというインメモリ型の高速データベースが内蔵されており、SPICEの領域にデータを取り込んでおくことで、高速なBI応答が可能になる。(SPICEを用いずAthenaやRedshiftに直接クエリしても利用可能)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/9bbb7c42-b6e4-5270-e54f-26bc88807054.png)
([Amazon QuickSight - Visualization Basics (Japanese) (workshops.aws)](https://catalog.us-east-1.prod.workshops.aws/workshops/aa601d0b-84c9-4f77-b9a7-5954d8574cd5/ja-JP/2-build-your-first-dashboard/understand-data-connect-and-prepare) より引用)
:::

### データセットの準備
次に、分析に用いるデータを準備します。
今回はS3に格納されている2つのCSVファイルを用いるので、URLを用いてデータソースを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/bd238883-9ff6-3f45-9eda-f0086258bd94.png)
接続ができたら、以下のようにデータ編集画面に移ります。
ここでは、フィールド名を変更したり、複数のデータソースをジョインしたりと、利用しやすい形に修正できます。
下画像では顧客IDを基準にCSVをInner Joinしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/90222b75-b042-3b43-656b-ab8aa5f3612c.png)

今回はCSVファイル同士でしたが、異なるDB(PostgreSQLとMySQLなど)のテーブルとCSVをジョインすることも可能です。

保存して視覚化すると、分析画面に移行します。

### 分析
分析画面は左から３分割されています。
左(データ)：フィールド一覧。ビジュアルで用いるものを選択する
真中(ビジュアル)：グラフなどの形式を選択する
右(シート)：グラフなどを作成し配置する場所

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/9d0c555c-f370-27dc-bab4-e996da8c2716.png)

実際に１つグラフを作成してみます。
ビジュアルのパネルで用いたいグラフ(ここでは折れ線グラフ)を選択すると、フィールド定義設定画面が表示されます。
使いたいフィールドをドラッグ＆ドロップし、シートの右に新たに表示されるプロパティから軸の単位や表示形式を少し修正すると、あっという間に下のようなグラフが作成できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/a8eb4fe0-2f96-2fb4-c5de-79b6080aaab6.png)
ビジュアルの右上にある … からMLによる予測の追加も簡単にできます。
この予測に使うモデルはユーザ側では調整できませんが、別途提供されているAmazon SageMakerとの連携機能を利用すると、ユーザ独自に学習させたモデルを使った分析も可能だそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/284eae9a-b59a-7817-f483-7479485ce591.png)

同様に、KPIやワードクラウド、分類別グラフなど一つずつビジュアルを追加していきます。
体裁を整えて、以下のようなダッシュボードが作成できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3884409/4c3a678b-24a1-22c0-1976-e15308cd2b6b.png)

### 使ってみて
QuickSightにより、直感的かつ簡単にダッシュボードを作成できました。
今回触れた部分はほんの入り口で、できることはまだまだ幅広いです。
先述のSageMakerとの連携や、異常検知の実装、コードでダッシュボードを作成するなど、時間を見つけてさらに深めていきたいと思います。

## 最後に
ここまでお付き合いいただきありがとうございました。
投稿を引き受けたものの、中々ネタが思いつかず実力不足を痛感していますが、とても良い刺激になりました。
これを機に勉強もアウトプットもがんばろ。
ちょっとしたことでもよいので、ご意見やご指摘等あればご教示ください！

冒頭の繰り返しになりますが、[ANGEL Calendar](https://qiita.com/organizations/2024-angel-dojo)では毎日ブログが投稿されています。
興味深い記事ばかりですので、是非他の記事もご覧くださいね！