筑波大学技術報告
31: 70-73, 2011

Web アプリケーションの開発
川上彰

筑波大学システム情報工学等技術室〒305-8573 茨城県つくば市天王台 1-1-1
表示についても、このアクセス制御機能を使ってアクセス制限を行っている。
メーリングリストの情報は SQL データベースを使って管理されている。Web サーバから CGI プログ
ラムを介して SQL データベースへアクセスし、fmlの情報を更新する。社会工学類教育用計算機システ
ムでは、Web サーバと fml サーバとは異なる Linuxサーバ上で動作している。このため、SQL データベースに書き込まれたメンバー全員のメールアドレスを一旦テキストファイルとして書き出し、Perl スクリプト内で scp（Secure Copy）コマンドを使って、このファイルを fml サーバの各メーリングリストの領域へ転送している。

概要
アプリケーションソフトウェアのユーザインタフ
ェイスとして Web ブラウザを利用した環境は、現在では一般的に利用されているが、この開発環境は急速に変化している。本報告では、その一例として今まで作成した３つのプログラムを紹介する。
キーワード：Web アプリケーション , Wicket

１．はじめにWeb サーバの CGI（Common Gateway Interface）機
能を利用することで、固定されたページではなく、状況に応じた Web ページを表示することができる。
この機能は、主に Perl や PHP スクリプト等で作成したプログラムを利用するケースが多い。また、近年
Apache Wicket（以下 Wicket）が公開され、java を使って動的なページを作成することも可能となっている。
前者の環境を使って作成したプログラムとして
fml 管理用 Web プログラムを、また後者の Wicketを使用して作成したプログラムとしてシラバス表示プログラムとパスワード変更プログラムについて報告する。

2.2 管理管理用ページへログインすると、図 1 の管理画面が表示される。このページからメーリングリストへのメンバー追加と削除、メンバー情報の更新、メーリングリストの環境設定、メーリングリスト内のデータのダウンロード、および一括更新等を行うことができる。

２．fml 管理用 Web プログラム
2.1 概要Web ブラウザを使ってメーリングリストの一覧表
示と管理を行うことを目的として、perl スクリプトを使用して作成した。2005 年度に作成し、現在まで機能追加や不具合の修正等を行いながら利用している。メーリングリスト管理プログラムとしては、
GNU General Public License に基づいて公開されている fml を使用しているが、このシステムに標準で含まれている Web 管理機能は若干使い難い点もあったので、自組織の環境に合わせたシステムとして独自に作成した。作成したシステムは、メーリングリストのメンバー管理のための機能と、メーリングリストの一覧表示の２つからなる。
管理については、各メーリングリストに 1 人または複数の管理者を設定して管理する。fml にはメーリングリストへのメンバー追加に自動登録やモデレータと呼ばれる査読者を置いて管理する方法もあるが、本システムでは各メーリングリストの管理者がWeb ブラウザを使ってメンバーの追加や削除等の管理を行うことを前提としている。
管理ページへアクセスするためのユーザ認証は、Apache HTTP Server（以下 Apache）のアクセス制御機能を使って行なわれる。メーリングリストの一覧図 1. メーリングリスト管理用ページ

また、メーリングリストを管理する上で、サブリストを作ってリストメンバーを管理することができる。例えば１年生の１クラスから 6 クラスまでのメーリングリストを作成した後、これら全てのクラスをサブクラスとして、１年生全員のメーリングリストを作ることができる。１年生のあるクラスのメンバーのメールアドレスを削除や変更、新たに追加した場合、自動的に１年生全員のメーリングリストの内容も更新される。サブリストの下に、更に別のサブリストを追加することも可能である。この機能を使うことでメーリングリストのメンバー管理を効率的に行うことができる。
fml の機能として、メーリングリストへの投稿者を制限することも可能となっている。また、メーリングリストへ投稿できるユーザと投稿されたメール70筑波大学技術報告
31: 70-73, 2011

を配信するユーザを分けて設定することもできる。
作成した管理プログラムでは、これらの機能を使って、個人だけでなくサブリストに対しても同様の機能設定ができるようにした。例えば、先程の１年生全員のメーリングリストへ教員のリストをサブリストとして加え、投稿権限のみで配信は行わないように設定することで、教員から１年生全員へメール送信のみを行うことができる。

リストメンバー（そのメーリングリストのメンバーとなっているユーザ）、グループメンバー（管理者によって設定されたグループに属するユーザ）、一般ユーザ（アクセス可能な全ユーザ）の 3 種類の対象に対して、以下の 3 種類の設定ができる。
 メーリングリスト名を一覧に表示しない
 メーリングリスト名のみを一覧に表示する
 メーリングリスト名と、そのメーリングリストメンバー一覧を表示する
