34

九州産業大学情報科学会誌

4 巻 1 号（ 2005 年 9 月）¨¥
§紹 介 ¦

研究室分け希望調査支援 Web システム
成 凱

Kai CHENG

九州産業大学 情報科学部 社会情報システム学科
Department of Social Information Systems, Faculty of Information Sciencechengk@is.kyusan-u.ac.jp, http://www.is.kyusan-u.ac.jp/~chengk/

仲 隆

Takashi NAKA

九州産業大学 情報科学部 知能情報学科
Department of Intelligent Informatics, Faculty of Information Science

naka@is.kyusan-u.ac.jp, http://www.is.kyusan-u.ac.jp/~naka/

宮崎 明雄

Akio MIYAZAKI

九州産業大学 情報科学部 社会情報システム学科
Department of Social Information Systems, Faculty of Information Science

miyazaki@is.kyusan-u.ac.jp, http://www.is.kyusan-u.ac.jp/~miyazaki/

1. は じ め に
情報科学部で３年後期に開講される社会情報システム学演習・知能情報学演習では，学生をそれぞれの研究室に分属させ，各教員が提示するテーマについて調査，分析，討論，実装等を行い，社会情報システム学・知能情報学の各分野の最新発展とそれまでの学習との関連を理解させることを目的としている。このため夏休み前に３年次生全員を対象に研究室配属の希望調査を行うことになっている。演習の研究室は原則として卒業研究のクラスとなるので，この調査は卒業研究のクラス分けも兼ねている。本人の希望と修学状況のバランスをうまく取るため，調査は二つの段階に分けて実施することになっている。

• 第１回調査 学生は希望する研究室を一つ選ぶ。第図 1 研究室分け希望調査支援システムログ イン画面

１回調査終了後，次のように配属を決定する。定員以内の研究室への希望者は希望ど おりに配属を決定

いて開発したもので，調査結果の集計から，第 1 回，第する。定員を越えている研究室に対しては定員の６2 回の配属決定まで，ほぼすべての手順を自動で行うこ割を成績で決める。とができる。また，関連情報をデータベースで管理して• 第２回調査 配属未定の学生は定員に満たない研究いるため，関連情報を容易に検索することができ，利便室に対して希望順位を付ける。第２回調査終了後，各性を大幅に向上している。このシステムは平成１６年度

研究室の第 1 希望，第２希望，· · · に対し順次配属をに開発した最初のバージョンを経て今年は二回目の利用決めていく。ただし，希望者が残り定員を超えていとなった。システム導入によって，200 人前後の本調査る研究室については乱数を振ってきめる。

参加者に対して，配属案を数分間〜数十分間で作成し配

このような調査を紙ベースで実施すると，調査書を書く属結果を公開することができる。本稿では，このシステ時点の希望状況を把握できないし，調査結果の集計などムの設計から，開発，運用までの「裏話」について述べにも大変手間がかかる。一般のオンライン・アンケート・る。さらに，これからのシステム拡張の計画について検システムを使うとしても，上記のようなより複雑な決定討する。

プロセスを支援する機能を備えていないため，希望状況の集計から配属案の作成まで時間がかかり，人的なミス2. シ ス テ ム 概 要も完全に避けることができない。
そこで，我々は Web とデータベース技術を用いて，研利用者は 図 1 のようなログ イン画面でログ インする究室分け希望調査を支援するための Web システム（ LAS：と，調査段階と利用者権限によって異なる機能を利用す

Laboratory Allocation Support System ）を導入するこることができる。利用者権限は学生，教員，管理者によとを試みた。このシステムは上記の配属調査手順に基づり分けている。このシステムは主に次のような機能を提研究室分け希望調査支援 Web システム

35
1

供している。

(1) 配属希望の提出と確認
研究室の一覧から希望する研究室を選ぶ機能。自分の希望している研究室を確認する機能。第 1 回調査1Mで学生のみ利用できる。

(2) 希望者数の確認

N

各研究室の配属定員と現時点の希望者数を確認する機能。第 1 回調査で全員（ 学生・教員・管理者）がNN

図 2 データベースの実体関連モデル利用できる。

