株式会社ずんだもん技術室AI放送局 podcast 20250423
内容紹介
AIエージェントのおかげでdbt開発の大部分を自動化した話、営業AIエージェント「アポドリ」のつくりかた
出演者
関連リンク
この記事は、データ分析基盤で使われる「dbt」というツールを使ったデータモデル開発において、AIエージェントを活用して多くの定型作業を自動化した事例を紹介しています。
データを使って分析やレポートを作る際、元データを使いやすい形に加工する作業が必要です。dbtは、この加工(データモデル開発)を効率的に行うための人気ツールですが、開発するデータモデルが増えると、「ファイルの置き場所や名前のルールを守る」「データのチェック(テスト)を書く」「どんなデータか説明するドキュメントを更新する」「分析ツールで使いやすくするための設定(メタデータ定義)をする」といった、定型的な作業がたくさん発生し、開発者の負担になってしまいます。もっとSQLを書くことや分析そのものといった、頭を使う本質的な作業に集中したい、というのがエンジニアの本音です。
この課題を解決するために、筆者らは「Cursor Editor」というAI搭載の開発エディタの「Agent機能」と「Project Rules」を活用しました。
Cursor EditorのAgent機能は、指示を与えるとAIがタスクをステップごとに実行してくれる機能です。Project Rulesは、プロジェクト特有の開発ルール(命名規則、コーディング規約、標準手順など)をAIに教え込むための設定です。
dbtモデル開発には通常、SQLを書く以外にも、ファイルのテンプレート作成、ローカルでの実行確認、メタデータやテストの更新、ドキュメント作成、プルリクエスト作成など、複数のステップがあります。
これらのステップをAIエージェントに任せるために、開発チームはProject Rulesを丁寧に整備しました。具体的には、以下のようなルールを定義しました。
- 命名規則: BigQueryのテーブルとdbtモデル名の対応関係や、データが加工される段階(層)ごとの名前の付け方。
- コーディング規約: SQLの書き方や、他のデータモデルを参照する際のルール。
- 開発手順: dbtモデルの加工段階(層)ごとに、ステップ1からステップnまで何をどのように進めるかを細かく定義。使用するコマンドや、エラー発生時の対応方法まで含めました。
Project Rulesを整備し、AIにプロジェクト固有のルールをしっかり教え込んだ結果、AIエージェントはプロジェクトのやり方に沿って正確にタスクを実行できるようになりました。SQLを人間が準備すれば、それ以降の多くの定型作業(テンプレート作成、実行確認、メタデータ・テスト・ドキュメント更新、プルリクエスト作成)をAIが自動で行ってくれるようになり、ほぼ人間が最終確認するだけでGitHubにプルリクエストが作成されるレベルに達したとのことです。
もちろん、AIに任せる上で工夫も必要です。例えば、複雑なタスクは最初にAIに計画だけ立てさせる、AIに必要なルール情報を明示的に伝える、そして絶対に守りたいルールは昔ながらの自動チェックツール(静的解析、自動テスト)で間違いがないか確認する、といった「AIのための安全策(ガードレール)」を設けることが重要だと感じているそうです。
この取り組みにより、開発者はSQLの設計・実装といったクリエイティブな作業に集中できるようになり、社内からは開発効率が向上したという声があがっています。データモデル開発量も増加したという定量的な成果も出ています。
まとめとして、AIエージェントはまだ完璧ではありませんが、プロジェクト固有のルール(Project Rules)を整備し、継続的に改善していくことで、開発プロセスを大幅に自動化し、生産性を向上させることが可能です。AIにどこまで任せるか、人間とAIのより良い役割分担を考えていくことが今後の課題であり楽しみでもある、と筆者は述べています。
引用元: https://zenn.dev/ubie_dev/articles/d97c5ece4660bd
この記事は、営業AIエージェント「アポドリ」を開発する過程で得られた経験や学びを共有するSpeaker Deckの資料に基づいています。新人エンジニアの皆さんにも、AIエージェント開発の現実や考え方を理解してもらうことを目指します。
「アポドリ」は、人の代わりに企業のリストをもとに顧客にアプローチし、商談のアポイントメントを獲得するAIエージェントです。具体的には、企業情報や担当者をウェブやデータベースから収集し、相手に合わせた1対1のメッセージを生成して、メールや問い合わせフォームなど多様な手段でアプローチを実行。さらに、アプローチ結果を分析して改善に繋げるという一連の営業活動を自動で行います。
開発の道のりは順調だったわけではなく、失敗と苦労の連続だったそうです。最初は人が手作業で営業活動を行い、その過程を細かくタスクに分解することから始めました。そして、分解したタスクを一つずつAIに置き換えていくという進め方です。
AIに任せた部分の精度を上げるために、AIの出力結果を人が一件ずつ確認し、必要であれば修正し、それをAIにフィードバックして学習させるという根気のいる作業を繰り返しました。この過程で、単にAIを使うだけでなく、その業務(ここでは営業)に関する深い知識、つまり「ドメイン知識」がいかに重要であるかを強く実感したとのことです。
サービスを複数社に提供するようになると、顧客ごとにAIの振る舞いを調整する必要が出てきたり、処理する量が大幅に増えたりして、新たな課題に直面します。作業負荷が増え、手作業によるオペレーションミスも起きやすくなったため、プロンプト(AIへの指示文)をシステムの外で管理できるツール(Difyなど)を使ったり、あらゆる手作業を徹底的に自動化したりすることで、これらの課題を乗り越えていきました。この自動化を進めるにつれて、AIエージェントらしいシステムになっていったそうです。
これらの経験から、もしゼロからAIエージェントを開発するなら、以下のプロセスを推奨しています。
- 顧客課題の探索: 解決することでユーザーの状況が大きく変わるような、本質的な課題に焦点を当てる。
- LLMの検証: そもそもLLM(大規模言語モデル)でその課題が技術的に解決可能か、最優先で検証する。LLMはプログラムのように完全に制御するのが難しいため、どこまでできるかを見極めることが重要です。
- システム化(スモールステップ): 最初から完璧を目指さず、一部は人の手も借りながら、とにかく早くシステムを動かして価値検証を優先する。人の作業を通じてドメイン知識を深め、それをAI化に活かす。
- 評価と改善の仕組み化: AIの出力が「正しいか」「良い品質か」を判断するには、その業務のプロであるドメインエキスパートの協力が不可欠です。開発プロセスに彼らを巻き込み、継続的に評価・改善できる仕組みを作るのが非常に重要です。
結論として、AIを使えば魔法のように高品質なアウトプットが簡単に出せるわけではありません。AIエージェントを成功させるためには、対象となる業務のワークフローを適切に分解し、AIに緻密な指示を与え、その結果を継続的に評価・改善していく地道な取り組みが必要不可欠です。
この記事は、AIエージェントという新しい技術に興味があるものの、具体的な開発がどう進むのかイメージが湧かない新人エンジニアにとって、開発のリアルな道のりや、ぶつかるであろう課題、そしてそれをどう乗り越えるかのヒントを与えてくれる内容となっています。AIに「任せる」ことが当たり前になる未来に向けて、どのように開発を進めていくべきかを考える良いきっかけになるでしょう。
引用元: https://speakerdeck.com/ikeyatsu/ying-ye-aieziento-apodori-notukurikata-758847a3-9962-4bee-9481-97516597fc0b
(株式会社ずんだもんは架空の登場組織です)