【個人開発】AIが足したサービスが消えた|ネットの価格表が内蔵の一覧を上書きしていた話

AIが足したサービスが消えた|ネットの価格表が内蔵の一覧を上書きしていた話

※このサイトの記事内では広告を掲載している場合があります。

自作アプリ「サブスク番人」には、サービス名を入れると参考の値段を出してくれる一覧が入っています。値段は変わるので、あとからネットに置いた価格表を読みに行くしくみを足しました。

ところが、このしくみのせいで、AIが一覧に足したサービスが、ネットにつながると消えるという不具合が起きていました。この記事では、何が起きて、どう直したかをまとめます。

同じ話は、短い動画でも紹介しています。

何が起きたか

サービスの一覧は2つあります。

  • アプリ内蔵の一覧:アプリの中に入っている。オフラインでも使える
  • ネットの価格表:ネットに置いたファイル。値段を新しくするためのもの(作ったときは23件)

ネットの表は、アプリを開いたときに読みに行きます。前に読んでから12時間たっていれば取り直し、読んだ表は端末に残しておきます。こうしておくと、サービスの値段が変わっても、アプリを更新せずに参考の値段を直せます。

このアプリは、AI(Claude)が数日おきに小さな改善を1つ作る、というやり方で育てています。その中で、日本で人気のサブスクを内蔵の一覧に少しずつ足していました。

でも、ネットの価格表は23件のまま。そして、アプリがネットの表を読むと、内蔵の一覧が丸ごとネットの表に入れかわっていました。そのため、あとから足したサービスが候補に出てこなくなっていたのです。

なぜ起きたか

ネットの価格表が内蔵の一覧を丸ごと上書きしてAIが足したサービスが消えていた前と、2つの一覧を名前で合体させて全部残るようにした今を比べた図

原因は、ネットの表を読んだあとの1行でした。「今の一覧 = ネットの表」と、そのまま置きかえていたのです。

作った日は、内蔵の一覧もネットの表も同じ23件でした。だから置きかえても困りません。ところが、内蔵の一覧だけが増えていくと、ネットの表に無いぶんが消えるようになりました。

しかも、読んだ表は端末に残しておくので、一度ネットにつながると、そのあとも同じ状態が続きます。オフラインで試すと全部出るので、気づきにくい不具合でした。アプリが落ちるわけでも、エラーが出るわけでもなく、ただ候補が少なくなるだけ、というのも見つけにくい理由でした。

どう直したか

置きかえるのをやめて、2つの一覧を合体(マージ)させるようにしました。決まりは3つです。

  • 同じ名前のサービスは、ネットの表の値段を使う
  • 内蔵の一覧にしか無いサービスは、そのまま残す
  • ネットの表にしか無いサービスは、一覧の最後に足す

つまり、値段はネットの表が勝ち、サービスの数は減らないという形です。ネットの表は「値段を新しくするためのもの」で、一覧の中身を決めるのは内蔵の一覧、と役割を分けました。

あわせてテストも足しました。「ネットの表で値段が変わる」「内蔵だけのサービスが消えていない」「件数が内蔵+ネットだけの分になっている」を確かめています。ネットにつながらないときや、表が壊れているときは、今の一覧のまま動きます。

アップデートのお知らせには「ネット接続時に一部のサービスが候補から消える不具合を修正しました」と書きました。そのあとも内蔵の一覧は増え続けていて、今は170件をこえています。合体にしておいたので、ネットの表を毎回いっしょに増やさなくても、足したサービスはちゃんと候補に出ます。

作る人へ

  • データの元が2つあるときは、「置きかえる」か「合わせる」かを最初に決めておく
  • 作った日に同じ中身でも、片方だけ増えていくとずれが出る
  • オフラインだけで試すと気づけない。ネットにつないだ状態でも確かめる
  • AIに足してもらうときも、足した物が本当に画面に出るかをテストで守っておく

まとめ

  • ネットの価格表(23件)が、内蔵の一覧を丸ごと上書きしていた
  • そのせいで、AIがあとから足したサービスが候補から消えていた
  • 今は2つを合体させて、値段はネット優先、サービスは全部残している

「サブスク番人」を作った話はサブスク番人を作った話に、ほかに作ったアプリは 作ったもの にまとめています。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA