就職情報システムの構築○相川勝1) 甲斐崇浩1) 山森一人2)
はじめに
現在、就職求人に関する情報サイトがインターネット上に数多く存在しており、学生が登録をすることにより求人企業への資料請求や最新情報の入手が容易に行うことができるようになってきた。また、
IT 技術の進歩によって PC 等も安価になり、ブロードバンド環境の普及も相まって就職活動のやり方も様変わりしつつある。このような環境の中で自分にとって必要な情報を迅速且つ効率的に収集することが就職活動にとって必要不可欠である。
宮崎大学においては、大学宛に届いた求人は学務部学生支援課が取りまとめて管理し、そのリストをWeb 上で公開している。一方、工学部（工学研究科）では、これまでに築き上げてきた企業との関係も強く各学科（専攻）宛に直接求人があることから、各学科（専攻）がそれぞれの方法で求人情報を管理・公開している。ほとんどの学科（専攻）では求人リストを Web 上で学科内または学内限定で公開している。しかし、これらの求人情報のほとんどが単なるリストデータであり、現在のさまざまな要求に対応することができない。例えば、学生がある項目をキーに求人データを検索したり、ある企業に卒業（修了）生がどのくらいいるのか、九州地区で就職実績のある企業はどこかなど、大学独自の情報に基づいた企業探求に応えられない。また、就職担当教員、事務職員は各種調査の際データの集計を手作業で行っており、大変な時間と労力を費やしている。
そこで、就職、進路に関わるすべての情報を統合的に管理し、学生のニーズに応える情報の提供、就職、進路指導に必要な情報の取得、各種調査集計業務の効率化を目的とし、宮崎大学工学部学生支援委員会と共同で就職情報システム（以下、本システム）の構築を行ったので報告する。
キーワード：Web アプリケーション PHP PostgreSQL
1. システム目標
本システムを設計、実装するにあたり次の点に関して特に留意した。
• 学生はより詳細な就職に関する情報を求めている。一方、就職指導・支援業務に携わる教職員（就職担当教員、事務職員）はかぎられており、その人数は少数である。そのような環境で、学生のニーズに最大限応えかつ就職担当教員（またはスタッフ）や事務職員が効率よく容易に情報の入力管理作業等を行えるようにする。そのためには就職関連情報の詳細度と入力管理作業のバランスを十分考慮する。
• 組織的な支援体制を構築するため、学生の進路希望や内定情報等を就職担当教員だけでなく他の教員もいつでも把握（参照）できるようにする。

1) 宮崎大学工学部教育研究支援技術センター2) 宮崎大学工学部情報システム工学科 助教授• 就職（進路）に関しさまざまな機関から調査、集計が要求されるが、それらの要求に対し効率よく容易に処理が行えるようなデータベース設計を行う。
• 本システムは当面工学部での運用を行う予定であるが、近い将来全学的な展開にも対応できるように拡張性を持たせた設計、実装を行う。
• 学生個人情報、内定（進路）情報等を取扱うため、セキュリティ確保に最大限努める。
2.システム概要
本システムは、Web ベースのシステムであり、学生は学内 LAN に接続されている端末上のブラウザを利用して求人情報等を検索閲覧する。
また、就職担当教員、事務職員等も同様にブラウザを利用して情報の入力管理作業を行う形態である（図 1）。
2.1 システム構成
サーバの OS には RedHat Linux9 を採用した。
Web アプリケーションシステムを構築する技術環境は多種存在するが、今回はサーバ・サイド・学生

学内 LAN

就職情報システム教職員

図 1 システム概要図

Readhat Linux

ApachePHP

PostgreSQL