また、メーリングリスト管理者がリストメンバー一覧の表示を許可しても、各個人が自身の公開設定を変更することで、図 3 に示すように非公開とすることも可能となっている。

2.3 一覧表示
一覧表示用の Web ページへアクセスし、各自のユーザ ID でログインすると、図 2 のメーリングリスト一覧ページが表示される。

図 3. リストメンバー一覧

2.4 その他
追加機能として、以下の２つのプログラムを作成した。
（1）検索ツール
ユーザが、どのメーリングリストのメンバーとして含まれるか検索し、表示する（図 4）（2）リストメンバーの直接編集
Web ブラウザをエディタとして利用し、メーリングリストのメンバーを直接追加、変更、削除することができる。

図 2. メーリングリスト一覧

一覧ページ 1 列目のリスト・アドレスの部分をクリックすると、そのメーリングリストに所属するリストメンバーの一覧が表示される。メーリングリス
トの一覧ページへの表示やリストに含まれるメンバー表示の可否については、ログインしたユーザのアクセス権限によって異なる。各々のメーリングリス
ト情報へのアクセス権限は、管理者によって表 1 の設定が可能である。
表 1. アクセス制限
アクセス制限の対象
リスト
メンバー

グループ
メンバー

一般
ユーザ

以下から選択以下から選択以下から選択 メーリングリ
スト名を表示しない メーリングリ
スト名を表示しない メーリングリ
スト名を表示しない メーリングリ
スト名を表示 メーリングリ
スト名を表示 メーリングリ
スト名を表示 メーリングリ
スト名とメンバーの一覧を表示

 メーリングリ
スト名とメンバーの一覧を表示

 メーリングリスト名とメンバーの一覧を表示

図 4. 検索結果

３．シラバス表示プログラム
3.1 概要生命環境科学研究科構造生物科学専攻の伊藤希先生が開発された、生物学類のシラバス表示プログラ71筑波大学技術報告
31: 70-73, 2011

ムのソースコードを頂き、2009 年度より社会工学類のシラバス用として利用させて頂いている。プログ
ラムは PHP を使って作成されており、データ管理にSQL データベースを使用する。
授業を担当する教員が Web ブラウザを使って授業目的やスケジュール、教科書や参考書、担当教員のオフィスアワー等の情報を入力し、学生はシラバ
ス表示ページへアクセスすることで、その内容を確認することができる。
社会工学類で使用するにあたり若干修正を行い、更に 2010 年度からシラバス表示ページの部分をPHP から Wicket に変更した。Wicket は java 言語を使ってプログラムを記述する。HTML（HyperText
Markup Language）文書に Wicket 用のタグを追加することで、動的な Web ページを作成することができる。ともできる。今回のシラバスプログラムの表示部分
では、この機能を活用する場面は少なかったが、担当教員による授業内容の入力については、この機能を利用して高機能なページを作成することも可能かと思われる。

４．パスワード変更プログラム
4.1 概要社会工学類教育用計算機の更新が平成 22 年 9 月に行われた。このユーザ環境は LDAP（LightweightDirectory Access Protocol）を使って認証統合されている。Windows の認証については Samba を使ってNT ドメイン環境を構成し、smbldap-tools で LDAPとの統合を行っている。Samba は Linux 上で Windowsのサーバ機能を提供するオープンソースソフトウェアで、LDAP との認証統合を行うためのツールとして smbldap-tools が用意されている。ユーザ管理は、このツールを使用して行われている。smbldap-toolsの機能として、パスワード変更ツールも提供されている。また、Web ベースでパスワード変更を行う環境として BSD License（Berkeley Software DistributionLicense）の基に公開されている Usermin がある。しかし、社会工学類の利用環境に適したツールとするため、また今後の拡張の可能性を考慮して独自開発することにした。
プログラムは Wicket を使って作成した。これに組み込まれている Ajax 機能により、ユーザの入力に応じたダイナミックなページ表現ができ、またページ遷移の際も、従来のようなデータの受け渡しに環境変数や Cookie や hidden フィールド等を使う必要もなく、java の一変数として扱うことができる。

3.2 シラバス表示
図 5 に示すシラバス表示ページで、科目部分をクリックすることで該当する授業内容が表示される。
基本的な動作は生物学類のシラバスプログラムを参考にさせて頂き、表示を社会工学類の環境に合わせて調整した。

4.2 認証
ログイン表示に関しては、Wicket の拡張ライブラリとして提供されている Wicket-auth-roles を使用した（図 6）。ユーザ認証は Web サーバの認証機能を利用することが多いが、固有の環境を利用したい場
図 5. シラバス表示