(3) 成績順による配属決定
各研究室に対して，希望者数，定員，希望者の成績プル数は学生数と同じである。 決定属性はその希望が決に基づいて，第 1 回調査の配属案を自動的に生成す定されたかど うかを示す。決定された場合は値が「真」，る。第１回調査終了後管理者のみ利用できる。

そうでなければ値が「偽」となる。

(4) 研究室順位の指定

初期化の時，学生全員にダミーの希望データを作って各研究室に希望順位を付ける機能。第２回調査で配おく。調査開始後，学生の提出した希望に従い，該当学属未定の学生のみ利用できる。

生の希望研究室へ研究室番号を変更する。

(5) 希望順位毎の希望者数確認

第２回調査 (学籍番号，研究室番号，希望順位，決定)

各研究室の希望順位の希望者数を確認する機能。第第２回調査の希望状況を記録するリレーション。一つ

２回調査で全員（学生・教員・管理者）が利用できる。の学籍番号は N 個の研究室と対応するため，学生数が(6) 乱数順による配属決定
各希望順位の第 1 希望，第 2 希望，· · · に対し乱数をM とれば , タプル数は M × N となる。決定属性はその学生がそこの研究室に決定されたかど うかを示す。決定

振って配属案を自動的に生成する。第２回調査終了

された場合は値が「真」，そうでなければ値が「偽」と後管理者のみ利用できる。

なる。

(7) 進行状況

システム初期化の時にこのリレーションを空状態にし各段階の調査の進行状況 (本調査に参加した人数とておく。第 1 回調査終了後に配属未定の学生と，定員未未参加者の人数) を確認する機能。管理者のみ利用

満の研究室のそれぞれの番号を組み合わせて，ダミーのできる。

希望データ (希望順位 0) をこのリレーションに追加する。
第 2 回調査開始後，参加者がつけた希望順位に従い，そ

3. シ ス テ ム 設 計

れぞれの研究室の希望順位を変更する。第 1 回調査で研究室がすでに決定した学生には希望データを作らないた

3・1 データベーススキーマ設計
上記の機能を実現するために，学生の情報，研究室の情報，配属希望情報等，多くのデータをデータベースとしめ，順位付けの操作を実行できない。このような仕組みで不正利用を防ぐことができる。
研究室配属 (学籍番号，研究室番号)て管理する必要がある。本システムで使われているデー

最終の研究室配属案を保存するためのリレーション 。

タベーススキーマは以下のリレーションスキーマからなっ第１回調査の決定者 (決定属性「真」) と第２回調査の決ている。

定者 (決定属性「真」) をまとめた結果である。

学生 (学籍番号，氏名，成績順位)
学籍番号と氏名のほか，成績の順位も入っている。成3・2 各種機能の実現

績順位は１位からの整数で表わす。システムを初期化す

デ ータベースを用いた Web アプ リケーションでは，るときに教務課より学生の名簿と成績データをもらいこ

データベースから正しい問合せ結果を受ければ，それをのリレーションに追加する。

分かりやすく表示するだけで，ほとんどの機能を実現で研究室 (研究室番号，研究室名，専門分野, 定員)きる。

研究室番号，研究室名，専門分野，その研究室への配属定員を記録する。研究室の情報を初期化するとき，教1) 研究室の定員と希望者数の一覧
第 1 回調査の希望状況を確認するために，第１回調査

務委員が再履修者などを考慮して各研究室の定員を決めリレーションよりそれぞれの研究室への希望者数を計算る。それに従って，このリレーションの定員属性を調整する。しかし，希望者がいない研究室番号は第１回調査する。に現れないため，「 希望者なし 」という状況を特別に計算

第１回調査 (学籍番号，研究室番号，決定)
第１回調査の希望状況を蓄えるリレーション。ひとつの学籍番号が最大一つの研究室番号と対応するため，タする必要がある。以下の SQL 文では，希望者なしの研究室と希望者一人以上の研究室を和集合（ UNION ）で合わせている。

36

九州産業大学情報科学会誌

4 巻 1 号（ 2005 年 9 月）

図 4 乱数順の配属決定案

図 3 成績順の配属決定案

