MVCモデルにおけるページャー(pager)

ここで話すページャー(pager)とは、WEBサイトでよく見られる、「前のページ」,2,3,「次のページ」のような、長いページを分割して、それらのページをナビゲーションする機能のことです。PHPやJavaなどで、MVCモデルを採用した場合、ページャーをどのように作成するか悩むものです。

ページャーはViewに記述しなくて良い

MVCモデルのView(ビュー)とは、要するに画面を表示をつかさどる部分です。「前のページ」などの文や、見栄えの設定などは本来Viewの仕事になりますので、MVCモデルの観点からはViewに記述した方が、MVCモデルを遵守したことになります。

ただ、MVCモデルを採用する理由は、基本的には開発時の混乱の防止や、保守性を高めるためです。しかし、ページャーをそれぞれのViewのファイルに記述することによって、保守性が極端に低下してしまいます。ページ毎に詳細な設定は行いやすくなりますが、一貫性のレイアウトを維持する場合は冗長が多く、無駄が多く保守性が悪くなってしまいます。

MVCモデルを採用しているフレームワークでは、たいていプラグインなどの枠が別途用意されていると思いますが、もしこれが無い場合は、基本的にはControllerにページャーを記述しましょう(もちろん、データの取得はModelから)。Viewでは、ページャーを任意の位置に呼び出すようにして使いましょう

ページャーはプラグインとして

ページャーを自作する場合は、プラグインとして設置することを想定して作成しましょう。ページャーは基本的には、そのWEBアプリケーション毎に自作するのではなく、一度自作したものを使いまわすようにしたほうが、コストを抑えることができます。そのため、ページャーのプラグインには、レイアウトを変更できるように、ある程度柔軟に設計した方が望ましいでしょう。ページャーの使い方は、ほぼどのようなWEBアプリケーションでも共通しているので、その都度作成するのは、あまり効率が良いとは言えません。

再利用性よりも早く開発したい方は、一度既に使えるページャーがあるかどうか確認してみてください。PHPではPearに含まれていますし、perlにはpeagerという有名なライブラリがあるそうです。また、現在使用しているフレームワークにページャーが備わっているかもしれませんし、過去の自社開発に既にページャーがあるかもしれません。