コレクション
コレクションの中に、手で並べられるものはありません
見えているものを決めているのは三つの日付です。画像が生成された日付がコレクション内での位置を決め、コレクションが作成された日付が一覧での位置を決め、最も新しい有効な生成がカバー画像を決めます。この面には、ドラッグ用のつまみも、固定の機能も、カバー画像を選ぶ画面もありません。
三つの日付、そのどれも作業した順ではありません
コレクションは、特定の順に自分で詰めたフォルダのように見えます。だから最後に入れたものが最初に見えると考えるのは無理のないことです。この面はそのようには作られていません。コレクションの中では、項目は画像が生成された日付の新しい順で返ってきます。数週間前に作った写真を追加すれば、先頭ではなく、その日付の位置に落ち着きます。
一つ上の階層のコレクション一覧も同じ仕組みです。最後に作成されたコレクションが先頭で、残りは作成順に続きます。三つ目の日付がカバー画像です。これは選択として保存されているものではなく、コレクションが持つ最も新しい有効な生成から読み取られます。
三つとも出典は一つのファイルです。apps/api/src/collections/collections.service.tsが、二つの一覧について orderBy: { createdAt: 'desc' } を、サムネイルについて coverUrl: cover?.outputUrl ?? cover?.inputUrl ?? null を持っています(ソースレビュー 2026-08-18)。
並び順を決めるもの、記録されるだけのもの
このうち二つは、働いている様子が目に見える日付です。もう一つは、アプリが保持していながら並びには一度も使わない日付です。
- コレクションの中では、画像が生成された日付。
- 新しい順です。この日付は画像そのものに属しています。だからこそ、古い作品はその日付が示す位置にとどまります。
- コレクション一覧では、コレクションが作成された日付。
- 新しい順で、変わりません。この面に、名前順の並びも、手動での移動も、先頭固定もありません。
- カバー画像は、コレクションの中で最も新しい有効な生成。
- その生成に出力画像がない場合、カバー画像には代わりにアップロードした入力の写真が表示されます。カバー画像は選ぶことも固定することもできません。
- コレクションに項目を追加した時刻は、記録されますが使われません。
- データベースにCollectionItem.createdAtとして保存され、どの一覧もそれで並べ替えません。手動の並べ替えやドラッグのためのエンドポイントもありません。
並び順、カバー画像、名前を並べて見る
それぞれが何に従っているか、そしてそのうち実際に変えられるのはどの部分か。
| 見えているもの | 何に従うか | 変えられること |
|---|---|---|
| コレクション内の画像の並び順 | 画像が生成された日付、新しい順 | なし。手動の並べ替えもドラッグもここにはありません |
| コレクション一覧の並び順 | コレクションが作成された日付、新しい順 | なし。名前を変えてもコレクションは動きません |
| カバーのサムネイル | 最も新しい有効な生成。その生成に出力がない場合は、入力として使った写真 | なし。カバー画像は選ぶことも固定することもできません |
| コレクション名 | 入力した文字列。前後の空白は取り除かれ、1文字以上80文字以下 | 名前はいつでも変えられます。位置は元のままです |
| 同じ名前の二つのコレクション | 許可されています。妨げる規則はありません | 自分で別の名前を付けることだけ |
| コレクションの数と、一つのコレクションに入る画像の数 | コードは上限を設けていません | 設定するものはありません |
望んだ並びになっていないとき
どの項目も、操作の説明ではなく、操作を探すこと自体を終わらせるためのものです。
| 状況 | 選択 | 理由 |
|---|---|---|
| 今日、古い写真を追加したのに、コレクションの先頭にない。 | 代わりに、その生成日付の位置で探す。 | 項目は画像が生成された日付の新しい順に並び、追加した時刻は記録されるものの並べ替えには使われません。 |
| 特定の一枚をコレクションのカバー画像にしたい。 | カバー画像を設定ではなく表示として読み、コレクションは名前で見分ける。 | カバー画像は常にコレクションの中で最も新しい有効な生成で、より新しい日付の生成が加わるとひとりでに変わります。 |
| コレクションのカバー画像に、自分がアップロードした写真が出ている。 | 最も新しい有効な生成に表示できる出力がない、と受け取る。 | 最も新しい有効な生成に出力画像がないとき、カバー画像は入力の写真に切り替わります。 |
| コレクションを名前順にしたい、あるいは一つを先頭に固定したい。 | 一覧が読みやすくなるなら名前は変えてよいが、どの位置もそのまま動かないと考える。 | 一覧は各コレクションの作成日付に固定されており、名前の変更は何も動かしません。 |
| コレクションの作成や名前の変更が失敗し、メッセージが理由を告げない。 | 前後の空白を取り除いたうえで名前を80文字以内に縮め、もう一度試す。 | サーバーは1文字以上80文字以下の範囲から外れた名前を拒否し、アプリは長さを名指しせず一般的な失敗を返します。 |
存在しない操作を探しに行く前に
並びについての驚きのほとんどを、何も変えずに片づける五つの確認です。
- いま追加した画像の生成日付を確認する。それがコレクションの中で取る位置です。
- コレクション一覧は、名前順に探すのではなく、上から作成の新しい順として読む。
- 追加のたびにカバー画像を見る。変わっていれば、より新しい有効な生成がそのコレクションで最新になっています。
- 新しい名前は前後の空白を取り除いた状態で80文字以内に保ち、保存されたと考える前に表示を確認する。
- 二つのコレクションが同じ名前を持ち得ることを前提にして、一覧上の位置で見分ける。
この面が行わないこと
このページのどこかが、探しに行くことになる操作をほのめかさないよう、率直に書いておきます。
- 手動の並べ替えはありません。コレクションの中で項目を選んだ位置へ動かすためのエンドポイントも操作もありません。
- 先頭固定もカバー画像の選択もありません。カバー画像は導き出されるものであり、設定されるものではありません。
- コレクション一覧の名前順の並びはなく、コレクションを上へ動かす方法もありません。
- コレクションの名前の変更は表示名だけを変えます。位置は作成日付に結び付いたままです。
- 項目を追加した時刻はデータベースに保持され、どの一覧にも使われていません。
- コレクション名の重複は妨げられないため、アプリがそれについて警告することはありません。
- ここでの調査結果はAPIとJewelry AIのモバイルクライアントだけを説明しています。他の面については何も主張しません。
このページが決着させないこと
カバー画像は最も新しい有効な生成であり、この文の中で「有効な」という語は実際に働いています。生成が削除されたり、復元されたり、完全に取り除かれたりしたときにコレクションとそのカバー画像がどうなるかは別の問いであり、このページでは決着しません。
そもそも画像がどのようにコレクションに入るのか、同じ画像が複数のコレクションに置かれること、同じ追加を繰り返すと何が起きるのかも、このページの外側です。同じ画像をライブラリのタブがどう扱うかも同様で、それは別のページが持つ別の一覧です。
画像がどのように生成されるのか、プロバイダーがそれに何をするのかについては、ここでは何も説明しません。
よくある質問
コレクションのカバー画像に使う画像を選べますか?
選べません。カバー画像は常にコレクションの中で最も新しい有効な生成で、より新しい日付の生成が加わるとひとりでに変わります。その最も新しい有効な生成に出力画像がない場合、カバー画像にはそのためにアップロードした入力の写真が表示されます。選択画面も固定の機能もありません。
いま追加した画像がコレクションの先頭にないのはなぜですか?
項目が、追加した順ではなく画像が生成された日付の新しい順に並んでいるからです。今日追加した古い写真は、その画像自身の日付の位置に入ります。追加した時刻はデータベースに記録されますが、どの一覧もそれで並べ替えません。
コレクションを名前順に並べたり、好きな順にドラッグしたりできますか?
できません。コレクション一覧は各コレクションの作成日付の新しい順に固定されています。名前順の並べ替えも、手動での移動も、先頭固定もなく、コレクションの名前を変えても位置は変わりません。
コレクションの名前を変えたら、理由も示されずに失敗しました。何が起きたのですか?
まず確認するのは長さです。名前は前後の空白が取り除かれ、1文字以上80文字以下である必要がありますが、アプリのどの名前の入力欄も入力中に80文字で止めてくれません。それより長い名前はサーバーが拒否し、長さを理由として名指しせずに、作成や名前変更の一般的な失敗として返ってきます。名前を短くして、もう一度試してください。