こんにちは。エンタープライズ第一本部 戦略ソリューション 1 部の英です。
普段はWebアプリやスマホアプリの案件などを担当しています。あと、趣味でAIを勉強しています。
最近寒いですね。キーボードの下にデスクヒーターを配置したらQOLが爆上がりしたので、是非みなさんも試してみてください。
キーボードを打つ手がポカポカです。では、ポカポカの手で記事を書いていきます。
つい最近、AmazonのBIツールであるAmazon Quick SightがAmazon Quick Suiteにリブランディングされました。
東京リージョンではまだ新機能の一部が解放されていないのですが、新しいデザインになっているようなので触ってみましょう。
そして今回はAI駆動開発の要素も入れてみましょう。
人が頭を使うこと、手を動かすことは最小限にしてAI駆動データ分析基盤をサクッと構築してみます。
AI Agentは何でも良いのですが、最近勢力を上げてきているOpenAIのCodexを使ってみましょう。
VSCodeとも統合されていて使いやすいですからね。
ハンズオン形式で記事を書くのでよかったら手元でも一緒に試してみてください。
ただし有料サービスを使うので、費用が発生する点にはご注意ください。
本日構築するイメージはこんな感じ。
同時接続数やパフォーマンスは気にしなくて良いのでDWHはスキップして良いでしょう。フルサーバレスでいきます。
本日の流れはこんな感じ。
- AIに全体構成を考えてもらう
- AIに必要な権限を聞いてjsonで吐いてもらう
- 人が権限の内容を確認し、問題なければIAMを発行して権限を付与する
- 人がAWS CLIでIAMを設定し、AIにユーザーを伝える
- AIが分析用のダミーデータ一式を生成するためのスクリプトを作成(物流系のデータ)
- AIがスクリプトからダミーデータを自動生成
- AIがローカルのデータをS3に同期
- AIがGlue CrawlerでS3のデータからカタログを作成
- AIがクエリを考案してAthenaでクエリを投げて結果をS3に保存
- 人がAmazon Quick SuiteでAthenaをデータソースに設定
- AIが分析用のプロンプトを考える
- AIがグラフを自動生成する(可視化)
- 人がグラフを評価し、AIにより深い指示を出してデータ分析を進める
"AIが"で始まるタスクが圧倒的に多いですね。
人は初期設定やAIのアウトプットの評価に集中することができます。これぞAI駆動。
ここからが本題
1. AIに全体構成を考えてもらう
まずはChatGPT5.1 Thinking モデルに全体構成を考えてもらいます。
ChatGPT5.1 Thinkingの考案した全体構成をmermaidで可視化してみると以下のような構成でした。
ローカルにデータを吐いて、S3に上げたのちに分析用にデータを分解。
BIはAmazon Quick Suiteを採用してビジネスユーザーが外からデータ閲覧する構成になっています。
イメージ通りの構成ですね。
2. AIに必要な権限を聞いてjsonで吐いてもらう
ここからはCodexで作業します。もうThinkingモードは使いません。
必要な権限をjsonで吐き出してもらいます。
3. 人が権限の内容を確認し、問題なければIAMを発行して権限を付与する
いくつかの権限に分けて出力してくれました。
各ポリシーを作成し、Codex用のIAMに付与します。(不要な権限が含まれていないか目視で確認しましょう)
ハマりポイントとしてはGlue Crawlerを実行するためにGlueのサービスロールをパスロールで渡すところでしょうか。
それ以外は一般的なS3、Athena、Glueに対する操作権限です。
※バケット作成後はリソースを絞りましょう
4. 人がAWS CLIでIAMを設定し、AIにユーザーを伝える
IAMを作成したらシークレットキーを発行します。
黄色枠にあるようにAWS CLIのaws configureでcodexというプロファイル名にシークレットキーを埋め込みます。
これでVSCode(Codex)が自律的にAWSリソースにアクセスして自由にデータを操作できるようになります。
5. AIが分析用のダミーデータ一式を生成するためのスクリプトを作成(物流系のデータ)
今回は手元に何もデータがないのでダミーデータから考えねばなりません。
Codexに以下のタスクを依頼してみます。
以下のようなダミーデータ作成用のスクリプトが完成しました。
このスクリプトで生成されるダミーデータは以下の関係性になっています。
- dim_:顧客や商品などの実データ
- fact_:配送や返品などの明細データ(実績データ)
6. AIがスクリプトからダミーデータを自動生成
先ほどのスクリプトでローカルにデータを作成してもらいます。
ローカル環境に以下のようにデータが作成されました。
7. AIがローカルのデータをS3に同期
ローカルに作成したファイルをS3に同期してもらいます。
プロンプトが見切れていますが、ローカルに作成したデータをS3にアップロードすることを指示しました。
AWSコンソールで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月に何があったんだ・・・。)
ついでに分析用にビューをいくつか作成しておきます。Codex経由で作成しました。
10. 人がAmazon Quick SuiteでAthenaをデータソースに設定
ここから少しだけ人の手による作業が必要です。
AWSコンソールでAmazon Quick Suiteを開きます。 (※Amazon Quick Sightの開始画面がAmazon Quick Suiteに切り替わっています)
ちなみにAmazon Quick Suiteのフル機能は以下のリージョンでのみ提供されており、東京はまだです。
初期設定画面でリージョンを東京に切り替えます。
「アカウント作成」を押下すると以下の画面に遷移します。作成に1分ほどかかります。
アカウント作成が完了。
「Amazon Quick Suiteに遷移」を押下することでダッシュボードに遷移します。
デフォルトのダッシュボードが開きました。
次は権限の設定を行います。
「Quick Suiteを管理」を押下します。
「AWSリソース」を選択します。
S3とAthenaを有効にします。
S3はバケットも選択しておきます。
次はSPICE容量を購入します。
SPICE (Super-fast, Parallel, In-memory Calculation Engine) の頭文字から来ています。かっこよすぎる。
いったん1GBを購入。
参考:SPICEの価格
容量が追加されていることを確認。
次はデータソースの接続です。
Athenaを選択して次へ。
データソース名を設定し、「接続を検証」を押下。
検証済みになればOK。
追加したデータセットを押下。
「データセットの作成」を押下。
先ほど作成したビュー(v_fact_shipments)をSPICEに追加します。
迅速な分析のためにSPICEにインポートを選択して「視覚化する」を押下。
取り込みが完了すると以下の画面に遷移します。
この画面でデータの可視化を行います。
棒グラフを手動で追加してみる。
X軸にcarrier_id(配送業者)を追加すると配送業者別のレコード数の棒グラフが表示された。
11. AIが分析用のプロンプトを考える
先ほど作成したビューでどんな可視化が有効か、いくつかパターンを考えてもらいます。
日時の出荷件数の推移を可視化しましょう。
12. AIがグラフを自動生成する(可視化)
ビジュアルタブで「構築」を押下する。
画面の右にAmazonQが表示される。
プロンプト①:日別の出荷件数を折れ線グラフで作成してください。期間は2024-05の1か月とします。
ものの数秒でグラフが作成されました。
「ADD TO ANALYSIS」を押下してダッシュボードにグラフを追加してみます。
日別の出荷件数の折れ線グラフをダッシュボードに追加できました。
プロンプト②:配送業者ごとの平均の遅延(分)を棒グラフで。実績がない行は除外。値は delay_min の平均。大きい順に並べて、数値ラベルも表示して。
とやりたいところですが、「遅延」は計算が必要なので、まずは計算フィールドを作成する必要があります。
計算フィールドも自然言語で作成可能です。「+計算フィールド」を押下します。
どんな値が欲しいのかを言語化して伝えます。
式が提案されるので、「挿入」を押下する。予定到着時刻と実績到着時刻の差を計算しています。
計算フィールドを設定して「保存」を押下。
計算フィールド(delay_min)が追加されました。
次はこれを使ってグラフを作成します。
先ほどのプロンプトを再実行すると配送業者別の平均遅延時間のグラフを追加することができました。
13. 人がグラフを評価し、AIにより深い指示を出してデータ分析を進める
では先ほどの配送のビューからより深堀分析を進めます。
いくつかのビューを提案してくれたので作成を依頼します。
権限は渡してあるので作成を進めてくれます。
Glueを確認すると追加で複数のビューが作成されていることを確認できました。
新規ビューのv_shipments_enrichedを選択して、SPICEにインポートする。
先ほどの画面で「データセットを追加」を押下する。
SPICEに取り込み済みのv_shipments_enrichedを選択する。
v_shipments_enrichedの可視化方針を決めます。
先ほどと同様に計算フィールドをAmazonQを使って自然言語で追加します。
プロンプト③:月別×配送業者のオンタイム率をヒートマップで表示
月別の配送業者別のオンタイム率(予定通りに配送できた割合)をヒートマップで表示することができました。
さいごに
記事が長くなってしまうのでこの辺で終わります。
今回のポイントとしては以下の2点です。
扱うのに少しだけAWSの知識が必要ですが、AIの力でデータ分析の民主化がまた一歩進んだ感じがあります。
これからもAWSやAI関連の検証記事をたくさん書いていきます。
↓ のスターを押していただけると嬉しいです。励みになります。
最後まで読んでいただき、ありがとうございました。
エンタープライズ第一本部では一緒に働いてくださる仲間を募集中です。以下のリンクからお願いします。
執筆:英 良治 (@hanabusa.ryoji)
レビュー:@miyazawa.hibiki
(Shodoで執筆されました)



