Jewelry AI・コレクション

2つのコレクションに同じ画像を、2枚目のコピーなしで

生成した画像をコレクションに追加しても、画像が複製されるわけではありません。アプリは、そのコレクションがその生成を含んでいることを記録します。そして適用される唯一の規則は、1枚の画像が同じコレクションに2回入ることはできない、というものです。

コレクションは画像を指すだけで、コピーはしません

生成した画像をコレクションに追加すると、アプリは、このコレクションがその生成を含んでいることを記録します。2枚目の画像を書き込むことはありません。所属はコレクションと生成の組として保存され、データベースはその組に一意性を課しています(packages/db/prisma/schema.prisma、@@unique([collectionId, generationId])、2026年8月18日に確認)。

レコードはコピーされるのではなく共有されているため、その生成を削除すると、属していたすべてのコレクションから同時に消えます。

そこから残る所属の制限はちょうど1つ、同じ画像が同じコレクションに2回入ることはできない、という点だけです。異なるコレクションであれば好きなだけ入れられ、その数に上限を設けているコードもありません。これは製品に印刷された約束ではなく、コードに上限が存在しないという事実として扱ってください。

この規則が許すことと、拒むこと

4つの記述で全体を覆えます。このページのほかの内容は、そこから導かれます。

1枚の画像は、いくつのコレクションにでも。
一意性の制約は組にかかるため、同じ生成が同時に複数のコレクションに入っていても、何かが複製されることはありません。
同じコレクションへの2回目は、静かに拒まれます。
繰り返しの追加はエラーではなく、何も作りません。サーバーはその項目をすでに入っていたものとして報告し、コレクションはそのままの状態で残ります。
表示される件数は、サーバーの答えです。
各項目は、追加されたか、すでに入っていたかで個別に答えられます(apps/api/src/collections/collections.service.ts、2026年8月18日に確認)。そのため、いくつがすでにコレクションに入っていたかを伝える行は、アプリの推測ではなく結果です。
所属はバックアップではありません。
その画像を持つコレクションはすべて同じレコードを指しているので、コレクションが保っているのは結果の並べ方であって、結果の別のコピーではありません。

追加が返してくるもの

複数の画像に触れる操作は、2つではなく3つのカウンターで終わります。各項目は、そのうちちょうど1つに入ります。

結果コレクションで何が起きたか「元に戻す」の扱い
新しく追加組が存在しなかったため、コレクションはこの画像を指すようになりました。「元に戻す」が取り消すのは、これです。
すでにコレクション内押す前から組が存在していました。何も作られず、何も変わっていません。「元に戻す」は、そのままにします。
失敗ネットワークエラーが追加を中断したため、追加でもすでに入っていたでもなく、それ自体として数えられます。「元に戻す」が対象にするのは新しく追加された項目だけなので、失敗した項目は含まれません。

入口が、何を振り分けられるかを決めます

結果画面とライブラリの選択は、同じ規則に通じる2つの扉ではありません。

状況選択理由
仕上がった生成の結果画面を見ている。そこから振り分けます。結果画面のコレクションへ追加するボタンは完了した生成に対して表示され、その生成だけを持つからです(apps/jewelry-mobile/src/features/generation/screens/result-screen.tsx、2026年8月18日に確認)。
複数の結果をまとめて振り分けたい。ライブラリで長押しして選択を組み立てます。一括追加は対象を絞り込む条件を適用しないため、まだ実行中の生成や失敗した生成も、仕上がったものと一緒に振り分けられるからです。
選択の中に、以前振り分けた画像が入っている。そのまま送ります。繰り返しの追加は何も作らず、すでにコレクションに入っていたものとして返ってくるため、先に選択から外しても変わるのは集計であって、結果ではないからです。
失敗した生成がコレクションの中にあるのを見つけた。位置ではなく、ステータスバッジを読みます。それらの項目はコレクションの詳細でステータスバッジを保っており、失敗した生成がコレクションに入っているのは設計どおりの挙動だからです。

