開発効率改善のため、テストデータ投入スクリプトを作成した話

アイキャッチ画像

AIエージェント開発で、テストデータ自動投入スクリプトを作成した話

はじめに

AIエージェント開発案件にて、テスト用データをデータベースへ自動投入するスクリプトを作成した経験について書いていきます。

この案件では、AIによるデータ生成に1回あたり10分程度かかっており、テストを行うたびに手動でデータを準備すると、開発効率が大きく低下する課題がありました。

そのため、短時間で大量のテストデータを投入できるよう、データ登録用のスクリプトを作成して対応しました。

なぜスクリプト作成が必要だったのか

元々このスクリプト作成は、正式に与えられていたタスクではありませんでした。

当初は別の機能開発を担当していましたが、実際にタスクを進める中で、テストデータ投入を毎回手作業で行っていると開発効率が大きく落ちることが分かりました。

特にAIを利用した処理では、データ生成自体に時間がかかるため、

  • テストケースを増やしにくい
  • 修正後の確認が遅くなる
  • 検証回数が減る

といった問題が発生していました。

そのため、「このままでは開発が進めづらい」と感じ、自主的にデータ投入スクリプトを作成することにしました。

ただ、実際には元々与えられていたタスクよりも遥かに大変でした。

DB構造の理解が想像以上に大変だった

単純にINSERT文を書くだけであれば簡単でしたが、実際には複数テーブル間でリレーションが存在しており、整合性を保ちながらデータを投入する必要がありました。

そのため、

  • DB設計書を確認する
  • 実際のDBデータを確認する
  • リレーションを追う
  • どの順番で投入すべきか整理する

といった作業が必要になりました。

本来であれば触らなくても良いテーブルまで確認する必要があり、想像以上に調査工数がかかりました。

スクリプトで実装した機能

スクリプトはPythonで作成しました。

単純なデータ追加だけではなく、コマンドライン引数で操作を切り替えられるようにしました。

具体的には、

  • テストデータの追加
  • 追加したテストデータの物理削除
  • 追加したテストデータの論理削除

を実行できるようにしました。

また、データ追加時には件数指定もできるようにし、必要な量のテストデータを一括投入できるようにしました。

Pythonで型定義を多用した理由

実装にはPythonを使用しました。

Pythonはスクリプトを短時間で作りやすく、データ加工とも相性が良いため、今回の用途に向いていると感じました。

一方で、テストデータ投入では「誤ったデータを登録してしまう」リスクもあります。

そのため、EnumやDataClassを多用し、登録データの型定義をかなり厳密に行いました。

例えば、

  • ステータス値
  • 種別
  • フラグ管理

などについては、文字列を直接扱うのではなくEnumで管理するようにしました。

また、DataClassを利用することで、データ構造を明確化し、意図しないデータ登録を防ぐようにしていました。

スクリプトだからといって簡単に作るのではなく、「長期的に安全に利用できること」を意識して実装しました。

誰でも使えることを意識した

このスクリプトは、自分だけではなく他メンバーも利用することを想定していました。

そのため、

  • 実行方法
  • コマンドライン引数
  • 実行例
  • 注意事項

などをかなり細かくコメントとして残しました。

特に、実行例は多めに記載し、「見ればすぐ使える」状態を意識しました。

実際の現場では、ツール自体を作ることだけではなく、「他の人がスムーズに利用できること」も重要だと感じています。

まとめ

今回の経験では、単純にスクリプトを作成しただけではなく、

  • DB構造の理解
  • リレーション調査
  • 開発効率改善
  • 安全性を意識した型定義
  • 運用を考慮したドキュメント整備

など、多くのことを意識しながら対応しました。

また、元々予定されていたタスクではありませんでしたが、開発を進める上で必要だと判断し、自主的に改善へ繋げられたことは良い経験だったと思います。

AI開発ではAI機能そのものだけではなく、周辺の開発効率を改善することも重要だと感じました。