🍏

最近AIエージェントにやらせて良かったこと 3選

に公開

🎄Merry Christmas🎄 WWWAVE アドベントカレンダー 12/6の記事です】

AIエージェントに様々なことを任せられるようになってきた今日この頃、
最近やらせて良かったな〜ってことを3つ紹介します!

どれも内容は地味ですが、同じような困りごとがある人の参考になればと思います。

GA4のイベント一覧出力

webページの効果測定のためにGA4を利用しており、
新機能追加や機能改善のたびに、ビューイベントやクリックイベントを設定しています。
そして、効果測定のタイミング(1,2週間後)で、GA4のレポートや探索を使って、検証をするのですが、
そのたびに、「あれ?イベント名何だっけ?? イベント発火タイミングいつだっけ??」
となり、コードリーディング or デバッグが発生していました。

そこで、以下のプロンプトを渡して、AIエージェントにGA4イベント一覧を出力させてみました!

このページで発火するGoogleAnalyticsのイベントをdocs/google_analytics.mdに一覧にしてください。
イベント名とパラメータを知りたいです。
コンポーネント内で、イベント発火する場合も一覧に含めてください。
app/utils/google-analytics-event-data.ts にGA4イベントの定義があります。

まあまあいい感じに出力できます。(たまに抜けるイベントもあるので、プロンプトは要改善)
イベント一覧があれば非エンジニアも発火するイベントを把握しやすくなるのではと思っています。

openapi.yamlの作成

APIのバックエンドサーバーのAPI情報をフロントエンドからAIに参照させるために、
OpenApiを導入しました。

OpenAPI自体は別プロダクトで使っていたことがあるのですが、
APIを追加/更新した際に、openapi.yamlの更新をするのが面倒&書き方の学習コストがかかる
という点で、今のプロダクトでは導入をしていませんでした。
新しい開発メンバーが増えたり、AIエージェントを利用するようになり、
API仕様書が欲しくなったので、ついにOpenAPIを導入しました。そして、openapi.yamlはAIエージェントに書かせることにしました!
以下をAGENTS.mdに追加しています。

AGENTS.md

#### OpenAPI仕様書

**⚠️ CRITICAL: API変更時の必須2ステップ**

**ステップ1: APIインタフェースが変わったら、必ず `openapi.yaml` を更新する**

以下のいずれかに該当する場合は、**必ず** `openapi.yaml` を更新すること:
- 新規API追加
- 既存APIのパラメータ変更(追加・削除・型変更)
- レスポンス構造の変更(フィールド追加・削除・型変更)
- リクエストボディの変更
- スキーマ定義の追加・変更

**ステップ2: `openapi.yaml` を更新したら、必ずフロントエンドにコピーする**

``bash
cp openapi.yaml ../frontend_xxxxxx/docs/openapi.yaml
``

こちらも一発では正確なものは出せず、エラー解決させるひと手間はありましたが、
ある程度正確なものはできたと思います。
API仕様書を参照していく中で、間違った記載などがあれば、都度修正させていこうと考えています!

SQL文の整形

現在海外向けのプロダクトを扱っていることもあり、SQLでデータベースのデータを参照するときに、
時刻のカラムに対して、毎回現地時間への変換及び日本時間への変換をしていました。
snipetに登録しているので、呼び出すだけではあったのですが、毎回毎回面倒だなという思いがありました。
そこで、GeminiでSQL文作成用のGemini Gem(頻繁に繰り返すタスクの詳しいカスタム指示を保存しておくことができるもの)を作りました。

DBのスキーマをKnowledgeとして渡して、以下のプロンプトを設定しています。

## 指示
- rulesに従って、SQLクエリを作成してください
- 出力は、コピーできるクエリ

## 環境

- PostgreSQL
- 実行環境: Metabase

## rules

- DBのスキーマ情報は、tables.mdを参照する
- テーブル名を略して定義しないでください。
- datetime型のカラムは、UTCの時刻になっているため、`America/Los_Angeles`時間に変換し、[カラム名]_us という表示名にする
- created_atとupdated_atを取得したい場合、以下の形式で取得する
  (
  to_char([テーブル名].created_at at time zone 'UTC' at time zone 'US/Pacific', 'YYYY-MM-DD HH24:MI:SS')
  || ' [PST/PDT] / '
  || to_char([テーブル名].created_at at time zone 'UTC' at time zone 'Asia/Tokyo', 'YYYY-MM-DD HH24:MI:SS')
) || ' [JST]' as created_at
- created_atを取得したい場合は、selectの一番初めに設定してください

これで取得したいクエリの内容を入力すると、SQL文を出してくれます!
助かります!

まとめ

  • なんか面倒だな、手間だなと敬遠する作業はAIエージェントにまかせてみてもいいかも
  • AIにやらせてばっかで自分の脳みそが溶けそう
wwwave's Techblog

Discussion