Upgrade to Pro — share decks privately, control downloads, hide ads and more …

嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ...

Avatar for po3rin po3rin
November 11, 2025

嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ...

Avatar for po3rin

po3rin

November 11, 2025
Tweet

More Decks by po3rin

Other Decks in Technology

Transcript

  1. © LayerX Inc. 3 バクラク事業部 BizOps部 データグループ TechLead 兼 Platform

    Engineering部 SRE Snowflake Squad 2025 Snowflake九州ユーザー会 主宰 SNS 𝕏 civitaspo civitaspo その他 画像を⼊れてね civitaspo (キビタスポ/ きびちゃん) ⾃⼰紹介
  2. © LayerX Inc. 5 会社紹介 すべての経済活動を、 デジタル化する。 Mission ⼈類の未来をより良くする。 そのために私たちは、テクノロジーの可能性を探求し、

    経済活動における複雑で⼤きな課題に挑む。 仕事や暮らしの中にある摩擦が解消され、 それぞれの創造⼒が発揮されている。 そんな希望あふれる優しいデジタル社会を、 未来に残していくために。
  3. 🙌 AI Agentの過去データを使ったバックテスト基盤が欲しい 🛠 Dev: AI Agent機能の実験/評価がはかどる 👔 Sales: 提案に使える(この機能を導入すると一ヶ月で差し戻しがN件減ります)

    󰠀 User: 自分で設定したAI Agent機能の効果をチェックできる 🤖 Agent: 自分で作ったレビュールールをチェックし、自己修復を回せるようになる。 Data-CentricにAI Agentの精度を改善し、ビジネスも改善していく基盤が欲しい!
  4. © LayerX Inc. 21 • UDFの⼀種で、表形式のデータを返却できる機能 • BigQueryやDatabricksではTable Functions、またはTable-valued function

    (TVF) と呼ばれる。 補⾜: Tabular SQL UDFs (UDTFs) スナップショット機能のインターフェース 出典: Tabular SQL UDFs (UDTFs) | Snowflake Documentation 出典: Table functions | BigQuery | Google Cloud Documentation 出典: Table-valued function (TVF) invocation | Databricks on AWS
  5. © LayerX Inc. 23 • ここからcivitaspoのパートでは、スナップショット取得機能のみにフォーカスしてお話します。 Data-Centric AIというかデータ基盤な話になるのをご容赦ください。 • DWHソリューションとしてSnowflakeを利⽤している前提で書いています。BigQueryなど他のソ

    リューション向けにも補⾜をしますが、⾜りなければ質問してください。 • 『AI Agentのビジネス価値を計るバックテスト基盤の構築』を⽀えるSnowflake上での任意時点の スナップショット取得を実現するデータパイプライン - LayerX エンジニアブログ にて弊社の事例を 書きましたが、本スライドでは理解を促すために⼀部簡略化して説明しています。 おことわり
  6. © LayerX Inc. 25 • MySQLのテーブルを定期的にフルダンプしたデータ • MySQLのChange Data Capture

    2種類のデータソースを使⽤する スナップショット取得機能で使⽤するデータソース
  7. © LayerX Inc. 26 • Aurora Cluster ExportでS3にParquetとして定期的にフルダンプ • S3上のParquetファイルをSnowflakeからExternal

    Tableとして参照 MySQLのテーブルを定期的にフルダンプしたデータ スナップショット取得機能で使⽤するデータソース 参考: Aurora Cluster Exportで出⼒したデータをdbtを使ってSnowflakeへImportする - LayerX エンジニアブログ
  8. © LayerX Inc. 27 • AWSのAuroraが持つ機能。 • データベースに負荷をかけることなくS3へ全データをフルダンプできる。 • Aurora

    MySQLだけでなく、Aurora PostgreSQLでも出⼒可能。 • 出⼒されるデータはParquetに変換される。 ◦ 型マッピング: Considerations for DB cluster snapshot exports - Amazon Aurora 補⾜: Aurora Cluster Export スナップショット取得機能で使⽤するデータソース 参考: Exporting DB cluster data to Amazon S3 - Amazon Aurora
  9. © LayerX Inc. 28 • Debeziumを使って、MySQLのbinlogからCDCを取得 • 取得したCDCはManaged Streaming for

    Apache Kafkaを経由してSnowflakeへ • 平均約1分程度の遅延でSnowflake MySQLのChange Data Capture(CDC) スナップショット取得機能で使⽤するデータソース 参考: 『AI Agentのビジネス価値を計るバックテスト基盤の構築』を⽀えるSnowflake上での任意時点のスナップショット取得を実現するデータパイプライン - LayerX エンジニアブログ
  10. © LayerX Inc. 29 • 様々なデータベースからCDCを取得するOSS ◦ MySQLの場合は binlog から

    ◦ PostgreSQLの場合は WAL から • Kafka Connectを使⽤している場合は Exactly-Once Semantics で動作させることが 可能なため、重複や⽋損なくデータを Kafka に吸い出せる。 • 内部的には、binlog のファイル名とpos/row をKafka Connectのメモリ上で管理し、毎回確 認することで重複‧⽋損を防いでいる。 補⾜: Debezium スナップショット取得機能で使⽤するデータソース 参考: Debezium
  11. © LayerX Inc. 30 • SnowflakeでStreaming Data Ingestionを実現する機能 • 2025/09/23にV2がGAし、テーブルあたり10GB/sのスループットが出る

    • 書き込みから読み出せるようになるまで5~10秒程度 補⾜: Snowpipe Streaming V2 スナップショット取得機能で使⽤するデータソース 参考: https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-overview
  12. © LayerX Inc. 36 フルダンプを取得した時間から取得したい時間までのCDCを取得 スナップショット取得機能におけるデータ処理の仕組み 2025-11-12 18:54:11 {"op" :"c",

    "updated_at": "2025-11-12 03:11:00", "record": {"id": 5, "name": "taro", ...}} {"op" :"u", "updated_at": "2025-11-12 04:11:00", "record": {"id": 2, "name": "jiro-x", ...}} {"op" :"c", "updated_at": "2025-11-12 04:11:00", "record": {"id": 6, "name": "saburo", ...}} {"op" :"u", "updated_at": "2025-11-12 05:11:00", "record": {"id": 6, "name": "saburo-x", ...}} {"op" :"u", "updated_at": "2025-11-12 06:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 07:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"c", "updated_at": "2025-11-12 08:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"d", "updated_at": "2025-11-12 09:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"c", "updated_at": "2025-11-12 10:11:00", "record": {"id": 8, "name": "rokuro", ...}} {"op" :"u", "updated_at": "2025-11-12 11:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 12:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 13:11:00", "record": {"id": 3, "name": "nanakuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 14:11:00", "record": {"id": 3, "name": "nanakuro", ...}}
  13. © LayerX Inc. 37 CDCデータをプライマリーキーに対して最新のレコードだけ取得 スナップショット取得機能におけるデータ処理の仕組み 2025-11-12 18:54:11 {"op" :"c",

    "updated_at": "2025-11-12 03:11:00", "record": {"id": 5, "name": "taro", ...}} {"op" :"u", "updated_at": "2025-11-12 04:11:00", "record": {"id": 2, "name": "jiro-x", ...}} {"op" :"c", "updated_at": "2025-11-12 04:11:00", "record": {"id": 6, "name": "saburo", ...}} {"op" :"u", "updated_at": "2025-11-12 05:11:00", "record": {"id": 6, "name": "saburo-x", ...}} {"op" :"u", "updated_at": "2025-11-12 06:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 07:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"c", "updated_at": "2025-11-12 08:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"d", "updated_at": "2025-11-12 09:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"c", "updated_at": "2025-11-12 10:11:00", "record": {"id": 8, "name": "rokuro", ...}} {"op" :"u", "updated_at": "2025-11-12 11:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 12:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 13:11:00", "record": {"id": 3, "name": "nanakuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 14:11:00", "record": {"id": 3, "name": "nanakuro", ...}}
  14. © LayerX Inc. 38 • Window関数を条件にフィルタリングすると きにQUALIFY句を使⽤する。 • 重複排除の⽂脈でrow_number() と⽤いられ

    ることが多い。 補⾜: QUALIFY 1 = ROW_NUMBER() OVER ( PARTITION BY pk ORDER BY updated_at DESC ) スナップショット取得機能におけるデータ処理の仕組み 参考: QUALIFY | Snowflake Documentation
  15. © LayerX Inc. 39 CDCデータを作成‧更新‧削除に分解 スナップショット取得機能におけるデータ処理の仕組み 2025-11-12 18:54:11 {"op" :"c",

    "updated_at": "2025-11-12 03:11:00", "record": {"id": 5, "name": "taro", ...}} {"op" :"u", "updated_at": "2025-11-12 04:11:00", "record": {"id": 2, "name": "jiro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 05:11:00", "record": {"id": 6, "name": "saburo-x", ...}} {"op" :"d", "updated_at": "2025-11-12 07:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 09:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"d", "updated_at": "2025-11-12 12:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 14:11:00", "record": {"id": 3, "name": "nanakuro", ...}}
  16. © LayerX Inc. 40 フルダンプデータから更新‧削除レコードをanti-join スナップショット取得機能におけるデータ処理の仕組み {"op" :"u", "updated_at": "2025-11-12

    04:11:00", "record": {"id": 2, "name": "jiro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 05:11:00", "record": {"id": 6, "name": "saburo-x", ...}} {"op" :"d", "updated_at": "2025-11-12 07:11:00", "record": {"id": 1, "name": "shiro-x", ...}} {"op" :"d", "updated_at": "2025-11-12 09:11:00", "record": {"id": 7, "name": "goro", ...}} {"op" :"d", "updated_at": "2025-11-12 12:11:00", "record": {"id": 8, "name": "rokuro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 14:11:00", "record": {"id": 3, "name": "nanakuro", ...}} 2025-11-12 03:00:00
  17. © LayerX Inc. 42 残ったデータに作成‧更新レコードをunion スナップショット取得機能におけるデータ処理の仕組み 2025-11-12 03:00:00 {"op" :"c",

    "updated_at": "2025-11-12 03:11:00", "record": {"id": 5, "name": "taro", ...}} {"op" :"u", "updated_at": "2025-11-12 04:11:00", "record": {"id": 2, "name": "jiro-x", ...}} {"op" :"u", "updated_at": "2025-11-12 05:11:00", "record": {"id": 6, "name": "saburo-x", ...}} {"op" :"u", "updated_at": "2025-11-12 14:11:00", "record": {"id": 3, "name": "nanakuro", ...}}
  18. 🐓 Workflow Toolとして実装する 理想としては、必要なコンテキストを揃えるた めのtoolをリソース志向APIではなく、一回の 呼び出しで全てのコンテキストを取得できるよ うな Workflow Tool として用意すべきです。

    https://www.anthropic.com/engineering/writing-tools-for-agents > 評価タスクに適した、影響の大きい特定のワークフ ローを対象とした、思慮深いツールをいくつか構築し、 そこからスケールアップしていくことをお勧めします。 by Anthropic
  19. © LayerX Inc. 71 • LayerXでは、⼀緒にデータ基盤、AI Agent基盤、ML基盤を作る仲間を⼤募集しています!!! • 興味を持たれた⽅は是⾮ jobs.layerx.co.jp

    へアクセスしてください!!! We are hiring!!! おわりに 【バクラク】データエンジニア 【バクラク】ソフトウェアエンジニア_AI-UX 【バクラク】MLOpsエンジニア 【バクラク】エンジニアリングマネージャー_AI‧機械学習領域