2.2 MVC モデル・アーキテクチャの採用
MVC とは Model-View-Controller の頭文字をとったものである。PHP は、HTML 埋め込み型のサーバサイド・スクリプト言語であるため、プログラムファイルの中に HTML タグを記述することができる。これによって、簡単に動的なページを作成することが可能になるが、規模が大きくなるとプログラムの可視性が悪くなり、修正や追加等が難しくなる。そこでプレゼンテーション部分とロジック部分を分離して別々のファイルで管理する手法を取る。
これによって、可視性および再利用性を確保でき、さらに拡張性が飛躍的に向上する。
今回はこれらに加えて、処理フロー制御機能としてコントローラ部を実装する。1 機能につき１つのコントローラで構成し、各 FORM ページのパラメータに「アクション名」を設定し、コントローラはそれをアクションイベントキーとして処理を制御する。プ
レゼンテーション部は、「***.ihtml」、ロジック部は、「***.inc」、コントロール部は「index.php」というファイル構成とする。これらの具体的な関係を図 3 に示す。
コントローラindex.php

図 2 システム構成
action1OS
WWW Server

RedHat Linux9
Apache 1.3.29

ミドルウェアRDBMS

PHP-5.0.0
Postgresql-7.4.2

表 1 動作環境
プログラミングとして PHP を、リレーショナルデータベース管理システムとしてPostgreSQL を用いて構築を行った。システム構
成を図 2 に示す。
また、データベース処理、ユーザ認証およびページアクセス制限を統一した手法で行うために、
PHPlib クラスライブラリの基本クラスであるデータベース抽象化(DB_sql)クラス、セッション管理(Session)クラス、ユーザ認証(Auth)クラス、パーミッション管理(Perm)クラスを用いた。
一方、クライアント環境としては、基本的にOS およびブラウザの種類を問わないこととするが、Cookie と JavaScript の使用は必須とした。

action2action3model1.inc

view1.ihtml

model2.inc

view2.ihtml

model3.inc

view3.ihtml

ロジック

プレゼンテーション

図 3 MVC の関係
2.3 主なデータベース・テーブル本システムで使用する主なデータベース・テーブルは次の通りである。
• 事業所マスタテーブル
企業の事業所コード、事業所名、所在地コード、産業分類コード、URL 等の企業情報に関するテーブル。
• 学生マスタテーブル
学生の学籍番号、氏名、所属、在籍状況、入学年度等の学生情報に関するテーブル。

• 教員マスタテーブル
教員の教員コード、氏名等の教員情報に関するテーブル。
• 都道府県マスタテーブル
都道府県コードと都道府県名の対応テーブル。
• 産業分類マスタテーブル
産業分類コードと産業分類名の対応テーブル。
• 職種マスタテーブル
職種コードと職種名の対応テーブル。
• 職業マスタテーブル
職業コードと職業名の対応テーブル。
• 進路分類マスタテーブル
進路分類コードと進路分類名の対応テーブル。
• 所属マスタテーブル
所属コードと所属名の対応テーブル。
• 所属系列マスタテーブル
学部・研究科、学科・課程、クラス・専攻の所属コードと所属系列名の対応テーブル。
• 学校基本調査産業分類マスタテーブル
年度毎の学校基本調査の産業分類コードと産業分類名の対応テーブル。
• 学校基本調査職業分類マスタテーブル
年度毎の学校基本調査の職業分類コードと職業分類名の対応テーブル。
• 求人募集テーブル
求人情報を管理するテーブル。
• 求人募集対象テーブル
求人情報の対象所属に関するテーブル。
• 求人募集職種テーブル
求人情報の募集職種に関するテーブル。
• 進路活動テーブル
学生の進路活動の基本となるテーブルであり、進路希望、卒業見込判定、卒業判定等を管理する。
• ＯＢ情報テーブル
学生の進路情報に関するテーブル。
• 就職担当テーブル
就職担当教員コードと就職担当年度の対応テーブル。
• 担当所属テーブル
教員コードと担当する所属コードの対応テーブル。
• アナウンステーブル
アナウンス記事に関するテーブル。
• アナウンス対象テーブル
アナウンスコードとアナウンス対象所属の対応テーブル。
• アナウンスボックステーブル

