0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIで実装したら「いいね」で記事の更新日時まで変わった話

0
Posted at

777bf82d-f839-4f6f-be3b-00ea0018b7d0.png

生成AIで実装を進める機会が増えてきました。

簡単なCRUDだけでなく、管理画面やフロント画面までAIに作らせることも珍しくありません。

そんな中、実際に遭遇した「AIらしい」不具合を紹介します。

今回の構成

今回のシステムはシンプルです。

  • バックオフィスで記事を作成する
  • フロント画面でユーザーが記事を閲覧する
  • ユーザーは「いいね!」や「お問い合わせ」ができる
  • 管理画面では記事一覧を更新日時順で表示する

また、記事には次の情報を保持しています。

  • 閲覧数
  • いいね数
  • お問い合わせ数

これらはユーザー操作に応じてカウントアップされる仕様でした。

発生した不具合

テスト中に次の操作を行いました。

  1. 数日前に投稿した記事を開く
  2. フロント画面から「いいね!」を押す
  3. 管理画面の記事一覧を確認する

すると、その記事が一覧の一番上へ移動していました。

理由は単純です。

updated_at が更新されていたからです。

なぜ起きたのか

AIから見ると、この実装は自然です。

いいね数が変わる
        ↓
DBをUPDATEする
        ↓
updated_atも更新される

Laravel や Rails、Prisma などのORMでも、通常のUPDATEを実行すれば updated_at は更新されます。

つまりAIは、

データが更新された

という事実だけを見ています。

でも業務上は違う

今回更新されたのは、

  • いいね数

だけです。

記事本文を更新したわけではありません。

  • タイトル
  • 本文
  • 公開状態
  • カテゴリ
  • タグ

これらは何一つ変わっていません。

つまり、

記事の更新

ではなく、

リアクション情報の更新

です。

この「属性の違い」をAIは判断できません。

原因は仕様不足

仕様書には、

いいね数を更新する

とは書かれていました。

しかし、

いいね数・閲覧数・お問い合わせ数の更新では記事の更新日時は変更しない

とは書かれていませんでした。

人間同士なら、

「いや、それ記事更新じゃないよね」

という会話になります。

しかしAIは、その暗黙知を持っていません。

テストで見るべきだったこと

最初は、

  • いいね数が1増えること

だけを確認していました。

しかし、本来確認すべきだったのは次の内容です。

  • updated_at が変わらないこと
  • 管理画面の並び順が変わらないこと
  • 「最近更新した記事」に表示されないこと
  • 更新通知の対象にならないこと

正常系だけを確認すると、この不具合は見逃します。

AI開発では「更新してはいけないもの」を仕様に書く

最近感じるのは、

AIは

何を更新するか

は非常に得意です。

一方で、

何を更新してはいけないか

は、仕様に書かなければ判断できません。

最近は仕様を書くときに、次のようなルールを明記するようにしています。

・記事本文を更新した場合のみ updated_at を更新する

・閲覧数
・いいね数
・お問い合わせ数

これらの変更では updated_at を変更しない

この一文があるだけで、防げる不具合は意外と多いです。

まとめ

今回の不具合は派手ではありません。

画面は正常に動きます。

いいね数も増えます。

しかし業務として見ると、記事一覧の並び順が変わり、管理画面の意味そのものが変わってしまいます。

生成AIで実装する場合は、

「何を更新するか」だけではなく、「何を更新してはいけないか」まで仕様に書く。

この視点を持つだけで、AIが生み出す不具合はかなり減らせると感じています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?