への希望順 R の希望者の情報を調べる。問合せ結果を乱数順にソート (ORDER BY 乱数) するため，問合せ結果順番が毎回異なる（ 図 4 ）。

SELECT 研究室名, 定員, COUNT(*) AS 希望者数
FROM 研究室 NATURAL JOIN 第１回調査
GROUP BY 研究室名, 定員
UNION
SELECT 研究室名, 定員, 0 AS 希望者数
FROM 研究室
WHERE 研究室番号 NOT IN(SELECT 研究室番号 FROM 第１回調査)
文節「 GROUP BY 研究室名, 定員」により各研究室の希望者をグループ化する。各グループのタプル数 (希望者の人数) を「 COUNT(*) 」で集計する。副問合せ「研究室番号 NOT IN (SELECT 研究室番号 FROM 第１回調査) 」は第 1 回調査に現れていない研究室番号である

最後に，問合せ結果に基づいて配属案を作る。希望者数

かど うかを確認するものである。

n ≤ 残り定員 p の場合は希望者全員をそこの研究室に決2) 成績順による配属決定
第 1 回調査で研究室 L に希望者の配属を決定する。まず，データベースから研究室の定員 P と希望者数 n を調べておく。次に，以下の SQL 文で研究室 L への希望者定する。もし，希望者数が残り定員を超えているなら，定を抽出し成績順に整列しておく。

SELECT 学籍番号, 氏名
FROM 学生 NATURAL JOIN 第１回調査
WHERE 研究室番号=’L’
ORDER BY 成績順位
最後に配属決定を行う。定員を超えていない研究室に，希望者全員を希望ど おりに決定する。定員を超えている研究室には，成績順で定員の６割を決める（図 3 ）。この作
業はシステムが自動的に行うことができるが，現段階では，念のため，管理者が一度確認し，「 決定」ボタンを押すまで，決定しないようにしている。

3) 乱数順による配属決定
研究室 L に対して希望順 R の希望者を決めるとする。
まず，各研究室の残り定員 (p) と希望順 R の希望者数 (n)を調べておく。次に，以下の SQL 文を使って，研究室 L

SELECT 学籍番号, 氏名, random() as 乱数
FROM 学生 NATURAL JOIN 第２回調査
WHERE 研究室番号=’L’ AND 希望順位=RAND 学籍番号 NOT IN(SELECT 学籍番号
FROM 第２回調査
WHERE 決定=TRUE)ORDER BY 乱数

員になるまで乱数順で並んでいる希望者を順次決定していく。

4) 希望順位毎の希望者数確認
各研究室の希望順位毎の希望者数を調べるために，まず，第 2 回調査に参加する研究室の数 m を調べておく。
次に，以下の問い合わせにより，各々の研究室の各希望順位以下の希望者数を検索し，研究室毎の情報を希望順に並べる。

SELECT 研究室名, 希望順位,COUNT(*)
FROM 研究室 NATURAL JOIN 第２回調査
GROUP BY 研究室名
ORDER BY 研究室名, 希望順位;
最後に，希望状況をまとめて表示する。各研究室には，1〜m の全ての順位に希望者がいるわけではないので，希望者のない順番に 0 とする。ゼロが連続して出現する可能性もある。

研究室分け希望調査支援 Web システム

include_once("lib_inc.php");$misc->printHeader();$misc->printBody();374) SQL 文の生成
PHP の変数を含んだ SQL 文を作る。例えば，$query= ”SELECT 研究室名, 専門分野, 定員 FROM 研究室番号=’$t lbid’”. 入力画面から受け取った研究室番号($t lbid) を使った問合せを実行すると，指定した研究室の情報を調べることができる。

5) SQL 文の実行
SQL 文をサーバーに送りサーバー上で実行させる。戻っ$misc->printFooter();てきたステータス情報から実行が成功したかを確認する。
問合せが成功すれば，戻ってきたデータを受け取り処理

図 5 機能モジュールの一般構造

4. システムの実装と運用する。

4・2 システムの運用
このシステムは昨年度開発してから二度運用した実績

