データ分析をAIに丸投げしたい
AIに作業を丸投げしたい。
それも、単純作業じゃない。データ分析みたいな「頭を使う知的な作業」を!
AIワークフローなら、それができる。
しかも簡単に。
実際に、「自動データ分析AI」を作ってみた。
質問するだけで、データで答えてくれるAI
楽に分析したい
最近、Qiitaで記事を書いている。
書いてみるとこれが結構楽しい。
でも、悩みがある。
「伸びる記事」と「伸びない記事」の違いがサッパリ分からない!
30分でサクッと書いた記事が伸びて、時間をかけて書いた自信作が「0いいね」だったりする。
そうなると、何が悪かったのか気になる。
- 投稿した曜日が悪かった?
- タイトルが長すぎた?
- 無理にでも「AI」タグをつければよかった?
などなど。
実はこれ、データで答えを出せる。
「何曜日に投稿すると『いいね』がつきやすいか?」
「タイトルの長さと『いいね』の数に関係はあるか?」
これらは、大量の記事データを調べれば分かる。
幸い、Qiitaはデータを取得できる仕組み(公式API)を公開してくれている。実際に、2万件(約1か月分)の記事を集めた。
じゃあ、後は分析すればいいだけ。
だけど、自分でやるとなると超めんどくさい。
考えることが多いから。
何を調べるか。「曜日ごとの平均いいね数は?」
どうやって分析するか。「曜日ごとに記事を分けて、平均いいね数を比較しよう」
その後、Pythonを書いてデータを集計して、グラフを作成する。
最後に解釈する。「どの曜日に投稿すると伸びやすいのか?」
毎回この作業をするのは面倒だ。分析したいことはたくさんある。
なんとかラクできないか?
自動分析AI
そこで、AIに分析をぶん投げられるシステムを作った。
例えば、「記事を投稿するのに最適な日時は?」と質問するだけで、AIが記事データを分析して答えを返してくれる。
実際に動きを見てみよう。
1. アバウトな質問をぶつけてみる
疑問をそのままぶつける。
"記事を投稿するのに最適な日時は?"
2. AIが「分析計画」を立ててくれる
すると、AIが計画を出してくる。
「じゃあ、こういう手順で調べますね!」というように。
AIの暴走を防ぎたい。
だから、いきなりコードは書かせない。
「まず計画を立てさせて、人間が『その調べ方でOK!』と確認する」ステップを挟む。
実際に考えてもらった分析計画(抜粋)
分析計画:
目的:
ユーザーが「いつ記事を投稿するのが最も効果的か」を判断するための、投稿日時とエンゲージメント(いいね数、コメント数、ストック数)の相関関係を明らかにする。
具体的な手順:
1. 投稿日時から「曜日(月〜日)」と「投稿時間(時)」の2つの要素を抽出する。
2. 「投稿時間」ごとにグループ化し、各時間帯の「いいね数」「コメント数」「ストック数」の平均値を算出する。
3. 「曜日」ごとにグループ化し、各曜日の「いいね数」「コメント数」「ストック数」の平均値を算出する。
4. 各時間帯および各曜日の中で、平均エンゲージメントが最も高い項目を特定する。
5. 「いいね数」が上位10%に入る高エンゲージメントな記事を抽出し、それらの投稿日時を一覧化して、傾向があるかを確認する。
いい感じ。
注目してほしいのは、投げた質問がかなりアバウトなこと。
何を「最適」にしたいんだ?
いいね数?コメント数?
それとも、投稿後に何度もQiitaを開いて通知が来てないか確認する回数?
でも、AIは正しく読み取ってくれた。
「いいね数、コメント数、ストック数を最大化したいんだな」と。
3. コードの実行からグラフ化まで自動でやってくれる
計画を承認しよう。
すると、AIがPythonコードを書いてくれる。分析コードと、グラフ描画コード。
コード生成だけではなく、実行もしてくれる。つまり、人間がコードをコピーして実行する必要すらない。
最終的に返ってきた答えがこれ(一部省略・要約)。
いいね数やコメント数を重視するなら、月曜日の午前9時が最適です。
高エンゲージメントの記事は、月曜日〜火曜日の午前中に多く投稿されていました。
「結局いつ投稿すればいいの?」をスパッと教えてくれた。
本当に正しいのか、気になるところだろう。
実は、根拠も自分の目で確認できる。
なぜなら、集計結果も出してくれるから。
# 集計結果
--- 時間帯別の平均エンゲージメント推移 ---
likes_count comments_count stocks_count
hour
0 2.079383 0.025358 1.342889
1 2.678694 0.042955 1.878007
2 2.243626 0.033994 1.634561
...
そして、グラフまで出してくれる!
実際に使えるAI分析ツールができた
「おもちゃ」どころか、実用性バッチリのものができた。
分析計画は妥当。コードも、試した限りだと一回もミスってない。
もちろん、完全ではない。
グラフはときどきおかしくなる。
例えば、これ。時刻がソートされてしまっている。
しかし、間違ってはいない。見づらいだけで。
こういう細かい部分は、まだ人間が確認した方がいい。
それでも驚いた。
まさか、ここまでうまく自動化できるとは思わなかった。
これで分析が楽になる。
自分でも使い続けていきたいものができた。
なぜ簡単に作れて、安定して動いたのか
ちなみに、このシステムは、たった2日で作れた。
なぜ簡単に作れたのか?
1つのAIに全部をやらせなかったから。
AIに複雑な仕事を任せる場合、AIが迷わないようにしないといけない。
だから、本来、細かい指示を作り込む必要があった。
要するに、芸術的なプロンプト調整がいる。
しかし今回は、その必要がなかった。
ひとつのAIに全部やらせない
データ分析は、実は工程が多い。
- 何を調べるか決める(計画)
- プログラムを書く(実装)
- グラフを作る(可視化)
- 結果を文章にまとめる(考察)
今までは1発でやろうとしていた。
つまり、1つのプロンプトに全部詰め込んでいた。
例えるなら、優秀なプログラマーに全部丸投げするようなもの。
「要件定義して、設計して、実装して、テストして、ドキュメントを書いて」と1人で同時にやらせたら、いくら優秀なプログラマーでも、どこかで抜けが出る。
AIも同じだ。
分析計画、コード作成、グラフ作成、結果の考察。
全部別の仕事だ。
同時にやらせたら、優秀なAIでもミスするだろう。
ひとつのプロンプトで全部やろうとするのは無理がある。
仕事を小さく分ける
ということで、分割しよう。
4つのAIに仕事を分担させた。
これは、専門家を4人用意しているようなもの。
- 計画を考える専門家
- コードを書く専門家
- グラフを作る専門家
- 結果をまとめる専門家
こうすると、余計な判断はいらなくなる。
計画を考える専門家はコードの書き方を考えなくていい。
コードを書く専門家は、分析方針を考える必要はない。
ただし、動かしているAIモデル自体は1つだけ。
この説明だと、AIモデルを4つ動かしていると思うかもしれない。
さすがにそんなことはない。
実際は、1つのAIモデルに対して、専用のプロンプトを4つ用意しているだけ。
AIモデルに役割を着せ替えているイメージ。
結果として、プロンプトをシンプルにできる。
例えば、計画AIのプロンプトを見てみよう。
実は、「役割・データ形式・出力」を書いているだけ。
大量の例や細かい条件を書かなくて済む。
以下は実際のプロンプトの抜粋。
あなたはデータ分析計画を作成するAIです。
ユーザーの質問をもとに、Pythonコードで実装可能な分析計画を作成してください。
あなたの役割は、質問に対する最終回答を出すことではありません。
後続のコード生成AIが分析コードを作成できるように、具体的な分析手順へ変換することです。
## 利用可能なデータ
- 記事タイトル
- いいね数
- コメント数
- ストック数
- 投稿日時
- タグ
- 所属組織
- 投稿者情報
## 出力
分析結果としてユーザーに提示する内容を書く。
例:
- 最大値となる項目
- 各項目の集計結果
プロンプトはChatGPTに書いてもらった。
細かい調整はほとんどしていない。それでも動く。
つまり、仕事は小さく分けるべきだ。
AIの仕事を限定したことで、シンプルな指示でも安定した。
連携させる
じゃあ分けたら勝手に動くのか?
専門家を4人用意するだけでは意味がない。
彼らを連携させる必要がある。
そこで、専門家にバケツリレーをさせる。
つまり、前のAIが作った成果物を、次のAIへ渡していく。
- 計画AIが計画を立てる
- 計画をコード生成AIに渡して、プログラムを作ってもらう
- できたコードをグラフ生成AIと説明AIに渡して、グラフと解説を作ってもらう
図にすると、こんな感じ。
ひとつのAIに全部やらせない。
役割ごとにAIを分ける。
前のAIが作った成果物を、次のAIへ渡す。
それがAIワークフローだ。
「専門家AIバケツリレーシステム」と言ってもいい。
シンプルだけど、なかなか強力な仕組みだ。
ローカルLLMだから、誰でも試せる
もちろん、分割だけですべて解決するわけではない。
LLMの性能が上がったというのも大きい。なんせ、ローカルLLMでも行けたんだから。
実は、ローカルLLMしか使っていない。
最近のローカルLLMは優秀なもので、キッチリ動いてくれた。
計画も妥当だし、コードも正しい。
使ったモデルはGemma4だ。
正確にはgemma-4-12B(Q4量子化)。
小さいながらも、優秀なモデルだ。
どれぐらい小さいかというと、たった6.7GBしかない。
私のRTX3060(12GB)でも余裕で動く。8GBのGPUでも動かせるんじゃないかな?
要するに、普通のゲーミングPCで試せるというわけだ。
ローカルLLMの嬉しいところは、API使用料がかからないこと。
どれだけ分析させてもお財布が痛まない。
まとめ
AIワークフローを使って、「自動データ分析システム」を作ってみた。
質問するだけで、AIが分析計画を考え、コードを書き、グラフを作成し、結果をまとめてくれる。
実際に「これからも使い続けたい」と思えるツールになった。
うまくいった最大のポイントは、「1つのAIに全部を任せなかった」こと。
分析計画、コード生成、可視化、結果の説明。
専門AIに分けたから、安定して動く。
AIワークフローなら、実用的なAIシステムを簡単に作れる。
コード
システムの実装にはLangGraphを使用。
https://github.com/DanielOkada/qiita_auto_analizer/tree/main