アナウンスコードと学生コードの対応テーブルであり、これにより記事の閲覧数を求めることや未読状態を表現する。
• 内定状況テーブル
月毎の各所属の内定状況集計に関するテーブル。
• 産業分類読替対応テーブル
学校基本調査の産業分類コードと、企業の産業分類コードを表すマスタ産業分類コードとの対応テーブル。
• 職業分類読替対応テーブル
学校基本調査の職業分類コードと、学生の就職先での職業を表すマスタ職業分類コードとの対応テーブル。
2.4 システム機能
本システムは、教職員用システムと学生用システムの２つから構成されている。各々のシステムが持つ機能は以下の通りである。
2.4.1 教職員用システム①企業求人管理
就職担当教員（またはスタッフ）が企業から郵送、来学によって得た当該年度の求人資料を基に企業求人情報を登録することができる（図 4）。
求人情報は、就職担当教員が担当する所属（学科、専攻）を単位として管理する。また、大学・学部宛に届いた求人は大学・学部を単位に管理する。詳細な企業求人情報を学生に提供すると同時に入力作業の軽減を図るため、過去のデータを引用して登録することができる。具体的には、担当所属の過去の求人情報がデータベースに存在する場合、データベース内の最新年度求人情報および企業情報が引用される。担当所属に過去の求人情報は存在しないが、データベースに企業情報が存在する場合は、企業情報のみが引用される。これにより、企業求人情報の入力作業は、年度を重ねるにつれ軽減されていく。
②進路希望確認調整
学生が指定された期限までに進路希望を登録することで、就職担当教員はその情報を確認することができる。もしも、登録内容の進路希望と実際の活動が異なる場合は、就職担当教員が学生の進路希望を調整することが可能である。この進路希望が内定状況集計の計算に用いられる。
また、進路希望リスト情報を CSV 形式でファイルとしてダウンロードすることができる。

図 5 月別内定状況集計画面
図 4 企業求人情報入力画面③内定（進路）情報管理
学生の内定（進路）を登録し管理することができる。進路が進学の場合には、進学先名を登録する。就職の場合には、就職先に関する基本情報等を登録する。ここで入力された情報が、各種集計を行う際の重要な情報源となる。また、内定（進路）情報リストを、CSV 形式でファイルとしてダウンロードすることができる。
④アナウンス管理
アナウンス対象者を「担当所属学生」「大学全学生」「学部・研究科学生（複）」の中から選択指定して投稿することができる。これによりどのくらいの学生が閲覧しているかを把握することが可能である。
⑤内定状況集計
学部・研究科または学科・専攻毎に年度別の「就職希望者数」「就職内定者数」「就職内定率」「進学者数」の集計を行うことができる。また、自動起動プログラムによって、月初めに前月までの内定状況を自動集計する。これによって内定状況の月別推移を確認することができる（図 5）。
また、集計リストを CSV 形式でファイルとしてダウンロードすることができる。
⑥進路先状況集計
学部・研究科または学科・専攻毎に年度別の「進学者数」「就職者数」「その他（各種専修学校等）数」「未定者数」の集計を行うことができる。進路分類レベルを変更することによって、より詳細な分類の集計を行うことができる。また、集計リストを CSV 形式でファイルとしてダウンロードすることができる。

⑦就職先産業分類別集計文部科学省から毎年調査が依頼される学校基本調査の産業分類別に就職先を集計することができる。また、集計リストを CSV 形式でファイルとしてダウンロードすることができる。
⑧就職先職業分類別集計
文部科学省から毎年調査が依頼される学校基本調査の職業分類別に就職先を集計することができる。また、集計リストを CSV 形式でファイルとしてダウンロードすることができる。
⑨就職先所在地別集計
地方別、都道府県別に就職先の集計を行うことができる。また、集計リストを CSV 形式でファイルとしてダウンロードすることができる。
2.4.2 学生用システム①求人情報検索学科、大学に届いた求人を検索および閲覧することができる。企業求人情報の検索は、「求人年度」「募集対象所属」「産業分類」
「所在地」
「職種」
「企業名」
「事業内容」等をキーとして行うことができ、複合検索および絞込み検索等ができる（図 6）。
②就職実績情報検索卒業（修了）生がどのような企業に就職したかを、検索キーの組み合わせによって多岐の角度から検索できる（図 7）。検索キーとして「卒業／修了年度」、「対象所属」、「産業分類」、「所在地」、「企業名」がある。就職実績詳細によって、卒業（修了）年度、在学時所属、自由応募および推薦応募で就職した人数と合計を確認することができる。

