筑波大学技術報告
25: 30-33, 2005

Web 登録システム「卒業研究テーマ申請受付」
澤村博道1
筑波大学システム情報工学等支援室（情報アプリケーション班2）〒305-8573 茨城県つくば市天王台 1-1-1

ことができ、データの改ざん、なりすましを防ぐことができる。

概要
情報学類業務電子化の一環として、情報学類学務委員会では、平成１４年度より卒業研究に関する業務を Web 登録システムで行っている。これらは「卒業研究テーマ申請受付」、「次年度卒研配属」、「卒業研究処理」の３つのシステムから構成される。
本発表では、筆者が作成した「卒業研究テーマ申請受付」システムについて、認証サーバアクセス方式による Web 登録の仕組み、受付ページのデータ登録・検索・更新の方法など、サンプルを示し解説する。また、今年度作り直した php スクリプト+データベース(MySQL)連携処理について、実際にシステムにアクセスし、デモを交えながら紹介する。

図 1 Web 登録システム

2.1 認証サーバ

１．はじめにWeb 登録システムの第一ステップとして行われる「卒業研究テーマ申請受付」（３年次対象）は、教員から次年度担当予定の卒業研究テーマ申請を受付するシステムである。第二ステップの「次年度卒研配属」（３年次対象）とは、学生が「卒業研究テーマ申請受付」結果から、希望する研究テーマの登録、その志望状況の確認・変更、そして最終的な決定までを行うシステムである。そして、第三ステップの「卒業研究処理」（４年次対象）は、卒業論文データの登録、発表会プログラムの作成、pdf による卒業論文の公開までを管理するシステムである。
第二・第三ステップの「次年度卒研配属」及び「卒業研究処理」システムは平成１４年度に学務委員の先生が作成され運用されていたが、平成１６年度から、これらの運用も担当することになった。

認証サーバ www3 にアクセスするには、web のブラウザから URL(https://www3.coins.tsukuba.ac.jp/...)を入力し、学類計算機にログインするための ID(ユーザ名)、パスワードを入力する。（図 2）２．Web 登録システム

認証サーバ www3 へのアクセスが許可されると、「卒業研究テーマ申請受付ホーム」ページが表示される。受付処理（検索・登録・更新）の際には、IDチェック(idcheck)が行われ、教員のみ受付処理が可能となる。受付処理のデータはデータベースに連携し、読み込み・書き込みが行われる。
ただし、更新処理においては、その教員が本人かどうかの ID チェック(idcheck2)が行なわれ、本人以外にデータの更新・削除はできない。（図 3）
この ID チェック処理は、入力された ID（ユーザ名）について名簿ファイル（許可 ID と申請者名の対応表）を参照し、該当する ID の場合に許可フラグを返すものである。

図 2 認証プロンプト表示

2.2 受付システム概要

Web 登録システムは、情報学類計算機システムのアカウント(ID)を取得している情報学類生、情報学類教員、関連技術職員・事務職員のみがアクセスできる情報学類計算機システムの認証サーバ www3 を利用して行う。また、ID チェックは www3 へのアクセス時及び各登録システムアクセス時に行なわれ運用されている。なお、www3 は、SSL(Secure Socket Layer)サーバ証明書の認証を受けている。（図 1）
SSL サーバ証明書は、web サーバプログラム Apacheにモジュールとして組み込まれている SSL を利用することにより、認証局（電子的な身分証明書を発行する機関）からデジタル証明書（デジタル署名解析用の公開鍵が真正であることを証明するデータ）を発行してもらうことで、データの出所を確実にする
1
2

E-mail: sawamu@sie.tsukuba.ac.jp
http://www.sie.tsukuba.ac.jp/GIJYUTU/

30

3.2 新規登録
処理選択表示画面から、■新規登録を選びクリックする。（図 5）

図 5 処理選択表示
ID チェックが行われ、許可された ID（教員）に対して、登録フォームが表示される。フォームに従ってデータを入力し、申請者を選び、登録ボタンをクリックする。（図 6）

図 3 受付システム概要

３．受付処理

この例では、分野：ソフトウェア科学
申請者：澤村博道

3.1 受付ホーム
テーマ申請受付ホームページから、■平成 17 年度
卒業研究テーマ申請受付をクリックして進む。
（図 4）

図 6 新規登録表示

図 4 受付ホーム表示

31

3.3 検索登録が完了したら登録確認のため、処理選択表示の画面（図 5）に戻り、■検索・更新を選びクリックする。検索・更新入力の画面が表示されたら検索キーを入力し検索ボタンをクリックする。（図 7）
この例では、担当教員：澤村と入力。

図 7 検索・更新入力表示

図 9 更新入力の表示

検索結果が表示される。（図 8）４．データベース連携
使用するデータベース(DB)は MySQL であり、DBを操作する言語は PHP(PHP:Hypertext Preprocessor)である。PHP は、サーバ上で動作する HTML への埋め込み型スクリプト言語で、このような MySQL と PHPに よ る シ ス テ ム 構 成 は LAMP(Linux + Apache +MySQL + PHP)と呼ばれ、近年、web+DB システム構
築に広く使われている。
以下、本システムでの DB 連携の手順を示す。

4.1 DB(テーブル)の作成
DB 名 student（既設の情報学類用 DB）に新たにカラム名、データ型を指定しテーブル名 sotuken を作成
後、テーブルへのアクセス許可を設定する。
4.1.1 定義
www3 上で mysql を起動し、以下のようなカラム名とデータ型を定義し sotuken テーブルを作成する。
図 8 検索結果表示

3.4 更新検索の結果、登録内容に変更がある場合は、検索・更新入力画面（図 7）に戻り、申請者を選び更新ボタンをクリックする。
更新入力の画面が表示されたら登録内容の更新を行う。更新を行う場合は更新ボタン、削除を行う場
合は削除ボタンを選びクリックする。（図 9）
なお、ここでは、申請者本人しか更新ができないよう ID チェック(idcheck2)を行っている。

32

mysql> create table sotuken(-> id int not null auto_increment,-> bunya varchar(20) not null,-> url varchar(120) not null,-> thema blob,-> tantou varchar(70) not null,-> gaiyo1 blob,-> ninzu varchar(10) not null,-> sname varchar(20) not null,-> number int not null,-> primary key(id)-> );作成した sotuken テーブルの属性を図 10 に示す。

exit;}// DB から切断
mysql_close($con);// メッセージ出力
echo "登録完了";?>

