Paging in API

Paging in API

This is a presentation I used at #pagernight on 2014-07-04.

089127ffb92a19d3d37815673cca06dc?s=128

r7kamura

July 04, 2014
Tweet

Transcript

  1. AAPPIIのページングの話 ! @@rr77kkaammuurraa ##ppaaggeerrnniigghhtt

  2. 最近ワイワイしたもの ! ** JJSSOONN SScchheemmaaでいろいろやるやつ ** RRuubbyyのHHuubboottクローン ** 22つのSSQQLLから差分となるSSQQLLを生成するやつ **

    テストからドキュメント生成するやつ ** uuiiuurreeooの総資産mmaacckkeerreellで監視するやつ
  3. 今日話さないこと ! ** UUIIの話 ** 京の地に眠るとされる110088種のページャ ** 僕の考えた最強のページネーション ** オープンソースの軽量コンテナDDoocckkeerrを使おう

    ** かわいいKKoottlliinn ** ##モリスナイト
  4. 今日話すこと ! ** AAPPIIこんな感じでつくりました ** ページャの実装こうなってます ** ページャちょっと怖い話 ** 所感

  5. ← ページングこんな感じ ((TTwwiitttteerr風の無限ページャ)) ! ※これはWWeebbブラウザ版 ((アプリの動画撮るの難しかった))

  6. AAPPII データベース 各種WWeebbアプリ AAnnddrrooiidd 22001144--0022〜 iiOOSS 22001133--0088〜

  7. GGEETT //ppiicckkuupp__rreecciippee GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044 ** トップページは大体キャッシュ ** 複数のAAPPIIリクエストを送ってる

  8. ** 日付毎にアクセス数上位2200件 ** 11リクエストで11日分 ** スクロールで次ページ読み込み GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0044 GGEETT //ddaaiillyy__rraannkkiinnggss//22001144--0077--0033

  9. GGEETT //hhoott__rreecciippeess??ppaaggee==11 GGEETT //hhoott__rreecciippeess??ppaaggee==22 ** つくれぽが1100件ついたレシピ ** スクロール ==>> ppaaggee==nn++11

  10. GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==11 ** 検索AAPPII ** スクロール ==>> ppaaggee==nn++11 GGEETT //rreecciippeess//sseeaarrcchh??ppaaggee==22

  11. GGEETT //ccaatteeggoorriieess これは見た目の都合で隠してるだけ ** カテゴリAAPPII ** ツリー構造で11親等先まで取得 ** ページャ必要なし

  12. GGEETT //bbooookkmmaarrkk__ttaaggss ** MMYYフォルダ ((とユーザ情報)) ** ログイン中のときだけ使う ** ここもページャ必要なし GGEETT

    //mmee
  13. GGEETT //bbooookkmmaarrkkss??ppaaggee==11 GGEETT //bbooookkmmaarrkkss??ppaaggee==22 ** MMYYフォルダ内のレシピ返すAAPPII ** スクロール ==>> ppaaggee==nn++11

  14. 実装の話

  15. 要素技術 ※大したことやってないです ! ** LLiinnkk HHeeaaddeerr ** KKaammiinnaarrii ** その他

  16. LLiinnkk HHeeaaddeerr ! ** RRFFCC 55998888 ((WWeebb LLiinnkkiinngg)) ** ヘッダ内に他ページへのリンク

    ** 最初・前・次・最後 を入�れてる ! Link:  </recipes?page=2>;  rel=“next”,              </recipes?page=9>;  rel=“last”
  17. KKaammiinnaarrii ! ** あとで @@aa__mmaattssuuddaa がきっと ** 単純な配列にも適用できて便利 ** SSoollrrの検索結果とかにも使える

    ! Recipe.page(2).per(20)   Kaminari::PaginatableArray.new(array)
  18. その他 ! ** 社内用AAPPIIフレームワークがある ** 集合を定義したらAAPPIIになる ** II//FFが統一されてSSOOAAしやすい

  19. RReessoouurrccee VVaalliiddaattiioonn PPaaggiinnaattiioonn JJssoonnEEnnccooddeerr RReeqquueesstt RReessppoonnssee AAuutthhoorriizzaattiioonn <<----ここで絞込 ++ LLiinnkkHHeeaaddeerr

  20. class RecipesController < ApplicationController include Authorization ! prepend Pagination !

    def index render json: resources end ! private ! def resources Recipe.published end end
  21. ページャ怖い話 ! 「キャッシュ入�れた」 ! ! ! ! ! ! 「めでたい」「爆速」

    「」「::++11::」 「iiOOSSアプリなんか“もっと見る”出ないんだけど?」
  22. 所感 ! ** 人は結局正規表現で数字だけ抜き取る ** この規模だと伝統的ページャでOOKK ** ページ数増えないサービスづくりが良い

  23. おわり ! AAPPIIのページングの話 ! @@rr77kkaammuurraa ##ppaaggeerrnniigghhtt