質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Q&A

解決済

1回答

649閲覧

なぜTwitterのページングでは”ダブり”が生じないのですか?

aankou

総合スコア13

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

0グッド

0クリップ

投稿2019/07/14 20:43

次のページを開く間に新しいコンテンツが追加されると、次のページを開いた際に前のページの末尾のコンテンツが先頭に表示されるサイトがあると思いますが、
Twitter等のチャット系のアプリケーションではこういった現象は起こらないように思います。

このようなページングの仕様はどのようにして実現できるものなのでしょうか?
ネット上で調べてはみたのですが該当するが見当たらず、こちらで質問させていただきました。
このようなWebアプリケーション開発に知見のある方にぜひお伺いしたいです。
何卒宜しくお願い致します。

(テーブル設計に工夫があるのでしょうか?あるいはNoSQLを使うことで実現できるものなのでしょうか?)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/14 21:23

逆に、どう作ったらダブリが生じると考えてますか? 「というサイトがある」というのでしたら例示されたほうが良いですしTwitterを例にされるのでしたらどういうときの何が該当するのか図示されたほうが良いかと思います。 文章だけで伝えられることってあまり多くないので…
aankou

2019/07/14 22:23

次のページに遷移後に、前ページのコンテンツが表示される可能性があるサイトの例としては、以下のようなものがあると思います。 ・ヤフーニュース記事一覧ページ https://news.yahoo.co.jp/list/?p=2 ・はてなブックマーク記事一覧ページ https://b.hatena.ne.jp/entrylist/it?page=2 これらのサイトでは新しい記事が1件投稿されると2ページ目の先頭に、1ページ目の末尾の記事が表示されると思います。 これは想像ですが、記事一覧テーブルからデータを取得するビジネスロジックにおいて、例えば1ページに10件を表示するなら、2ページ目は最新のレコードから11件目~20件目の記事をDBから取得して返す、というようなものになっていると考えています。 Twitterは上記の記事一覧ページサイトとは違い、下にスクロールすると過去のツイートが数10件ずつ表示されていくと思いますが、仮に上記の様なビジネスロジックであれば、直前に表示した過去のツイートが表示される可能性があると思われます。 しかし、Twitterでは同じツイートが重複表示されるようなことがないように思われます。
guest

回答1

0

ベストアンサー

ダブリがあるページネーションは相対位置によるデータ取得を行っており、ダブリがないページネーションは、絶対位置によるページ取得を行っています。

雑な例)
・ダブリあり
1ページ目:投稿の頭から10件
2ページ目:投稿の頭から11-20件

・ダブリなし
1ページ目:投稿の頭から10件(このときの最小項目 min_id)
2ページ目:min_id から10件

twitter であれば ajax リクエストを確認することである程度理解できると思います。
API の仕様でもわかるかと。

参考:
Get Tweet timelines

投稿2019/07/14 23:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aankou

2019/07/14 23:15

ありがとうございます! 相対位置によるページングを知らなかったため、参考になりました。 また、TwitterのAPI仕様のリンクも教えていただきありがとうございます。 これならRDBでも実装できそうなので試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問