4・1 システムの実装
このシステムは PHP というスクリプト言語を使ってがある。これまでは特に大きなトラブルがなかった。登録ミス等によるトラブルに備えるために，今年からより実装されている。PHP は HTML 文書のどこでも埋め込詳しいアクセスログをとることにした。アクセスログにむことができるので，Web ページの動的な部分と静的なは，セッションログと登録ログの二種類がる。

部分を自由に組み合わせることができる。全ての機能は• セッションログ： 利用者がログ インしてからログ

図 5 に示すように共通の処理と独自の処理からなる。共アウトまでに行った全ての操作を記録する。利用者

通部分は次のような処理を行う。

• include once(”lib inc.php”): 利用者認証，利用者権限の特定，希望調査段階の特定，セッション管理

ID だけでなく，IP アドレス，ホスト名，時刻なども記録してある。調査実施の 1ヶ月間に 74,088 の記録が残っている。

を含む共通のモジュール lib inc.php をインクルー• 登録ログ： 学生利用者が第 1 回〜第 2 回調査の期間ド する。各機能を利用するたびにこのようなチェッ中に登録した研究室希望を全て登録している。１ヶクを行うため，調査段階の自動切換え，利用者権限月間に 1,803 回の登録が記録されている。学生別にの確認を実現することができる。

登録変更が一番多いのは 344 回もあるのに対し ，1• printHeader: HTML 文書のヘッダー部分を出力する。Javascript も文字列の引数として渡すことができる。スタイルシートの指定もできる。

• printBody: HTML 文書のボデ ィタグを出力する。
このタグに続いて独自の処理と出力を行う。

• printFooter: HTML 文書の終了部分のタグを出力する。
各機能がそれぞれ独自の処理を行うが，データベースを利用した Web アプ リケーションは一般に以下の処理の組み合わせにすきない。

1) 入力画面の生成度しか登録していない学生も 40 人で全体の 21%をしめている。
今年度は下記のスケジュールで研究室分けを実施した。

• 6 月 30 日 研究室分け説明会• 7 月 15 日 第 1 回調査締切日• 7 月 16 日 第 1 回調査結果の発表• 7 月 22 日 第 2 回調査締切日• 7 月 27 日 拡大教授会で研究室配属案の審議・了承• 7 月 28 日 研究室配属結果の発表
図 6 に示しているのは調査期間中の 1 日当たりのシステムへのアクセス数の推移である。ピークとなったのは，フォームタグを使って利用者から入力を受ける画面を6 月 30 日調査開始日と 7 月 15 日第 1 回調査の締切日で作る。入力データをサーバーに送り，サーバーはそれをある。第 2 回調査は 7 月 22 日の締切であるが，参加者受け取って処理する。

が一部に限られているため，アクセスの絶対数は多くな

2 ) 出力画面の生成かった。締切直前に登録する傾向が強いことが分かる。

問合せ結果などを表形式で出力する。問合せ結果はタ最後の登録状況を見ないとより正しく判断できないため，プルの集合に過ぎないため，分かりやすい形式で出力す直前に登録するのはやむを得ないのではないかと考えらる必要がある。

れる。

3) 外部からデータの受け取り
入力画面や URL からのデータや引数を受け取り，PHPの変数に保存しておく。例えば，$t lbid=$ POST[’lbid’]
POST メソッド で送ってくる研究室番号 lbid を受け取って変数 $t lbid に保存する。

5. まとめと将来の計画
本稿では，学部 3 年次生研究室配属希望調査 Web システムの設計・開発・運用について紹介した。Web アプ38

九州産業大学情報科学会誌

図 6 調査期間中システムの利用状況

リケーションは基本的にネットワークを介して実行する
ため，クライアント・サーバー，HTTP メソッド，セッションなどの概念を理解しないと開発できない。今回紹介したこのシステムは小規模で構造はあまり複雑ではなかったが，これを通してデータベースを利用した Web ア
プリケーション開発の手続きを少しでも理解していただ
ければと思う。
将来の計画として，配属決定を支援するためのシミュレーション機能を開発していきたい。また，できる限り，教務総合支援システムなど ，教務関係のほかのシステムとの連携を実現していきたい。

4 巻 1 号（ 2005 年 9 月）