次期 HCL の仕様
Working draft 5 September 2002
もくじ
はじめに
この文書は Momonga Project に措いて使用する予定である次期 HCL(仮称 MHCL) について,一応開発担当である私の私見,及び想定している (或は盛り込みたい) 仕様について述べたいと思う.
あくまで想定している仕様であるため,ここに言及されている通りになるということではなく,広く意見を募り,採り入れ,より良いモノへ昇華させたいと考えている.
ユーザインターフェース
ウェブサイトでの公開が前提にあるため,UI にはウェブインターフェースを用いる.ただし,ある機能に於てその機能を満たす他の代替手段をとり得る場合はこの限りではない.
機能
機能とその動作推移を例として挙げる.例は,一般ユーザが利用するHCLである.(管理用のモノはこれに『編集』,『削除』などのモードが加わる)
また,これに付随して画面推移に応じたナビゲーションの生成,エラー処理等の機能があるが,この図は大まかな流れだけを示したものである為,省略している.
ページへアクセス.
-
DBへ接続.
-
登録されている件数をDBへ問い合わせ,登録があるかどうかにより分岐.
-
要求動作により分岐
- ページ生成
- ページ表示
- 終了
データ管理
データの管理には PostgreSQL 等の RDBMS を用いる.ただし,他により扱いやすいデータ形式が利用可能な場合はその限りではない.
テーブル定義
以下に管理するデータとそのデータ型,及びその概要を示す.データ型は PostgreSQL でのデータ型を参考にしているため,他のRDBMSを用いる場合は,それぞれそのRDBMSで採用されているデータ型へ割り当てて考えて戴きたい.(例: text → varchar)
HCL本体
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
num | integer | 管理番号 |
code | integer | カテゴリコード |
vender | text | ベンダー名 |
device | text | ハードウェア名 |
rev | text | ハードウェアのrevision |
chipset | text | ハードウェアに搭載されているチップセット名 |
osdist | text | OSのディストリビューション名 |
osver | integer | OSのバージョン |
kernel | text | Kernelのバージョン リリース番号 |
module | text | モジュール名 |
note | text | 備考,Tipsなど |
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
num | integer | 管理番号 |
code | integer | カテゴリコード |
vender | text | ベンダー名 |
device | text | ハードウェア名 |
rev | text | ハードウェアリヴィジョン |
chipset | text | ハードウェアに搭載されているチップセット名 |
osdist | text | OSのディストリビューション名 |
osver | integer | OSのバージョン |
kernel | text | Kernelのバージョン/リリース |
xver | text | XFree86のバージョン/リリース |
driver | text | X4.xのドライバ名 |
server | text | X3.xのサーバー名 |
note | text | 備考,Tipsなど |
補助
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
code | integer(或は varchar) | カテゴリコード |
category | text | ハードウェア カテゴリ名 |
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
id | serial | 管理用固有ID |
vendid | integer | ベンダーID |
subvendid | interger | サブベンダーID |
code | integer | カテゴリコード |
device | text | デバイス名 |
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
vendid | serial | ベンダーID |
vender | text | ベンダー名 |
登録者情報
フィールド名 | データ型 | 概要説明 |
---|---|---|
フィールド名 | データ型 | 概要説明 |
num | interger | ハードウェアのテーブルの管理番号 |
posttime | timestamp | 登録日時 |
username | text | 登録者名 |
text | 登録者の Email address | |
ipaddress | inet | 登録者の REMOTE_ADDR |
開発言語
私がPHPに馴染んでいる事,ウェブインターフェースのプログラムを作成しやすい事,RDBMSとの連携がとりやすいこと等を理由に,PHP4 (特に 4.2.x以上のバージョン) を採用したいと考えている.
しかし,HCLの開発を最初から最後まで面倒みると申し出る人が居るのであれば,その人が精通している開発言語を採用することに異論はない.
プログラミングスタイルについてだが,使い回せる箇所,何度も呼び出して利用するような箇所は,極力,クラス,或はユーザ定義関数として定義し,見通しの良いスタイルにしたいと考えている.
生成させるHTML
-
生成させるHTMLについては,文書型をXHTML1.1とし,且つ妥当な文書であることを要求する.(妥当な文書を生成することは,敢えて言及しなくてもあたりまえのことではあるが……)
単に妥当 (Validatorチェックでエラーが無いとかAnother HTML-lintで100点とか)というだけでなく,アクセシビリティを考慮した文書を生成するよう心掛けたい.
文書の体裁付けにはCSSを用いる.CSSをサポートしていないUAや不完全なサポートのUAでの体裁は,そのUA依存とし,それらで味気ない見た目であろうが知ったことではない.
上記2に関連する事項だが,ページレイアウトの為にtable要素を用いない.(表を table要素として書き出すことに問題が無いことは言うまでもない)
-
同じく上記2に関連する事項だが,体裁のためだけにclass付けを行わない.
<strong class="red">赤い文字</strong>
<td class="right">右寄せ</p>
などとするのは妥当でないとする.
もちろん,論理的に意味のある語句,文章に class 或は id付けを行なうのは問題ない.
JavaScript,Cookieなどのクライアントに依存した技術は用いない.それらが未サポートのUAであっても使えることを要求する.
これも敢えて書く必要が無いことではあるが,XSS脆弱性を発生させないように,サニタイジング,変数の受け渡しには注意を払う.