4.3 データのファイル出力
卒業研究申請受付が終了し、最終データが確定したら、DB(student.sotuken)テーブルに格納されているデータを第二ステップ「次年度卒研配属」に引き渡すため、テキスト形式のファイルで出力する。フィールドの区切りはタブとし、出力ファイル名（ここでは 2005-SOTSUKEN-THEME.txt）を指定する。
mysql> use student;
mysql> select * from sotuken into outfile->"2005-SOTSUKEN-THEME.txt" fields terminated->by "¥t";

図 10 sotuken テーブルの属性

５.

4.1.2 アクセス許可の設定

前システムとの違い

昨年度までは CGI/perl スクリプトによるシステムで行っていた。このシステムは、入力したデータを登録するだけで、登録したデータをリアルタイムに更新することができなかった。また、CGI という仕組みは、web サーバからの外部呼出しで独立して動くため、処理速度の高速化、サーバ負荷の低減、データベース化を図るには限度があった。今回のLAMP によるシステム構築で、これらの問題を大幅に解消できたと考える。また、本システムは、以前
PostgreSQL にて構築した情報学類用データベース3をMySQL で構築し直し、その DB にテーブルを追加する形で作成したが、PostgreSQL に比べ高速で扱いやすく、短時間で作ることができた。

作成した sotuken テーブルに対してアクセス許可を設定する。
mysql>glant select,insert,delete,update on-> student.sotuken to sawamu@localhost-> identified by '****';

4.2 DB(テーブル)との接続作成した DB(student.sotuken)テーブルにデータを受け渡す。以下はデータベースとの接続スクリプト(登録処理)の一部である。
<?
// DB に接続
if(!$con=mysql_connect("localhost","sawamu","****")){echo"接続失敗";exit;}// DB を選択
if(!mysql_select_db("student",$con)){echo"データベース選択失敗";exit;}// フォームで送られてきたデータで INSERT 文を作成
$sql= "insert into
sotuken(bunya,url,thema,tantou,gaiyo1,ninzu,sname,number)values(¥"$bunya¥",¥"$url¥",¥"$thema¥",¥"$tantou¥",¥"$gaiyo1¥",¥"$ninzu¥",¥"$sname¥",¥"$number¥")";// SQL を実行
if(!$res=mysql_query($sql)){
echo "SQL 実行時エラー";

６.

おわりに

例年、卒業研究テーマは、テーマ名・概要・担当者に多少の変更はあるが、ほぼ同じような内容のテーマが多い。今回、これらのデータをデータベース化したことで、次年度の受付業務が容易にできると思われる。

謝辞
本システム作成にあたり、ご助言頂いた情報学類学務委員の亀山幸義先生、富安洋史先生に深く感謝致します。

参考文献[1] 「MySQL 徹底攻略ガイド」技術評論社[2] 「標準 MySQL」ソフトバンク[3] 「PHP4 徹底攻略改訂版」ソフトバンク[4] URL:http://www.php.gr.jp/ 日本 PHP ユーザ会
[5] URL:http://www.mysql.gr.jp/ 日本 MySQL ユーザ会

3 http://www.tech.tsukuba.ac.jp/report/tsukuba-tech-report-no21.pdf 澤村博道.PostgreSQL によるデータベースの構築

33