Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Paging in API
Search
r7kamura
July 04, 2014
Programming
3
8.6k
Paging in API
This is a presentation I used at #pagernight on 2014-07-04.
r7kamura
July 04, 2014
Tweet
Share
More Decks by r7kamura
See All by r7kamura
Railsアップグレード百景
r7kamura
11
6.6k
個人開発のやっていき方
r7kamura
94
23k
amakanにおける書籍のシリーズ判定方法について 2016-08-21
r7kamura
10
6k
Tenkaichi Bot Butoukai
r7kamura
11
5.2k
Chanko Hacking Guide
r7kamura
5
1.3k
Making things with something small
r7kamura
1
460
Hidden
r7kamura
0
78
Butsukari Geiko
r7kamura
10
36k
Casual CI Server
r7kamura
7
1.8k
Other Decks in Programming
See All in Programming
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
210
Spring gRPC について / About Spring gRPC
mackey0225
0
220
Immutable ActiveRecord
megane42
0
140
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
もう僕は OpenAPI を書きたくない
sgash708
5
1.6k
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
120
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
580
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
150
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
6
4k
GoとPHPのインターフェイスの違い
shimabox
2
190
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
740
Featured
See All Featured
Faster Mobile Websites
deanohume
306
31k
Designing for Performance
lara
604
68k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
A Modern Web Designer's Workflow
chriscoyier
693
190k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
YesSQL, Process and Tooling at Scale
rocio
172
14k
How STYLIGHT went responsive
nonsquared
98
5.4k
Practical Orchestrator
shlominoach
186
10k
Designing for humans not robots
tammielis
250
25k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
What's in a price? How to price your products and services
michaelherold
244
12k
Transcript
AAPPIIのページングの話 ! @@rr77kkaammuurraa ##ppaaggeerrnniigghhtt
最近ワイワイしたもの ! ** JJSSOONN SScchheemmaaでいろいろやるやつ ** RRuubbyyのHHuubboottクローン ** 22つのSSQQLLから差分となるSSQQLLを生成するやつ **
テストからドキュメント生成するやつ ** uuiiuurreeooの総資産mmaacckkeerreellで監視するやつ
今日話さないこと ! ** UUIIの話 ** 京の地に眠るとされる110088種のページャ ** 僕の考えた最強のページネーション ** オープンソースの軽量コンテナDDoocckkeerrを使おう
** かわいいKKoottlliinn ** ##モリスナイト
今日話すこと ! ** AAPPIIこんな感じでつくりました ** ページャの実装こうなってます ** ページャちょっと怖い話 ** 所感
← ページングこんな感じ ((TTwwiitttteerr風の無限ページャ)) ! ※これはWWeebbブラウザ版 ((アプリの動画撮るの難しかった))
AAPPII データベース 各種WWeebbアプリ AAnnddrrooiidd 22001144--0022〜 iiOOSS 22001133--0088〜
GGEETT //ppiicckkuupp__rreecciippee GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044 ** トップページは大体キャッシュ ** 複数のAAPPIIリクエストを送ってる
** 日付毎にアクセス数上位2200件 ** 11リクエストで11日分 ** スクロールで次ページ読み込み GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044 GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0033
GGEETT //hhoott__rreecciippeess??ppaaggee==11 GGEETT //hhoott__rreecciippeess??ppaaggee==22 ** つくれぽが1100件ついたレシピ ** スクロール ==>> ppaaggee==nn++11
GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==11 ** 検索AAPPII ** スクロール ==>> ppaaggee==nn++11 GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==22
GGEETT //ccaatteeggoorriieess これは見た目の都合で隠してるだけ ** カテゴリAAPPII ** ツリー構造で11親等先まで取得 ** ページャ必要なし
GGEETT //bbooookkmmaarrkk__ttaaggss ** MMYYフォルダ ((とユーザ情報)) ** ログイン中のときだけ使う ** ここもページャ必要なし GGEETT
//mmee
GGEETT //bbooookkmmaarrkkss??ppaaggee==11 GGEETT //bbooookkmmaarrkkss??ppaaggee==22 ** MMYYフォルダ内のレシピ返すAAPPII ** スクロール ==>> ppaaggee==nn++11
実装の話
要素技術 ※大したことやってないです ! ** LLiinnkk HHeeaaddeerr ** KKaammiinnaarrii ** その他
LLiinnkk HHeeaaddeerr ! ** RRFFCC 55998888 ((WWeebb LLiinnkkiinngg)) ** ヘッダ内に他ページへのリンク
** 最初・前・次・最後 を入�れてる ! Link: </recipes?page=2>; rel=“next”, </recipes?page=9>; rel=“last”
KKaammiinnaarrii ! ** あとで @@aa__mmaattssuuddaa がきっと ** 単純な配列にも適用できて便利 ** SSoollrrの検索結果とかにも使える
! Recipe.page(2).per(20) Kaminari::PaginatableArray.new(array)
その他 ! ** 社内用AAPPIIフレームワークがある ** 集合を定義したらAAPPIIになる ** II//FFが統一されてSSOOAAしやすい
RReessoouurrccee VVaalliiddaattiioonn PPaaggiinnaattiioonn JJssoonnEEnnccooddeerr RReeqquueesstt RReessppoonnssee AAuutthhoorriizzaattiioonn <<----ここで絞込 ++ LLiinnkkHHeeaaddeerr
class RecipesController < ApplicationController include Authorization ! prepend Pagination !
def index render json: resources end ! private ! def resources Recipe.published end end
ページャ怖い話 ! 「キャッシュ入�れた」 ! ! ! ! ! ! 「めでたい」「爆速」
「」「::++11::」 「iiOOSSアプリなんか“もっと見る”出ないんだけど?」
所感 ! ** 人は結局正規表現で数字だけ抜き取る ** この規模だと伝統的ページャでOOKK ** ページ数増えないサービスづくりが良い
おわり ! AAPPIIのページングの話 ! @@rr77kkaammuurraa ##ppaaggeerrnniigghhtt