共用装置予約システムの作成

千代谷一幸
工学系技術支援室

情報通信技術系

概要
部局内の研修として“会議室の予約システム”を作成したことがあるが、参加者で分担して作成したこと、研修ということで時間的な制約もあったことから PHP を十分に理解したとはいえない。そこで、これから業務として会議室や装置などの予約システム作成の依頼があることも考えられたため、自己研鑽として“実験装置の予約システム”を完成させることを目標として PHP プログラミングの学習とスタイルシートの学習を継続して行ってきた。
今回この予約システムの作成中に、“所有する分析装置のための共用装置予約システムを作成してほしい”との依頼があり、ここで作成していたものを元に完成させることができた。

1

PHP プログラミング

現在、PHP でもオブジェクト指向プログラミングを行うことができるようになっている。この研鑽ではまず「オブジェクト指向」の学習からはじめたが、C や FORTRAN77 で使っていたサブルーチンや関数とどこが違うのか、そもそもどうして「物」として扱うのか。頭の切り替えに随分と時間を要した。このシステム
では「日付」と「データ」に利用した。
当初 PHP による WEB プログラミングには Smarty を利用することも考えたが、できるだけ PHP を理解するということで Smarty を使用せず、後のバグフィックスや仕様変更などに備えてプログラムを見やすくするために、画面の表示部分とデータベースへの書込み・読込みなど表示以外の部分を分けて作成した。
1.1

オブジェクト指向プログラミング

オブジェクト指向プログラミングでは処理の対象を物（オブジェクト）として扱い、その中で関連する処理やデータを管理する。作成する予約システムでは PostgreSQL を利用することにしていたので、まずは予約データを管理する機能をまとめた CLASS ファイルを作成することにした。予約が入ったときのデータベースへの登録や、ある期間内の予約データを日付順にデータベースから読み出して表示できるようにすること、また、使用する装置なども追加できるように作成した。そして、予約表示画面で使用するために祝日かどうかをチェックするなど日付に関するものも作成した。
1.2

アプリケーションの構成

以前作成したアプリケーションでは、画面表示からデータベースへのアクセスまで一つのファイルに書いたため、読みづらくてバグフィックスや仕様変更が大変だった。そこで今回作成するファイルは図 1 のように分割して各々のサイズを小さくし、そこにコメント行を入れることでなるべく読みやすくバグフィックスや仕様変更がしやすいように考慮した。

データの読み書きの部分

includeinclude

初期値など

メイン(データの読み書き、表示)

include図 1 プログラム構成

表示に関する部分

アプリケーションの構成としては、図 2 のように予約の表示・登録からシステム管理ができる部分まで作成した。当初ユーザ管理は

予約表示・登録用

メイン（予約表示）

システム管理者用
予約登録
メイン
予約削除

「使用者」ごとであったが、後の業務依頼で装置追加・削除
グループ追加・削除はグループ（研究室など）単位で管理することになった。

2CSS

CSS（カスケーディング・スタイルシート）
は文書の体裁に関わる指定を行うものである。

装置管理者用メイン（連絡事項表示）グループ管理者用
管理者変更
連絡事項登録メイン（担当者表示）担当者（代表）変更

図 2 アプリケーションの構成

しかし値を設定しても利用するブラウザによって表示に誤差が生じることがある。例えばボックスの幅の解釈の違いなどによる表示の乱れがある。そのため、ブラウザによって読み込むファイルを変えたり、エラーを起こさせて先を読み込ませないようにしたりして対応しているようである。このシステムではそ(a) スタイルシート有効(b) スタイルシート無効

図 3 装置選択ボタンのような表示の乱れが起きないように、あまり複雑な組み方をせず余裕を持たせて作成した。
図 3(a)は CSS の使用例の一つである装置を選択するためのボタンである。ul 要素と a 要素から CSS を使って装置選択ボタンにしている。よってブラウザでスタイルシートを無効にすると図 3 (b)のように表示される。

3

共用装置の予約システム作成していた予約システムを元に、依頼のあった“共用装置予約システム”を完成させた。
3.1

予約登録・確認

図 4 はトップページの予約状況の確認画面である。上部にサイトのロゴを入れ、その下を２分割し、左に装置選択ボタンと注意事項、右に予約状況を表示するテーブルを配置した。赤く塗られた部分は予約が入っていることを示している。
テーブルは 30 日間を表示し、１時間ごとに線で区切っている。利用予定日の日付（数字の部分）をクリックすることで予約登録画面が表示されるようになっている。

図 4 予約状況の確認画面

3.2

管理者用ページ

管理者用のページにおいて、利用者の登録・削除、装置の登録・削除、装置管理者による連絡事項の登録などができるようになっている。図 5 は装置管理用の画面の一つで、登録されている装置が表示される部分である。ここに登録された装置は予約状況の確認画面において装置選択ボタンに反映される。

図 5 登録されている装置の管理画面

4

終わりに自己研鑽ということで初めてオブジェクト指向プログラミングを試みた。また、できるだけコメントやスペースを入れて見やすくした。そのため、これまで作成してきた方法と比べて全体のプログラムのサイズは大きくなったようだが、バグフィックスがとても楽であった。また、見やすくなったことからバグの発生も少なくなったように感じる。それは、後に作成しはじめた“共用装置予約システム”において、使用者の認証方法が変わったにもかかわらず短期間で対応することができたことにもつながっていると思う。この“共用装置予約システム”は作成してからほぼ一年になるが、管理する装置も増え、現在は１７台の装置の予約に使われている。今までのところトラブルの報告もなく無事に稼動している。ただしオブジェクト指向プログラミングを十分に理解したとは言えず、現在も研鑽を続けている。
CSS については、PHP プログラミングの学習を重点的に行ってきたことと、業務依頼によって“共用装置予約システム”の作成を優先しなくてはならず“CSS を利用してみる”程度で終わってしまった。使用するブラウザごとに表示の違いがあるようだが、今回は Firefox と Internet Explorer の新しいバージョンでしか表示の確認を行っていない。しかし予約システムのような利用者が限られるものとは違い、一般に広く公開する WEB ページでは多様なブラウザへの対応が必要になる。よって、PHP とともに今後も CSS の研鑽を続けていくつもりである。

参考文献
[1]

豊崎直也, “はじめての PHP5 プログラミング基本編”, 秀和システム[2]

ワ イ ズ ノ ッ ト , “ は じ め て の PHP5 プ ロ グ ラ ミ ン グ

ISBN4-7980-0906-7

エ キ ス パ ー ト 編 ”, 秀 和 シ ス テ ム

ISBN4-7980-1318-8[3]大藤 幹, et al, “XHTML と CSS が Web デザインを変える”, Web Designing, 2004 年 5 月, P50 -77