認証を設け、認証済みでない場合、またはタイムアウトした場合にログイン画面が表示される。
さらにパスワードのハッシュ値を受け渡すダイ
ジェスト認証を実装し、ネットワーク上を生のパスワードが流れることを防止している。
図 8 に示した学生ユーザ認証の処理手順を以下で説明する。
クライアント・ブラウザ

サーバ・システム
ユーザ認証フォーム（チャレンジ値含む）
送信

ユーザ名+パスワード+チャレンジ値からMD5
ハッシュ値を計算しレスポンス値に設定

図 6 求人情報検索画面
ユーザ名、レスポンス
値送信

DBからパスワードを取得

ユーザ名+パスワード+チャレンジ値からMD5
ハッシュ値を計算

図 7 就職実績検索画面③進路状況参照
教職員用の機能とほぼ同じである。
④アナウンス閲覧
自分がアナウンス対象となっている記事を閲覧できる。また、未読の記事を確認することができる。
⑤進路希望設定
自分の希望する進路と地域を第 2 希望まで入力することができる。定められた期限までは何度でも変更可能である。
3. 実装方法
本システムの機能の中からユーザ認証、企業求人情報登録、内定（進路）情報登録、月別内定推移集計の処理を以下に示す。
3.1 ユーザ認証
本システムのユーザ認証は、PHPlib の認証機能
クラス Auth を継承したサブクラスによって実装した。Auth クラスを使用することで一定時間経過後のログアウト処理を実現することが可能となる。本システムはすべてのページにおいてレスポンス値と等しいか？
Yes

No
認証失敗

認証成功

図 8 ユーザ認証① ユーザ認証フォーム（ログイン画面）を出力する際に、MD5 によりランダムな英数字の羅列であるチャレンジ値を生成して、hidden入力値として埋め込む。
② ユーザ（学生）がユーザ名とパスワードを入力し「ログイン」ボタンをクリックすると、JavaScript によって、ユーザ名、パスワード、チャレンジ値を統合した文字列をキーとして MD5 ハッシュ値が生成され、さらにパスワードフィールドの値は消去される。生成されたハッシュ値を FORM 変数 response に設定してサーバへ送信される。
③ 受信したユーザ名をキーにデータベースからパスワード、在籍状態、アクセスモード、氏名、所属等を取得する。
④ クライアント側の処理と同様にユーザ名、パスワード、チャレンジ値により MD5 ハッシ
ュ値を生成し、この値が受信した response と等しい場合に認証に成功する。
本システムはシステムの性格上、学生の利用申請手続きを必要としない。そのためユーザ名とパスワードはある決まった値がデフォルト値として設定されている。しかし、デフォルトパスワードを長時間有効にすることはセキュリティの面から好ましくないため、デフォルトパスワードの使用期間を設定しており、この期限を過ぎるとログインできなくなる。

④ 求人情報をデータベースに登録し、求人コードを取得する。
⑤ 求人募集職種および求人募集対象所属をデータベースに登録する。
3.3 内定（進路）情報登録
図 10 に示した内定（進路）情報登録の処理手順を以下で説明する。

進路分類が「就職」か？

3.2 企業求人登録処理
図 9 に示した企業求人情報登録の処理手順を以下で説明する。

Yes

企業情報が存在するか？
Yes
企業情報が存在するか？

No

企業情報の登録No

Yes

No引用されたか？

企業情報を登録

登録エラー
Yes

No

Yes

求人情報が存在するか？
No卒業判定が合格か？

企業情報を更新

Yes

登録エラー

内定情報を登録・更新

No

内定情報を削除

求人情報を登録

進路希望の調整

求人募集職種を登録

求人募集対象所属を
図
4 ユーザ認証
登録

