This is a presentation I used at #pagernight on 2014-07-04.
AAPPIIのページングの話!@@rr77kkaammuurraa##ppaaggeerrnniigghhtt
View Slide
最近ワイワイしたもの!** JJSSOONN SScchheemmaaでいろいろやるやつ** RRuubbyyのHHuubboottクローン** 22つのSSQQLLから差分となるSSQQLLを生成するやつ** テストからドキュメント生成するやつ** uuiiuurreeooの総資産mmaacckkeerreellで監視するやつ
今日話さないこと!** UUIIの話** 京の地に眠るとされる110088種のページャ** 僕の考えた最強のページネーション** オープンソースの軽量コンテナDDoocckkeerrを使おう** かわいいKKoottlliinn** ##モリスナイト
今日話すこと!** AAPPIIこんな感じでつくりました** ページャの実装こうなってます** ページャちょっと怖い話** 所感
← ページングこんな感じ((TTwwiitttteerr風の無限ページャ))!※これはWWeebbブラウザ版((アプリの動画撮るの難しかった))
AAPPIIデータベース各種WWeebbアプリAAnnddrrooiidd22001144--0022〜iiOOSS22001133--0088〜
GGEETT //ppiicckkuupp__rreecciippeeGGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044** トップページは大体キャッシュ** 複数のAAPPIIリクエストを送ってる
** 日付毎にアクセス数上位2200件** 11リクエストで11日分** スクロールで次ページ読み込みGGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0033
GGEETT //hhoott__rreecciippeess??ppaaggee==11GGEETT //hhoott__rreecciippeess??ppaaggee==22** つくれぽが1100件ついたレシピ** スクロール ==>> ppaaggee==nn++11
GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==11** 検索AAPPII** スクロール ==>> ppaaggee==nn++11GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==22
GGEETT //ccaatteeggoorriieessこれは見た目の都合で隠してるだけ** カテゴリAAPPII** ツリー構造で11親等先まで取得** ページャ必要なし
GGEETT //bbooookkmmaarrkk__ttaaggss** MMYYフォルダ ((とユーザ情報))** ログイン中のときだけ使う** ここもページャ必要なしGGEETT //mmee
GGEETT //bbooookkmmaarrkkss??ppaaggee==11GGEETT //bbooookkmmaarrkkss??ppaaggee==22** MMYYフォルダ内のレシピ返すAAPPII** スクロール ==>> ppaaggee==nn++11
実装の話
要素技術※大したことやってないです!** LLiinnkk HHeeaaddeerr** KKaammiinnaarrii** その他
LLiinnkk HHeeaaddeerr!** RRFFCC 55998888 ((WWeebb LLiinnkkiinngg))** ヘッダ内に他ページへのリンク** 最初・前・次・最後 を入�れてる!Link: ; rel=“next”, ; rel=“last”
KKaammiinnaarrii!** あとで @@aa__mmaattssuuddaa がきっと** 単純な配列にも適用できて便利** SSoollrrの検索結果とかにも使える!Recipe.page(2).per(20) Kaminari::PaginatableArray.new(array)
その他!** 社内用AAPPIIフレームワークがある** 集合を定義したらAAPPIIになる** II//FFが統一されてSSOOAAしやすい
RReessoouurrcceeVVaalliiddaattiioonnPPaaggiinnaattiioonnJJssoonnEEnnccooddeerrRReeqquueessttRReessppoonnsseeAAuutthhoorriizzaattiioonn<<----ここで絞込 ++ LLiinnkkHHeeaaddeerr
class RecipesController < ApplicationControllerinclude Authorization!prepend Pagination!def indexrender json: resourcesend!private!def resourcesRecipe.publishedendend
ページャ怖い話!「キャッシュ入�れた」!!!!!!「めでたい」「爆速」「」「::++11::」「iiOOSSアプリなんか“もっと見る”出ないんだけど?」
所感!** 人は結局正規表現で数字だけ抜き取る** この規模だと伝統的ページャでOOKK** ページ数増えないサービスづくりが良い
おわり!AAPPIIのページングの話!@@rr77kkaammuurraa##ppaaggeerrnniigghhtt