広告

# 私はページネーションの課題を作った…そしてAIは本当の問題を見逃した

Dev.to / 2026/3/28

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • この記事では、基本的なオフセット/リミットのページネーションは静的なデータセットでは機能するが、リクエスト間でデータが変化する(挿入・削除・ユーザーの更新など)と信頼性が低下すると論じています。
  • 実際の現場でよく起きる失敗パターンとして、ページネーションを単純なスライスで実装した場合に重複レコードが表示されたり、逆に一部のレコードがスキップされたりすることを説明しています。
  • 著者はVibeCode Arena上で「実世界のAPI思考」をテストするためのPagination Challengeを作成し、重複を防ぎ、動的なデータを扱い、スケーラブルなページネーションを設計するよう参加者に求めました。
  • 著者は、多くのAIが生成する解決策がデフォルトでスライスベースのアプローチに寄りがちで、システム要件がそれを示しているのに、より堅牢なカーソルベースのページネーションを提案することはめったにないと観察しています。
  • 最終的な教訓は、ページネーションは配列を切り分けることというより、ユーザーが「正しいデータ」を「正しいタイミングで」見ることを保証することだ、という点です。

ページネーションはシンプルに見えます。

ページ → 制限 → スライス → 終了。

それが私の考えでした。

そこで、VibeCode Arenaで小さなチャレンジを作りました。

すると、状況が面白くなってきました。

問題

ロジックは…静的データに対しては完璧に動きます。

しかし、現実のシステムは静的ではありません。

データは変わり続けます。

ユーザーはアイテムを追加したり削除したりし続けます。

何がうまくいかないのか?

現実のシナリオでは:

  • 新しいデータが挿入される
  • 古いデータが削除される
  • ユーザーがページを更新する

そして突然:

重複したデータが表示される

もしくは、いくつかのレコードを見逃す

これは非常に一般的な、本番環境のバグです。

私が観察したこと

AIモデルにこれを試させたとき:

  • ほとんどが基本的なスライスベースのロジックだった
  • 動的データを考慮しないものもあった
  • カーソルベースのページネーションを提案したのはごくわずかだった

コードは動きます。

しかし、システムは信頼できません。

自分で試してみて

私は、このチャレンジを作って現実的なAPIの思考をテストしました。

こちらで試せます:
https://vibecodearena.ai/duel/b772342a-30ee-4d38-838c-c2c888dfffa7

あなたはできますか:

  • 重複レコードを防ぐ?
  • 動的データを扱う?
  • スケーラブルなページネーションシステムを設計する?

最後に

ページネーションは、データをスライスすることではありません。

ユーザーが適切なタイミングで正しいデータを見られるようにすることです。

このようなAPIレベルのロジック設計をAIに任せて信頼できますか?

議論しましょう

広告