mcpField
A
api-pagination

api-pagination

github.com/aj-geddes開発373491 回インストール34 週間前に更新
リポジトリ

api-pagination について

大規模なデータセットを効率よく検索・移動するためのページネーション実装スキルです。大量の結果を扱うAPIやクライアント画面を開発する人向けです。

主な機能

  1. 01オフセット/リミット、カーソル、キーセット方式
  2. 02検索結果のページネーション
  3. 03レスポンス形式のガイド
  4. 04性能とエッジケースへの対応

活用シーン

  1. 01大規模なAPIコレクションのページ分割
  2. 02検索結果のナビゲーション構築
  3. 03無限スクロール画面の実装
  4. 04クエリとクライアントのメモリ負荷軽減

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-pagination

インストール後、Claude Code で/api-paginationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cursor-based-pagination.md
keyset-pagination.md
offsetlimit-pagination.md
pagination-response-formats.md
python-pagination-sqlalchemy.md
search-pagination.md
scripts/
validate-api.sh
templates/
api-scaffold.yaml

詳細

API のページネーション

目次

概要

効率的なクエリ、ナビゲーション、パフォーマンスの最適化により、大規模なデータセットを扱うためのスケーラブルなページネーション戦略を実装します。

使用する場面

  • 大量のリソースを返す場合
  • 検索結果のページネーションを実装する場合
  • 無限スクロールのインターフェースを構築する場合
  • 大規模なデータセットのクエリを最適化する場合
  • クライアントアプリケーションのメモリを管理する場合
  • API の応答時間を改善する場合

クイックスタート

最小限の動作する例:

// Node.js offset/limit implementation
app.get('/api/users', async (req, res) => {
  const page = parseInt(req.query.page) || 1;
  const limit = Math.min(parseInt(req.query.limit) || 20, 100); // Max 100
  const offset = (page - 1) * limit;

  try {
    const [users, total] = await Promise.all([
      User.find()
        .skip(offset)
        .limit(limit)
        .select('id email firstName lastName createdAt'),
      User.countDocuments()
    ]);

    const totalPages = Math.ceil(total / limit);

    res.json({
      data: users,
      pagination: {
        page,
        limit,
        total,
        totalPages,
        hasNext: page < totalPages,
// ... (see reference guides for full implementation)

リファレンスガイド

詳細な実装については、references/ ディレクトリを参照してください:

ガイド内容
オフセット/リミット方式のページネーションオフセット/リミット方式のページネーション
カーソルベースのページネーションカーソルベースのページネーション
キ​​ーセットページネーションキーセットページネーション
検索のページネーション検索のページネーション
ページネーションの応答形式ページネーションの応答形式
Python のページネーション(SQLAlchemy)Python のページネーション(SQLAlchemy)

ベストプラクティス

✅ 推奨事項
  • 大規模なデータセットにはカーソルページネーションを使用します
  • 妥当な最大件数(例:100)を設定します
  • 可能な場合は合計件数を含めます
  • ナビゲーションリンクを提供します
  • ページネーション戦略を文書化します
  • 並べ替えにはインデックス付きのフィールドを使用します
  • 適切な場合はページネーションの結果をキャッシュします
  • エッジケース(結果が空の場合など)に対応します
  • 一貫性のあるページネーション形式を実装します
  • 非常に大規模なデータセットにはキーセット方式を使用します
❌ 禁止事項
  • 数十億行のデータにオフセットを使用しないでください
  • ページサイズを無制限にしないでください
  • リクエストごとに行数をカウントしないでください
  • 並べ替えなしでページネーションを行わないでください
  • ページネーションの途中で並べ替え順を変更しないでください
  • カーソルなしで深いページネーションを行わないでください
  • 大規模なデータセットでページネーションを省略しないでください
  • データベースのページネーションを直接公開しないでください
  • 複数のページネーション戦略を混在させないでください
  • パフォーマンスへの影響を無視しないでください

コメント