表示は学期ごとに異なるページとして表示され、ページ上部のタブで切り替えができる。各学期のページは、横方向に時限、縦方向に曜日と学年をとって該当する授業を表示する。この授業科目名の部分をクリックすることで、その授業シラバスの内容が表示される。
Wicket を使用することで、HTML 文書ファイルをHTML エディタ等で作成し、これをベースに java プログラムで機能を加えるといった手法を使うことができる。これによって java 言語を使って、分かりやすいプログラムを作成することができ、仕様の変更等に比較的容易に対応できる。授業を担当する教員に よ る授 業内 容 の 入 力ペ ー ジに つい て も、 今後Wicket を使った環境への移行を予定している。
プログラム言語として java を使用することを目的に Wicket を使用したが、java プログラムから Ajax
（Asynchronous JavaScript + XML）機能の一部も利用可能で、これを利用して動的なページを作成するこ

図 6. ログイン画面72

筑波大学技術報告
31: 70-73, 2011

合は、自作する必要がある。その際、入力されたパスワードの扱いが難しいが、Wicket-auth-roles を利用することで、決められた手順に沿って java プログラムを作成することで認証ページを作成することができる。
パスワードの更新は、LDAP データベースの内容を書き換えるが、LDAP データベース内には Samba用のハッシュ値と Linux 用のハッシュ値の両方が含まれている。また、Linux 用のパスワードのハッシ
ュ方式は複数存在する。Samba のパスワードハッシ
ュには javax.crypto パッケージを使用し、Linux のパスワードハッシュには java.security パッケージのMessageDigest ク ラ ス を 使 用 し て 、 SSHA （ SaltedSecure Hash Algorithm）に変換した。ユーザによって入力されたパスワードからこれら 2 種類のハッシュ値を作成し、これを LDAP データベースに書き込んでいる。

５．まとめ
メーリングリスト管理については Perl スクリプトを使ってプログラムを作成した。プログラムは機能別に作成し、共通する部分を共通ライブラリとした。
Perl は比較的簡単に利用でき、また各種モジュールが提供されており、インターネット上に多くの情報も公開されている。ただし、CGI プログラムとして利用する場合、HTML コード自体もスクリプト中に記述する必要があるため、スクリプト全体が分かり難くなる場合がある。今回報告したメーリングリ
ストの Web 管理プログラムについても、スクリプトは全体で 4000 行を超えており、仕様変更や不具合への対応が難しくなっている。
一方、シラバス表示やパスワード変更プログラムで使用した Wicket の場合、HTML コードとプログラムを分けて作成することができるので、表示と処理を分けることができる。また、データについても javaの変数として扱うことができるので、ページ間のデータ受け渡しもスムースに行うことができる。Java言語のオブジェクト指向の利点を利用することで、効率的で分かりやすいプログラムを作成することが可能となる。
Web アプリケーションを作成するための環境は、今回使用した Wicket 以外にも多く存在する。今回はjava を使って Web アプリケーションを作成することを目的に Wicket を使用した。プログラムを作成するにあたり魅力的な機能も多いが、反面 HTML に加えて java 言語や Wicket 固有のコンポーネントに関する知識が必要とされ、プログラム作成者の技量が必要とされる。
高機能な Web 環境を短期間で効率的に作成するための環境として Wicket の利用は有効な手段となると思われるが、プログラム作成のためには高度な知識も必要とされる。ただし、java 言語だけで Webページを作成できる点は大きな魅力で、今後も利用できる場面があったら利用していきたい。

4.3 ユーザ情報
ユーザが各自の ID とパスワードを入力してログインすると、図 7 のページが表示される。ここで各自のパスワード等の情報を更新することができる。
ユーザ情報の管理については SQL データベース利用している。LDAP データベースのスキーマを変更することで必要な項目を追加することも可能であるが、データ構造の変更等に柔軟に対応できるのでSQL データベースを使用することにした。

謝辞

図 7. ユーザ情報の更新ページ

SQL データベースには、LDAP データベースの情報に加えて、日本語の氏名やフリガナ、所属等の情報が追加されている。メール環境についてもメールの転送先や受信する際の別名情報が保存されており、この情報を基にユーザごとのメール転送設定ファイル（.forward）やメール受信時の別名設定ファイル（alias）への設定がなされる。
また、この SQL データベースの内容をテキストファイルとしてダウンロードし、パソコン等の表計算ソフトを利用して適宜修正し、再度アップロードすることでユーザ情報の一括更新を行うことも可能である。

73

シラバスプログラムにつきましては、生命環境科学研究科構造生物科学専攻の伊藤希先生から生物学類のシラバス用として作成されたプログラムのソースコードを頂き、社会工学類用として調整して利用させて頂きました。また、調整にあたっては、シス
テム情報工学研究科の藤原良叔先生、堤盛人先生、張勇兵先生、八森正泰先生ならびに多くの関係者の方々にご助言いただきました。皆様方に感謝致します。

参考文献[1] 矢野勉 著，オープンソース徹底活用 Wicket によるWeb アプリケーション開発，秀和システム（2009）