HTML Binder プログラムの設計方針を記します。設計あるいは実装において、「複数の選択肢の中で、どの方法が良いのか」という選択を下す必要があるとき、この方針に沿って決定します。結果的に、システムの骨格がこの方針に沿って作られることになります。
- 複数のプラットフォームで稼働
- 利用者の階層化と権限の分割
- ビジネスロジックとプレゼンテーションを二層化
- 複雑さの排除
- 改良の容易さ
- アプリケーションプラットフォームとしての利用
HTML Binder では、ウェブページに掲載される個々のトピックを「記事」と呼びます。記事を投稿し、編集し、公開することで、ウェブページに表示することができます。記事に対するこれらの操作は、「権限」を付与された「利用者」のみが可能となります。投稿権限を持つ利用者は、記事を投稿できます。記事の投稿者は、自分の投稿した記事を編集できます。編集権限を持つ利用者は、他者の記事を編集できます。そして、公開権限を持つ利用者が、記事をウェブページに表示させることができます。また、各利用者権限は、管理権限を持つ利用者のみが設定できます。
管理権限を持つ利用者は、「分類」の登録もできます。分類こそが記事を束ねるバインダーです。ウェブページの閲覧は、記事単体でも行えますが、通常、分類単位で行います。この場合、指定された分類で束ねられた記事を見ることができます。ウェブページでは、分類の一覧がそのままメニューとなり、ナビゲーションの機能を果たします。
分類は、ルート分類を頂点として階層化された構造を持ちます。そのため、上位分類は下位分類を包括することになります。権限の付与は分類単位で行いますので、ルート分類の管理権限を持つ利用者を起点として、権限の分散・委譲が行えます。また、ルート分類の管理権限を持つ利用者は、ウェブページのレイアウトを定義する「テンプレート」を編集することができます。
上の記述中にある「ウェブページ」は、一般閲覧者が目にするページのことです。入り口は index.php となります。利用者登録や記事に関する投稿、公開等の機能の利用は、利用者専用のページから行います。別の入り口となります。
開発コード名を HTML Binder としたのは、複数のウェブページを束ねて保管・閲覧するという発想からです。アプリケーションプログラムの開発には、具体的な形を持つ物のイメージが役に立ちます。ウェブページは HTML で記述するので、それを束ねる機能を持つバインダーを思い描いたわけです。
バインダーに綴じられる書類は、一枚ごとにページレイアウトがばらばらだと、読むのに骨が折れます。バインダー内のページレイアウトに一貫性があるほうが、読みやすいものになるでしょう。
綴じる度にバインダーは厚くなります。厚いバインダーをどーんと眼前に出されても読む気が失せます。適時、新しいバインダーを分冊として作っていくことになるでしょう。既存のバインダーを単純に分割する方法もありますが、既存のバインダーから特定の概念のページを抜き出して作るという手もあります。
バインダーごとに、閲覧できる人を制限することが必要になるかもしれません。複数のバインダーに、同一書類がコピーして綴じられると便利な場合もあるでしょう。このように、バインダーという具体的なイメージから、ソフトウェアが持つべき機能をいろいろと発想することができます。