成り立たない思い込み

  • 2つ目のコレクションに画像を入れ、そのコレクションが独立したコピーを持つと考える。

    持ちません。どちらのコレクションも同じレコードを指しており、どちらも別の画像を保存していません。

  • まとめて追加して、すでにコレクションに入っていた件数を損害と読む。

    それらの項目には何も書かれておらず、何も取り除かれていません。その数字は、コレクションがすでに持っていたものを述べています。

  • 決して現れない「元に戻す」ボタンを待つ。

    このボタンは、操作が何かを新しく追加したときだけ存在します。すべてがすでに入っていたか、すべてが失敗した場合、仕様としてボタンはありません。

  • 一括追加は、仕上がっていないものを拒むと思い込む。

    まったく絞り込みません。コレクションに完了した結果だけが入っていると考えず、コレクションの詳細でステータスバッジを確認してください。

ここで述べたことの範囲

このページの挙動は、APIとジュエリー向けモバイルクライアントから読み取ったものです。その外側にあることは、ここでは確認していません。

  • コレクションがWebや管理パネルなど、ほかの場所に現れるかどうかは扱っていません。
  • コレクションを共有する、書き出す、誰かに送る、あるいはコレクションの中で検索・絞り込み・手作業の並べ替えをすることは、この面では説明していません。
  • 長いコレクション一覧について、性能上の主張はしていません。一覧も詳細表示も結果をページ分けしておらず、それがいつ体感に影響し始めるかは測定していません。
  • 削除した結果がどれだけ保管されるか、本番環境で保管の処理が動いているかどうかは、ここでは確認していません。コードに書かれた定数は、何が動いているかの証拠ではありません。
  • 生成がどのように作られるか、プロバイダーがどう振る舞うか、指示が出力にどう表れるかは、ここには何も書かれていません。
  • 価格、クレジットの数量、パックやプランは範囲外です。この面に課金のコードはありません。

まとめて追加する前に

  • どちらの入口にいるかを把握する。結果画面は仕上がった生成を1件、ライブラリの選択は選んだものすべてを振り分ける。
  • 返ってくる数字は2つではなく3つ。新しく追加、すでにコレクション内、失敗。
  • すでにコレクション内の件数は、直すべきエラーではなく、コレクションについての記述として読む。
  • 「元に戻す」を探すのは、何かが新しく追加されたあとだけ。そうでなければボタンはない。
  • コレクションは結果の別のコピーではなく、結果の並べ方として扱う。

このページが扱わないこと

コレクションの名前の付け方、中身が並ぶ順序、どの画像が表紙になるかは別の場所で決まっており、ここでは説明していません。

ライブラリで一括の選択をどう組み立てるか、そして各種の一括操作が中の項目をどう扱うかは、選択に実際に何が含まれるのかを扱うページの領分です。

コレクションを削除することと画像を1枚削除することの違い、そしてそれぞれがどこまで及ぶかは、ここで答えた問いとは別の問いです。

よくある質問

2つ目のコレクションに画像を追加すると、2つ目のコピーができますか?

できません。コレクションはその生成を含んでいることを記録するだけで、画像そのものは複製されません。その画像を持つコレクションはすべて、同じレコードを指しています。

そのコレクションにすでに入っている画像を追加すると、どうなりますか?

何も作られず、失敗にもなりません。サーバーはその項目をすでに入っているものとして報告し、集計の「すでにコレクション内」の行に数えられます。

一括追加のあとに「元に戻す」ボタンがないのは、なぜですか?

「元に戻す」は、操作が何かを新しく追加したときだけ現れます。選んだ画像がすべてすでにコレクションに入っていたか、追加がすべて失敗した場合、ボタンは表示されません。

まだ実行中の生成をコレクションに追加できますか?

ライブラリの選択からであればできます。一括追加は対象を絞り込む条件を適用しないため、実行中の生成も失敗した生成も振り分けられます。結果画面の追加ボタンは、完了した生成に対して表示されます。