電通総研 テックブログ

電通総研が運営する技術ブログ

Amazon Quick SuiteとCodexによるAI駆動データ分析

こんにちは。エンタープライズ第一本部 戦略ソリューション 1 部の英です。

普段はWebアプリやスマホアプリの案件などを担当しています。あと、趣味でAIを勉強しています。

最近寒いですね。キーボードの下にデスクヒーターを配置したらQOLが爆上がりしたので、是非みなさんも試してみてください。
キーボードを打つ手がポカポカです。では、ポカポカの手で記事を書いていきます。

つい最近、AmazonのBIツールであるAmazon Quick SightがAmazon Quick Suiteにリブランディングされました。
東京リージョンではまだ新機能の一部が解放されていないのですが、新しいデザインになっているようなので触ってみましょう。
そして今回はAI駆動開発の要素も入れてみましょう。

人が頭を使うこと、手を動かすことは最小限にしてAI駆動データ分析基盤をサクッと構築してみます。
AI Agentは何でも良いのですが、最近勢力を上げてきているOpenAIのCodexを使ってみましょう。
VSCodeとも統合されていて使いやすいですからね。

ハンズオン形式で記事を書くのでよかったら手元でも一緒に試してみてください。
ただし有料サービスを使うので、費用が発生する点にはご注意ください。

本日構築するイメージはこんな感じ。
同時接続数やパフォーマンスは気にしなくて良いのでDWHはスキップして良いでしょう。フルサーバレスでいきます。

全体構成

本日の流れはこんな感じ。

  1. AIに全体構成を考えてもらう
  2. AIに必要な権限を聞いてjsonで吐いてもらう
  3. 人が権限の内容を確認し、問題なければIAMを発行して権限を付与する
  4. 人がAWS CLIでIAMを設定し、AIにユーザーを伝える
  5. AIが分析用のダミーデータ一式を生成するためのスクリプトを作成(物流系のデータ)
  6. AIがスクリプトからダミーデータを自動生成
  7. AIがローカルのデータをS3に同期
  8. AIがGlue CrawlerでS3のデータからカタログを作成
  9. AIがクエリを考案してAthenaでクエリを投げて結果をS3に保存
  10. 人がAmazon Quick SuiteでAthenaをデータソースに設定
  11. AIが分析用のプロンプトを考える
  12. AIがグラフを自動生成する(可視化)
  13. 人がグラフを評価し、AIにより深い指示を出してデータ分析を進める

"AIが"で始まるタスクが圧倒的に多いですね。
人は初期設定やAIのアウトプットの評価に集中することができます。これぞAI駆動

ここからが本題

1. AIに全体構成を考えてもらう

まずはChatGPT5.1 Thinking モデルに全体構成を考えてもらいます。

全体構成を考案してもらう

ChatGPT5.1 Thinkingの考案した全体構成をmermaidで可視化してみると以下のような構成でした。
ローカルにデータを吐いて、S3に上げたのちに分析用にデータを分解。
BIはAmazon Quick Suiteを採用してビジネスユーザーが外からデータ閲覧する構成になっています。
イメージ通りの構成ですね。

mermaidで可視化

2. AIに必要な権限を聞いてjsonで吐いてもらう

ここからはCodexで作業します。もうThinkingモードは使いません。
必要な権限をjsonで吐き出してもらいます。

mermaidで可視化

3. 人が権限の内容を確認し、問題なければIAMを発行して権限を付与する

いくつかの権限に分けて出力してくれました。
各ポリシーを作成し、Codex用のIAMに付与します。(不要な権限が含まれていないか目視で確認しましょう)
ハマりポイントとしてはGlue Crawlerを実行するためにGlueのサービスロールをパスロールで渡すところでしょうか。
それ以外は一般的なS3、Athena、Glueに対する操作権限です。
バケット作成後はリソースを絞りましょう

権限一覧

4. 人がAWS CLIでIAMを設定し、AIにユーザーを伝える

IAMを作成したらシークレットキーを発行します。
黄色枠にあるようにAWS CLIaws configureでcodexというプロファイル名にシークレットキーを埋め込みます。
これでVSCode(Codex)が自律的にAWSリソースにアクセスして自由にデータを操作できるようになります。

