Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

最近ワイワイしたもの ! ** JJSSOONN SScchheemmaaでいろいろやるやつ ** RRuubbyyのHHuubboottクローン ** 22つのSSQQLLから差分となるSSQQLLを生成するやつ ** テストからドキュメント生成するやつ ** uuiiuurreeooの総資産mmaacckkeerreellで監視するやつ

Slide 3

Slide 3 text

今日話さないこと ! ** UUIIの話 ** 京の地に眠るとされる110088種のページャ ** 僕の考えた最強のページネーション ** オープンソースの軽量コンテナDDoocckkeerrを使おう ** かわいいKKoottlliinn ** ##モリスナイト

Slide 4

Slide 4 text

今日話すこと ! ** AAPPIIこんな感じでつくりました ** ページャの実装こうなってます ** ページャちょっと怖い話 ** 所感

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

実装の話

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

LLiinnkk HHeeaaddeerr ! ** RRFFCC 55998888 ((WWeebb LLiinnkkiinngg)) ** ヘッダ内に他ページへのリンク ** 最初・前・次・最後 を入�れてる ! Link:  ;  rel=“next”,              ;  rel=“last”

Slide 17

Slide 17 text

KKaammiinnaarrii ! ** あとで @@aa__mmaattssuuddaa がきっと ** 単純な配列にも適用できて便利 ** SSoollrrの検索結果とかにも使える ! Recipe.page(2).per(20)   Kaminari::PaginatableArray.new(array)

Slide 18

Slide 18 text

その他 ! ** 社内用AAPPIIフレームワークがある ** 集合を定義したらAAPPIIになる ** II//FFが統一されてSSOOAAしやすい

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

class RecipesController < ApplicationController include Authorization ! prepend Pagination ! def index render json: resources end ! private ! def resources Recipe.published end end

Slide 21

Slide 21 text

ページャ怖い話 ! 「キャッシュ入�れた」 ! ! ! ! ! ! 「めでたい」「爆速」 「」「::++11::」 「iiOOSSアプリなんか“もっと見る”出ないんだけど?」

Slide 22

Slide 22 text

所感 ! ** 人は結局正規表現で数字だけ抜き取る ** この規模だと伝統的ページャでOOKK ** ページ数増えないサービスづくりが良い

Slide 23

Slide 23 text

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