← 制作記一覧へ

一覧が「最初の200件」で黙って止まる作りでした

公開: 2026-09-30 · #166 / 最終更新: 2026-09-30 個人開発点検運用うっかり防止

📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)

本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。

サイトには、問い合わせや「こういうものが欲しい」というリクエストを送ってもらう窓口があります。届いたものはネット上の小さなメモ帳のような保存場所にたまり、私は管理用の画面でそれを一覧にして読んでいます。

この一覧に、今は困っていないけれど、件数が増えると困る作りが入っていました。AIにサイトの裏側を点検してもらったときに挙がった指摘のひとつです。

読んでいたのは「1ページ目」だけ

保存場所から一覧を取る仕組みは、件数が多いと一度に全部は返さず、何回かに分けて返す決まりになっています。本のページをめくっていくような形です。

ところが一覧を作る処理は、その1ページ目だけを読んで終わっていました。しかも1ページの大きさを200件と指定していたので、読めるのは最初の200件までです。

確かめた時点の件数は、1ページに余裕で収まる数でした。そのため、確かめたときはすべてが表示されていました。困るのは200件を超えた瞬間です。そこから先は、いちばん新しい分が黙って表示から消えます。エラーが出るわけでもなく、一覧はいつもどおり並ぶので、消えていることには気づきにくいと思います。

公式の決まりを読み直しました

指摘をそのまま信じるのではなく、まず今の中身で本当にそうなっているかを確かめ、それから保存場所の公式仕様を読み直しました。

書いてあったのは次のような決まりです。1回で返るのは最大1,000件。続きがあるかどうかは、一緒に返ってくる「これで全部」という合図で判断する。続きがあるときは、渡された続きの印を次の呼び出しに添えて、その先を取る。中身が空のページが返ってきても、完了していないことがあり得る、とも書かれていました。

「返ってきた分が全部」とは限らない仕組みでした。同じ読み方をしている処理が、管理用の画面の別のところにもう一つあって、そちらは1,000件で止まる作りでした。根っこは同じで、続きの印をたどっていなかったことです。

「全部読むまで続ける」を一つだけ作る

二か所を別々に直すのではなく、共通の「全部読むまで続ける」処理を一つ作り、二つの窓口から使う形にしました。「これで全部」という合図が返るまでページをめくり続けます。続きの印が無い、印が前と変わらない、めくる回数が上限を超えた、といったおかしな状態になったら、黙って続けずに失敗として止まります。

テストは0件から5,000件までを用意しました。一覧の側は199件、200件、201件といった境目も入れて、201件目にあたる最新の1件が一覧に入ることを確かめています。

もう一つ足したのが、途中で失敗したら、途中までを全部として返さないというケースです。途中のページで読み込みに失敗したとき、そこまでの分を「これで全部です」と見せてしまうと、元の作りと同じことがまた起きます。失敗したら失敗と分かる形で返すようにしました。

サイトに反映したあと、一覧には変更前と同じ顔ぶれが新しい順に並びました。返ってくるまでの時間は0.41〜0.76秒で、変更前の0.38〜0.74秒とほとんど変わっていません。

遅くなる日のことも先に決めました

ただ、この直し方には弱点があります。一覧を取ったあと、それぞれの中身も読みに行く方式なので、件数が増えるほど時間がかかります。見込みでは、1,000件で約4〜6秒、2,000件で10秒級、5,000件では20〜30秒です。

数千件で数十秒かかる一覧は、さすがに使いにくいです。そこで、2,000件に近づいたら、一覧と一緒に状態や要約も受け取れるようにして、それぞれの中身を別に読みに行かずに済む方式へ切り替える、と先に決めておきました。問い合わせのほうは、数千件になる前に、ページを分けて見る画面にするつもりです。

だいぶ先の話ですが、切り替える目安は今のうちに書いておくほうがいいと思いました。

今動いていることと、増えても動くこと

この件でいちばん引っかかったのは、困る日が来るまで何の兆候も出ない点です。200件に収まっているうちは正しく見え、201件目から静かに欠けていきます。件数が少ないうちは、画面を眺めて確かめるやり方では見つけられません。

「今の件数で動いている」は、「件数が増えても動く」の証拠にはなりませんでした。何回かに分けて返ってくる仕組みを使うなら、続きがあるかどうかを見ているか。似たものを作るときに最初に疑うべきなのは、そこだと思います。


← 他の制作記を見る | トップ | お問い合わせ