api-pagination
大量のデータを扱う際に、オフセット/リミット、カーソル、キーセットといった方法で効率的にページ分割し、検索パフォーマンスを最適化して、コレクションをスムーズに表示するSkill。
📜 元の英語説明(参考)
Implement efficient pagination strategies for large datasets using offset/limit, cursor-based, and keyset pagination. Use when returning collections, managing large result sets, or optimizing query performance.
🇯🇵 日本人クリエイター向け解説
大量のデータを扱う際に、オフセット/リミット、カーソル、キーセットといった方法で効率的にページ分割し、検索パフォーマンスを最適化して、コレクションをスムーズに表示するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o api-pagination.zip https://jpskill.com/download/21329.zip && unzip -o api-pagination.zip && rm api-pagination.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21329.zip -OutFile "$d\api-pagination.zip"; Expand-Archive "$d\api-pagination.zip" -DestinationPath $d -Force; ri "$d\api-pagination.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
api-pagination.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
api-paginationフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 8
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] api-pagination
API Pagination
目次
概要
効率的なクエリ、ナビゲーション、パフォーマンス最適化により、大規模なデータセットを処理するためのスケーラブルなページネーション戦略を実装します。
使用する場面
- 大規模なリソースコレクションを返す場合
- 検索結果のページネーションを実装する場合
- 無限スクロールインターフェースを構築する場合
- 大規模なデータセットのクエリを最適化する場合
- クライアントアプリケーションでメモリを管理する場合
- 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,
// ... (完全な実装についてはリファレンスガイドを参照してください)
リファレンスガイド
references/ ディレクトリにある詳細な実装:
| ガイド | 内容 |
|---|---|
| Offset/Limit Pagination | Offset/Limit Pagination |
| Cursor-Based Pagination | Cursor-Based Pagination |
| Keyset Pagination | Keyset Pagination |
| Search Pagination | Search Pagination |
| Pagination Response Formats | Pagination Response Formats |
| Python Pagination (SQLAlchemy) | Python Pagination (SQLAlchemy) |
ベストプラクティス
✅ するべきこと
- 大規模なデータセットにはカーソルページネーションを使用する
- 妥当な最大制限(例:100)を設定する
- 可能な場合は合計件数を含める
- ナビゲーションリンクを提供する
- ページネーション戦略を文書化する
- ソートにはインデックス付きフィールドを使用する
- 適切な場合はページネーション結果をキャッシュする
- エッジケース(空の結果)を処理する
- 一貫したページネーション形式を実装する
- 非常に大規模なデータセットにはキーセットを使用する
❌ するべきではないこと
- 数十億行に対してオフセットを使用する
- 無制限のページサイズを許可する
- リクエストごとに行数をカウントする
- ソートせずにページネーションを行う
- ページネーションの途中でソート順を変更する
- カーソルなしで深いページネーションを使用する
- 大規模なデータセットのページネーションをスキップする
- データベースのページネーションを直接公開する
- ページネーション戦略を混在させる
- パフォーマンスへの影響を無視する
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
API Pagination
Table of Contents
Overview
Implement scalable pagination strategies for handling large datasets with efficient querying, navigation, and performance optimization.
When to Use
- Returning large collections of resources
- Implementing search results pagination
- Building infinite scroll interfaces
- Optimizing large dataset queries
- Managing memory in client applications
- Improving API response times
Quick Start
Minimal working example:
// 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)
Reference Guides
Detailed implementations in the references/ directory:
| Guide | Contents |
|---|---|
| Offset/Limit Pagination | Offset/Limit Pagination |
| Cursor-Based Pagination | Cursor-Based Pagination |
| Keyset Pagination | Keyset Pagination |
| Search Pagination | Search Pagination |
| Pagination Response Formats | Pagination Response Formats |
| Python Pagination (SQLAlchemy) | Python Pagination (SQLAlchemy) |
Best Practices
✅ DO
- Use cursor pagination for large datasets
- Set reasonable maximum limits (e.g., 100)
- Include total count when feasible
- Provide navigation links
- Document pagination strategy
- Use indexed fields for sorting
- Cache pagination results when appropriate
- Handle edge cases (empty results)
- Implement consistent pagination formats
- Use keyset for extremely large datasets
❌ DON'T
- Use offset with billions of rows
- Allow unlimited page sizes
- Count rows for every request
- Paginate without sorting
- Change sort order mid-pagination
- Use deep pagination without cursor
- Skip pagination for large datasets
- Expose database pagination directly
- Mix pagination strategies
- Ignore performance implications
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (3,063 bytes)
- 📎 references/cursor-based-pagination.md (1,783 bytes)
- 📎 references/keyset-pagination.md (1,498 bytes)
- 📎 references/offsetlimit-pagination.md (1,985 bytes)
- 📎 references/pagination-response-formats.md (954 bytes)
- 📎 references/python-pagination-sqlalchemy.md (1,185 bytes)
- 📎 references/search-pagination.md (1,666 bytes)
- 📎 scripts/validate-api.sh (440 bytes)