権限設定

5. AIが分析用のダミーデータ一式を生成するためのスクリプトを作成(物流系のデータ)

今回は手元に何もデータがないのでダミーデータから考えねばなりません。
Codexに以下のタスクを依頼してみます。

ダミーデータ作成

以下のようなダミーデータ作成用のスクリプトが完成しました。

ダミーデータ作成

このスクリプトで生成されるダミーデータは以下の関係性になっています。

  • dim_:顧客や商品などの実データ
  • fact_:配送や返品などの明細データ(実績データ)

スキーマの一覧とリレーション

6. AIがスクリプトからダミーデータを自動生成

先ほどのスクリプトでローカルにデータを作成してもらいます。

ダミーデータ作成

ローカル環境に以下のようにデータが作成されました。

ダミーデータ一覧

7. AIがローカルのデータをS3に同期

ローカルに作成したファイルをS3に同期してもらいます。
プロンプトが見切れていますが、ローカルに作成したデータをS3にアップロードすることを指示しました。

S3への同期

AWSコンソールでS3を開き、データが無事に同期されていることを確認します。

S3側のデータ確認

8. AIがGlue CrawlerでS3のデータからカタログを作成

GlueのCrawlerの権限はパスロールで渡してあるので、以下の一連の作業をすべて委譲することができます。
S3のデータをスキャンしてスキーマを自動推論し、Data Catalogにテーブルを作成します。

カタログ作成

9. AIがクエリを考案してAthenaでクエリを投げて結果をS3に保存

注文件数、配送遅延を分析し、その結果をCSV形式でS3バケットに保存します。

カタログ作成

S3バケットのathena-results/に結果が格納されていることを確認。
チャットの方にも5月の配送遅延の平均は122分と記載されていますが、この数値はAthenaで実際にクエリを実行した結果と一致しています。
(ダミーデータの品質がイケてないため、平均遅延2時間という狂った世界になっていますがいったん無視してください。5月に何があったんだ・・・。)

Athena結果

ついでに分析用にビューをいくつか作成しておきます。Codex経由で作成しました。

ビューの確認

10. 人がAmazon Quick SuiteでAthenaをデータソースに設定

ここから少しだけ人の手による作業が必要です。
AWSコンソールでAmazon Quick Suiteを開きます。 (※Amazon Quick Sightの開始画面がAmazon Quick Suiteに切り替わっています)

ビューの確認

ちなみにAmazon Quick Suiteのフル機能は以下のリージョンでのみ提供されており、東京はまだです。

ビューの確認

引用:Amaozn Quick Suite

初期設定画面でリージョンを東京に切り替えます。

QuickSuiteの初期設定

「アカウント作成」を押下すると以下の画面に遷移します。作成に1分ほどかかります。

QuickSuiteのアカウント作成

アカウント作成が完了。
Amazon Quick Suiteに遷移」を押下することでダッシュボードに遷移します。

QuickSuiteのアカウント作成完了

デフォルトのダッシュボードが開きました。

QuickSuiteの初期ダッシュボード

次は権限の設定を行います。
「Quick Suiteを管理」を押下します。

QuickSuiteを管理

AWSリソース」を選択します。

QuickSuiteの権限設定

S3とAthenaを有効にします。
S3はバケットも選択しておきます。

QuickSuiteのリソース設定

バケット指定

次はSPICE容量を購入します。
SPICE (Super-fast, Parallel, In-memory Calculation Engine) の頭文字から来ています。かっこよすぎる。

SPICE購入

いったん1GBを購入。

SPICE購入1GB

参考:SPICEの価格

容量が追加されていることを確認。

SPICE購入結果

次はデータソースの接続です。

データソース

Athenaを選択して次へ。

Athena選択

データソース名を設定し、「接続を検証」を押下。

接続検証

検証済みになればOK。

接続OK

追加したデータセットを押下。

データソース選択

「データセットの作成」を押下。

データセット作成

先ほど作成したビュー(v_fact_shipments)をSPICEに追加します。

テーブルの選択

迅速な分析のためにSPICEにインポートを選択して「視覚化する」を押下。

データセット作成の完了

取り込みが完了すると以下の画面に遷移します。
この画面でデータの可視化を行います。

