実績解除
これまでデータベースを吹っ飛ばすなんてことは対岸の火事のように思っていた。生成AIが現れてからもGitHubですべてを破壊された人のことを笑いながら見ていたし、自分は*きをつけている*ので、そんなことは起きないだろうと思っていた。
しかし、まあ、今日はついにそれをやってしまったのだった。
吹っ飛ばすまでの流れ
仕事で単体テストのコードを書いていて、ひとつずつ実行するとうまくいくのに連続でテストを実行するとうまくいかないことがあった。これまでの経験から推察するに、どうも別の単体テストのコンテキストが残っていて、その状態が別の単体テストでも参照されてしまっていたらしい。
結局のところ原因は別のところにあったのだが、手っ取り早く解決できるのならそうしたいと思って、生成AI君に聞くことにした。
🤔「コンテキストが残っているようなのでテストごと別コンテキストで実行できるようにするにはどうすればいいですか?」
🧠「であれば、こういったヘルパーメソッドを定義することで、毎回別のコンテキストでテストを実行できますよ☝️☺️✨」
🤔「ほーん…そんな方法があるのか…どれ…」
💻「ウィーン」
🤔「なんかちょっとテスト長くなったけど、ヘルパーメソッドのせいかな? でも相変わらずテスト失敗するし、なんか通っていたところまで通らなくなったぞい」
🤔「…どうもおかしい。データベースの値はどうなっとんねん…」
🙄「データが…ない…? ほかのテーブルもまっさらデータが無くなっとる…」
😶「もしかして:やっちまったのでわ?」
確かにそうだが
生成AI君がおっしゃる通り、データベースの値をクリアすれば毎回別コンテキストで実行できる。至極もっともな提案内容だ。しかし、ここではそんな小規模のプロトタイピングをしているときの話なんかしていないのだ。今向き合っているのは何十万件ものデータがあるデータベースで、テストコードなのに関係のないデータが消えるようでは困る。
使用しているORMもORMである。高機能なのはいいのだが、1~2行のコードでデータベースのレコードを全部吹き飛ばせるのは流石にどうかしている。しかし、一番の原因は生成AIにデータが欠損しては困るという背景情報を与えなかったことと、提案内容を精査しなかった自分のせいなのだ。
よかったところはこれが開発用データベースでバックアップもあったこと。同僚に「やっちまいました」と一報入れてから、クラウドプラットフォームにログインしてボタンぽちぽちで問題なく復活できた。フルマネージド様々である。