ページネーションってホントに必要ですか?

お客さんから「ページネーションつけて」って言われた時の返答です。

1.ページネーションって必要ですか?

業務アプリの一覧表画面の話なんですが。ページネーションって例えば500行のデータを50行ずつ10シートに分けたExcelみたいなもんだと思うんですよ。それ嬉しいですか?

しかもシートを遷移すると必ず1行目に戻ってしまうイライラ。検索かけてもブック全体検索はNG、シート単位検索しかできないトホホ。

1つの表を分割するって根本的に見にくくするだけですよね。そんなのを「手間と時間をかけて50行づつ分けました!!」とかドヤ顔で渡されたらモヤモヤしませんか。

手間と時間。そう、ページネーションは手間と時間(コスト)がかかるんですよ。

2.ページネーションはコストの塊

2-1.運用コスト

例えば元データが10,000件あるとして、500件検索ヒット、50行づつページネーションだと。

1ページ目を表示するには

  1. 10,000件から検索条件に合った500件を抽出
  2. 指定された順に並び替え
  3. 1行目から50行目を表示

2ページ目を表示するには

  1. 10,000件から検索条件に合った500件を抽出
  2. 指定された順に並び替え
  3. 51行目から100行目を表示

3ページ目を表示するには

  1. 10,000件から検索条件に合った500件を抽出
    - 以下略 -

データベース大忙しです。実際、ページネーションが原因でデータベースサーバがパンクすることがあります。

2-2.制作コスト

ページネーションを実現する部品群が用意されていて、組み込むだけっちゃ組み込むだけなんですが、それでも全部の画面に組み込むとなると面倒くさい。

負荷対策で(サーバがパンクしないように)検索方法を工夫したり、検索〜並び替え結果を一時保存したりするとメッチャ面倒くさい。

それだけ面倒をかけて得られるものが50行×10シートに分割された表ですよ。辛いですね。人生って。

3.じゃあなんでページネーションするの?

マシン側の都合です(でした)。

Windows95とか98とかの時代、回線がものすごく遅かったんですよ。モデムだと9.6〜28.8Kbps(メガじゃないよキロだよ)ISDNで64Kbpsでした。LANでも10Mbps。(スイッチングHubじゃなかったから混むと1Mbps切ることも多々)

回線が遅いからちょっとした一覧表をダウンロードするのも、Webサーバへ長時間接続するのでコネクション(電話回線みたいなもの)がすぐ足りなくなりました。で、CPUにまだ余裕があってもコネクション不足でエラー。

しかも、CSSなんて使ってなかったからHTMLタグがたくさんでデータが3倍くらいに膨れ上がって状況をさらに悪化させていたし。

しょうがないから25行(1画面)くらいでぶつ切りにしてダウンロード時間を短くなるように工夫したのがページネーションの始まり。「細かく区切って見やすく」てのは開発現場で言ってる人はいなかった。と記憶してます。

量が少なくなったのを「よりおいしくリニューアル」って言ってるみたいなもんです。

4.ページネーションをやめてどうしたのか?

一覧画面ごとに上限数を設定できるようにしました。

200行くらいにで本番リリースして、お客さんに自分で調整してもらうようにしています。画面によっては2000行とかなってます。大量の検索結果とページ内検索を併用して開発者が想像しなかったような使い方を発明してて面白いです。

そうそう、ページ内検索ですが意外と皆知らないんですよ。普段ホームページを見るときにページ内検索を使ってる人でも、Webアプリだと「ブラウザを使ってる」という意識が抜けるのか、ページ内検索を説明(再発見)すると喜びます。デスクトップアプリでページ内検索ってないもんね。

上限数を超えて表示できなくなった場合に対しては「検索結果が[設定行数]行に達した場合は未表示のデータがあります。」と注記してます。

とりあえずこれでお客さんから「やっぱりページネーションつけて」と言われたことはないです。50行×10シートより500行×1シートの方が見やすいし。

「ページネーションなんて飾りです。偉い人にはそれがわからんのですよ」