可視化の初期ビュー

棒グラフを手動で追加してみる。

棒グラフの追加

X軸にcarrier_id(配送業者)を追加すると配送業者別のレコード数の棒グラフが表示された。

棒グラフをダッシュボードに追加

11. AIが分析用のプロンプトを考える

先ほど作成したビューでどんな可視化が有効か、いくつかパターンを考えてもらいます。
日時の出荷件数の推移を可視化しましょう。

可視化方針の検討

12. AIがグラフを自動生成する(可視化)

ビジュアルタブで「構築」を押下する。

構築

画面の右にAmazonQが表示される。

AmazonQ

プロンプト①:日別の出荷件数を折れ線グラフで作成してください。期間は2024-05の1か月とします。

プロンプト1

ものの数秒でグラフが作成されました。
「ADD TO ANALYSIS」を押下してダッシュボードにグラフを追加してみます。

プロンプト1結果

日別の出荷件数の折れ線グラフダッシュボードに追加できました。

プロンプト1結果をダッシュボードに追加

プロンプト②:配送業者ごとの平均の遅延(分)を棒グラフで。実績がない行は除外。値は delay_min の平均。大きい順に並べて、数値ラベルも表示して。

とやりたいところですが、「遅延」は計算が必要なので、まずは計算フィールドを作成する必要があります。
計算フィールドも自然言語で作成可能です。「+計算フィールド」を押下します。

計算フィールドの追加

どんな値が欲しいのかを言語化して伝えます。

計算フィールドの作成

計算フィールドのプロンプト

式が提案されるので、「挿入」を押下する。予定到着時刻と実績到着時刻の差を計算しています。

計算フィールドのプロンプト入力

計算フィールドを設定して「保存」を押下。

計算フィールドの保存

計算フィールド(delay_min)が追加されました。
次はこれを使ってグラフを作成します。

計算フィールドの追加が完了

先ほどのプロンプトを再実行すると配送業者別の平均遅延時間のグラフを追加することができました。

プロンプト2のグラフをダッシュボードに追加

13. 人がグラフを評価し、AIにより深い指示を出してデータ分析を進める

では先ほどの配送のビューからより深堀分析を進めます。

深堀分析の提案

いくつかのビューを提案してくれたので作成を依頼します。

深堀分析用のビュー一覧

権限は渡してあるので作成を進めてくれます。

深堀分析用のビューの作成

Glueを確認すると追加で複数のビューが作成されていることを確認できました。

深堀分析用のビューの確認

新規ビューのv_shipments_enrichedを選択して、SPICEにインポートする。

深堀分析用のビューをテーブルとして追加

先ほどの画面で「データセットを追加」を押下する。

データセットを追加1

SPICEに取り込み済みのv_shipments_enrichedを選択する。

データセットを追加2

v_shipments_enrichedの可視化方針を決めます。

可視化用グラフの考案

先ほどと同様に計算フィールドをAmazonQを使って自然言語で追加します。

計算フィールドの考案

プロンプト③:月別×配送業者のオンタイム率をヒートマップで表示

月別の配送業者別のオンタイム率(予定通りに配送できた割合)をヒートマップで表示することができました。

プロンプト3の結果

さいごに

記事が長くなってしまうのでこの辺で終わります。
今回のポイントとしては以下の2点です。

  1. Codex × AWS CLIでデータ分析基盤を自動構築できる
  2. AmazonQ in Quick Suiteなら非エンジニアでも簡単にデータの可視化が行える

扱うのに少しだけAWSの知識が必要ですが、AIの力でデータ分析の民主化がまた一歩進んだ感じがあります。

これからもAWSやAI関連の検証記事をたくさん書いていきます。
↓ のスターを押していただけると嬉しいです。励みになります。
最後まで読んでいただき、ありがとうございました。
エンタープライズ第一本部では一緒に働いてくださる仲間を募集中です。以下のリンクからお願いします。

私たちは一緒に働いてくれる仲間を募集しています!

中途採用-エンタープライズ第一本部

新卒採用-エンタープライズ第一本部

執筆:英 良治 (@hanabusa.ryoji)
レビュー:@miyazawa.hibiki
Shodoで執筆されました