図 9 企業求人情報登録① 事業所名、所在地コード、産業分類コードをキーとして企業情報が存在するか調べる。
② 存在しない場合には、企業情報をデータベースに新規登録し、事業所コードを取得する。
③ 存在する場合には、事業所コード、求人年度、募集次、募集対象をキーに求人情報が存在するか調べる。存在しない場合は、企業情報を更新する。存在する場合は、登録エラーとなる。

図 10 内定（進路）情報登録① 進路分類が就職である場合には、就職先の企業情報が存在するか調べる。
② 存在しない場合には、企業情報をデータベースに新規登録し、事業所コードを取得する。
③ 存在する場合には、それがデータベースの企業情報から引用されたデータであるか調べる。引用されていない場合には、登録エラーとなる。
④ 卒業判定が不合格でない場合には、内定（進路）情報をデータベースに追加または更新登録し、進路希望の調整を行う。
⑤ 卒業判定が不合格の場合には、内定（進路）情報を削除する。

3.4 月別内定状況集計
月別内定状況集計プログラムは、自動起動プログラム(cron)によって、毎月 1 日に実行される。
図 11 に示した月別内定状況集計の処理手順を以下で説明する。

集計対象卒業年度を計算

全所属を取得所属が存在する在籍者数、卒業予定者数、就職希望者数、就職内定者数を計算し登録

図 11 月別内定状況集計① 集計対象の卒業年度を計算する。
② 全所属（学科、専攻レベル）コードを取得する。
③ 卒業年度、所属コードをキーに、在籍者数、卒業予定者数、就職希望者数、就職内定者数を計算し、データベースに登録する。
④ ③を全所属分繰り返す。
4. セキュリティ対策
本システムを運用するにあたり、セキュリティ対策として以下のことを行った。
• 本システムを運用するサーバ上で不要なサーバプロセスの停止。
• 盗聴やなりすましを防止する手段として通信経路を SSL(Secure Socket Layer)により暗号化。
• iptables により、IP パケットフィルタリングを行い、学外からのすべての IP パケットを無効化。
• すべてのページにおいてセッションによるユーザ認証およびアクセス制限を設定し、認証のすり抜けを防止。
• クロスサイトスクリプティング対策として、
ユ ー ザ 入 力 に お け る HTML 特 殊 文 字 をHTML エンティティに変換。
• ユーザからの入力が行われるすべてのページにおいて入力値のチェックを行い、不正な入力による誤動作の防止。
• PostgreSQL への接続をローカルホストのみに限定。
これらの対策でも完全にセキュアな環境を長期に渡り維持できる保障はないので、今後も継続してセキュリティ対策を行っていく必要がある。
5. おわりに本システムにおいて、内定（進路）情報をはじめ、企業情報、求人情報等をデータベース化することによって、学生に対し今までにはなかった新たな角度からの情報提供を実現することができた。就職担当教員にとっても過去の情報を迅速に把握することが可能になり就職指導における有効な情報源になると思われる。また、各種調査、集計に対する事務処理も効率よく容易に行うことが可能になった。しかし、本システムのデータベースは、就職担当教員（スタッフ）および事務職員による入力がベースとなるため、本システムに対する理解と協力なしには成り立たないものである。工学部において平成16 年 10 月より本運用を目指し現在準備を進めている。
今後は、説明会やアナウンス等を通して学生、教職員へシステムの周知を行うことが必要である。またシステムに対する生の意見を聞きながらより良いシステムに成長していけるよう改善、拡張に努めていきたい。
6. 謝辞
本システムの構築にあたり、ご協力頂いた宮崎大学工学部学生支援委員会の先生方、原専門職員、学務部学生支援課の後藤専門員に心から感謝致します。
参考文献[1] 堀田倫英，「PHP4 徹底攻略改訂版」，ソフト
バンク，2002[2] 廣川類，「PHP4 徹底攻略実践編」，ソフトバ
ンク，2002[3] 石井達夫，「PostgreSQL 完全攻略ガイド」,
技術評論社,2001[4] PostgreSQL Global Development Group,「PostgreSQL オフィシャルマニュアル」,
インプレス,2002