38
香川大学経済論叢 71 巻第 1 1998 6 41-78 Web データベースアプリケーションと 開発環境 中村邦彦 I はじめに WWW とデータペースを連携させることの必要性が高まっている。イントラ ネットにおける情報提供サービスの中心は WWW サーパであるが,本格的な イントラネットを構築しようとすれば,単に静的な情報を提供するだけでは済 まない。クライアントの要求に応じて,サーバ側で何らかの処理をし,適切な 情報を返す必要がある。その場合,データベースから情報を取り出したり,更 新したりする必要が発生することも多い。従来,このようなことを実現しよう とすれば高度な技術と高額の経費が必要であったが,今や状況は大きく変わっ ている。 以下本稿では, WWW サーバとデータベースシステムを連携させるシステム WebDatabase システム, WebDatabase システムを利用したアプリケー ションプログラムを WebDatabase アプリケーションと呼ぶことにする。 以前は,ハードウェアとしては少なくともワークステーションクラスのコン ピュータが 1 台,それに商用の UNIX を載せる必要があった。それにデータ ベースシステムを加えるとなると相当の出費を強いられる。現在は高価なワー クステーションを使わずに廉価なPC を使うことができるようになった。最新 Web Database 技術を利用しようとするなら,まずマイクロソフト社の WindowsNT サーノf に,同じくマイクロソフト社のインターネットインフォ メーションサーバ (IIS)SQL サーバを使うことが考えられる。その環境では 同社が精力的に推進している ActiveX テクノロジーに基づいた Active OLIVE 香川大学学術情報リポジトリ

データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

香 川大学経済論叢

第 71巻 第1号 1998年6月 41-78

Webデータベースアプリケーションと

開発環境

中村邦彦

I は じ めに

WWWとデータペースを連携させることの必要性が高まっている。イントラ

ネットにおける情報提供サービスの中心はWWWサーパであるが,本格的な

イントラネットを構築しようとすれば,単に静的な情報を提供するだけでは済

まない。クライアントの要求に応じて,サーバ側で何らかの処理をし,適切な

情報を返す必要がある。その場合,データベースから情報を取り出したり,更

新したりする必要が発生することも多い。従来,このようなことを実現しよう

とすれば高度な技術と高額の経費が必要であったが,今や状況は大きく変わっ

ている。

以下本稿では, WWWサーバとデータベースシステムを連携させるシステム

をWebDatabaseシステム, Web Databaseシステムを利用したアプリケー

ションプログラムを WebDatabaseアプリケーションと呼ぶことにする。

以前は,ハードウェアとしては少なくともワークステーションクラスのコン

ピュータが 1台,それに商用の UNIXを載せる必要があった。それにデータ

ベースシステムを加えるとなると相当の出費を強いられる。現在は高価なワー

クステーションを使わずに廉価なPCを使うことができるようになった。最新

のWeb Database技術を利用しようとするなら,まずマイクロソフト社の

WindowsNTサーノfに,同じくマイクロソフト社のインターネットインフォ

メーションサーバ (IIS)とSQLサーバを使うことが考えられる。その環境では

同社が精力的に推進している ActiveXテクノロジーに基づいた Active

OLIVE 香川大学学術情報リポジトリ

Page 2: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-42- 香川大学経済論叢 42

Server Pages (ASP)が利用できるし,機能は劣るが手軽にアプリケーションを

作成できる InternetData Connector (IDC)も利用できる。更に,従来からの

Common Gateway Interface (CGI)によるシステムを構成することも可能であ

る。 IISの設定も GraphicalUser Interface (GUI)を使って行えるのでわかりや

すい。ところが WindowsNT サーノ~4.,0は5クライアントライセンス付きで

157,000円(アカデミックパッケージで80,200円), 1クライアントアクセスラ

イセンスが 6,500円,アカデミックパッケージで4,100円)である。 SQLサー

バ 6,, 5は5ユーザで235,800円,その他のデータベースサーバも, Oracle 8 (10

ユーザ 20クライアント)が 160万円, ADABASCが 1,215,000円である [1.210

多数の学生に同時に使わせようとすると,筆者の研究費だけではどうにもなら

ない額である。

そこで今回はハードウェアとしては PCまたは PCサーバを,ソフトウェア

はすべてフリーソフトウェアまたはライセンスフリーのソフトウェアを使:って

Web Databaseシステムを構築することにした。

本稿では,きわめて少ない経費で実用に耐え得る WebDatabaseシステムが

構築できることを示すとともに,実際に WebDatabaseアプリケーションを作

成して,その際必要となる基本的な技術について検討する。また,小規模な Web

Databaseシステムを Windows95上で実現する方法と Windows95上での

Web Databaseアプリケーション開発環境についても詳しく検討する。

II PC-UNIXによる WebDatabase環境

ここでは実用に耐え得る WebDatabase環境について述べる。ここでWeb

Database環境と言ったのはアプリケーションの開発環境も含めているからで

ある。まず必要なものを表 2-1に書き出しておく。

OLIVE 香川大学学術情報リポジトリ

Page 3: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

43 Webデータベースアプリケーションと開発環境

表 2-1 PC-UNIXによる WebDatabaseシステム構成

ハードウェア

OS WWWサーバ

データベース

PCサーバまたは通常のPCLinux

Apache MySQL

スクリプト言語プロセッサ Perl その他 Perl CGIモジュール

PerJで日本語を扱うためのモジュール

Linuxthreads

2..1 ハードウェア

43

PC-UNIXのためのハードウェアとしては, Windows95を動かすのには

少々力不足のマシンでも使えないことはない。ただし,サーバとして連続運転

を考えているなら,サーバ専用機を用意した方が信頼性の面で安心である。今

回開発用機としては Micron社の Millenium,運用機としては Dell社の PC

サーノ'¥PowerEdge 2200を使った。運用機の主な仕様を表 2-2に示す。主記憶

を128MBにしているが, Linux(後述)ベースの WebDatabaseシステムとし

ては 32MB程度でも大丈夫なのではないかと思われる。このマシンは学生のた

めのファイノレサーバとして使うことを考えて主記憶を大きくした。

表 2-2 運用機の主な仕様

CPU Pentium 266 MHz x 2

主記憶 128MB

ハードディスク ULTRA WIDE SCSI 4GBx3

ネットワークアダプタ InteJ EtherExpress 100

2..2 PC-UNIX

PC-UNIXには Linux[3,4]かFreeBSD[5-7lを選んでおけばまず間違いはな

い。 PC-98マシンなら FreeBSDを選ばざるをえないが, PC-AT互換機ならど

ちらにするか迷うところである。今回はそのマシンをファイルサーバとしても

使用するので,ディスクキャッシュの機能に優れている Linuxを採用した。こ

OLIVE 香川大学学術情報リポジトリ

Page 4: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-44ー 香川大学経済論叢 44

れは実際に両方を使ってみた上での判断である。 FreeBSDにも新しい版には

ディスクキャッシュの機能が組み込まれているが,実際に使ってみると主記憶

に未使用部分が十分残っていてもディスクキャッシュとしては使用されなかっ

た。それに対して Linuxは,適当なフリーメモリを確保した上で,残りをディ

スクキャッシュとして有効に使用してくれた。

Linuxにはいくつもの配布パッケージがある。 Slackware,Red Hat, Debian

の3つを比較してみると, Red Hat[8 9]が最もインストールがしやすく,システ

ム設定においても工夫されているように見えるが,今後に期待して Debian/

GNU Linux 1.. 3 ..1 [10]にした。 Debian1..3..1には, Linux Kernel 2“O“29と2..

0..30が用意しであり,どちらでも使えるが,現在は安定版の最新パージョンで

ある 2..0,32に更新した。カーネノレ再構築の際はシステムに合わせたコンブイグ

パラメータを設定した他, Makefileとソースファイルに次のような変更を加え

ている。これは RedHatに添付されている iLinuxをインターネットサーバと

して使用するための検討J [11]による。

表 2-3 Linuxカーネノレへの変更

/usr / src/linux/inc1ude/linux/tasks.. hへの変更

NR TASKSを 1024に (defaultis 512) /usr/src/linux/inc1ude/linux/fs. hへの変更

NR OPENを 1024に (defaultis 256) NR INDOEを 5192に

NR FILEを 4096に

/usr / src/linux/Makefi1eへの変更

SMP = 1 コメントの記号を削除して有効にする)

2“3 W W Wサーバ

Debian標準の WWWサーノては Apache[12] であり,ノ~'-ジョンは1..1.. 3 であ

る。 Apacheは豊富な機能が用意されており,人気のある明パN'Wサーバソフト

ウェアである。 1998年 3月の調査では jpドメインにおける羽川TWサーバの

42..4%を占めた[13]。数多くの UNIXシステムに対応している他, Windowsマ

シン版も用意されている。また,常にいくつかの余分なプロセスを起動してお

OLIVE 香川大学学術情報リポジトリ

Page 5: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

45 Webデータベースアプリケーションと開発環境 -45ー

いて,クライアントからの接続を待つようになっているため,レスポンスが速

いと期待できる。当然 ASPはサポートされていないので,データベースとの接

続には CGIを用いることになる。 Apacheも現在は最新パージョンの L2,, 5に

した。DebianはApacheをDebian流に変更しているのでApacheのオリジナル配

布パッケージをそのままインストーノレしたのでは, Debianの設定と食い違いが

生じる。これらの変更は設定ファイル(ホ"conf)の変更だけでは対応できないの

で,一部ソースファイ yレを修正しなければならない。

2..4 SQLサーバ MySQLEI4]

SQLデータベース、サーノてとしては MySQLを採用した。その他にも使えそう

なものはあるが,これが書籍付録の CD-ROMに入っていたのがきっかけで

あった[1510 非営利目的で使用する場合は無料で使用できるとなっていることも

大きな要因である。インストールしてみるとLinuxですんなり動いたし,

ODBCを介してパソコンのAccessやExcelからも接続できたので,これは授業

にも使えると考えた。その他のデータベースは実際には使っていないので断言

はできないが, miniSQLEl6]とPostgreSQLEI71も使えるのではないかと考えてい

る[18]0APIはC,C+ +, Java, Perl, Python, TCL対応のものが用意されてい

る。 MySQLは元々がインターネットを介して使用するようになっており,

MySQLをインストールしたマシンから使う場合でも, localhostに接続して使

うという形態になっている。したがって一つのマシンに MySQLを導入すれ

ば,ネットワーク上の他のマシンからもほぼ同様に使用できることになる。

MySQLを操作するために mysqlというコマンドインタープリタが用意されて

いる。通常,管理者はこれを使って MySQLの設定,データベースの管理を行

うことになる。最近WindowsNT/95対応のクライアントも公表されたので,ホ

ストの Linuxにログインせずに各種の設定が行えるようになった。

MySQLのマニュアlレには, rpostgreSQLはいくつかの新しい機能を備えて

いるが, ANSI SQLとODBCの多くの標準的な型と機能を欠いている。通常,

PostgreSQLはMySQLに比べて"muchslower"である」と書いてある [19] こと

OLIVE 香川大学学術情報リポジトリ

Page 6: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

46 香川大学経済論叢

から,パフォーマンスの面でも期待できる。

MySQLの使用形態をまとめると次のようになる。

* サーバに telnetでログインしクライアントである mysqlから使う。

* 他の UNIXマシンから mysqlを使う。

* ネットワーク上の UNIXマシン(自機を含む)から APIを介して使う。

* WWWブラウザ、から WWWサーバと CGIを介して使う。

* Windowsマシンから ODBCを介して使う。

* Windowsマシンからクライアント mysqlを介して{更う。

46

MySQLはLinux版のバイナリモジュールが配布されているが,自分のマシ

ンの CPUに合わせたバイナリを作成するためにソースファイルからコンパイ

ルすることにした。

まず, PerlとPOSIXThread Library[20Jをインストールする。 Perlについて

は2..5で説明する。 ThreadLibraryはLinix専用のものが用意されているの

で,それを makeするだけである。 Linuxには本来ユーザスレッドがなく [2円

MySQLはマルチスレッドのプログラムであるので,この ThreadLibraryが

必要になる。このライブラリのスレッドは,実際には UNIXのプロセスである

が,リソースを共有するようになっている。そのためカーネルレベルでスケ

ジュールの対象となり,かっ,通常のプロセスよりは軽くなるので,コンテク

ストスイッチが速くなるものと期待される。

以下,これ以後の MySQLのインストール作業を簡単にまとめておく。

(1) ソースファイルを入手し,適当なところに展開する。

(2) Configureを実行する。

(3) Makeを実行する。

(4) Make installを実行する。

(5) データベースを初期化する。

OLIVE 香川大学学術情報リポジトリ

Page 7: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

47 Webデータベースアプリケーションと開発環境 -47-ー

用意されているスクリプト../scripts/mysql install dbを実行すること

によって MySQLの特権テーブルがセットアップされる。

(6) 起動時のスクリプトを組み込む。

(7) データベースへのアクセス権を設定する。

これらの作業で問題が発生することがあるかもしれない。筆者の環境では,

運用機,テスト機共にパージョン 3..2Lxx betaの聞は Perl関連のところでエ

ラーが発生し, makeが途中で停止した。 3..2L26gammaになってエラーは起

きなくなったので,それ以上は追求していない。起動スクリプトを組み込むに

際しては,マニュアノレに Debian/GNU/Linuxに対する次のような指示がある

のでそれを行う口9J。

If you want in Debian GNU/Linux to get MySQL to auto start when

system boots, do the following :

>cp scripts/mysqL server /etc/init d/mysqL server

> /usr/sbin/update-rc. d mysqL server defaults 99

MySQLでは, host, db, userの3つのテーブルでアクセス権の管理を行って

いる。これらのテーブルに,接続を許すホスト,ユーザ,パスワード,利用者

権限等が書き込んである。wwwサーバからアクセスさせる場合は, localhost

からのアクセス権だけを設定しておけばよい。

2..5 CGIスクリプト言語

CGIスクリプトは Perl[22-24]で書くのが手軽で,広く用いられている[お]。ま

た,データベースへ接続するためのライブラリも充実している。 Debianには

Perlが含まれているが, SQLサーバとして使用する MySQLの最新ノ守}ジョ

ンは Perl5..004.. xxを必要とするので,これをインストールする必要がある。

PerlのConfigureプログラムは自動的に Linuxを認識して適切にインストー

OLIVE 香川大学学術情報リポジトリ

Page 8: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

48- 香川大学経済論叢 48

ルしてくれるので,特に問題はない。途中で数多くの設定パラメータを聞いて

くるが,すべて標準設定でうまく動作してくれる。

その他, PerlでCGIスクリプトを使うために cgi-lib叶 pl[26Jとjcode“pl[27Jを用

意した。 cgi-lib.plはブラウザからサーバに送られる情報を Perlで扱うための

ライブラリである。 jcode“ plはPerlで日本語コード変換を行うためのライブ

ラリで, Perlのライブラリに含まれている Kconv..plの改良版である。データ

ベース内では日本語データはシフトJISにしておく方が都合がよいのでそうし

ているが,クライアントが送ってくる文字はシフト JISとは限らないので,処

理する前に文字コードを変換しておく必要がある。

2..6 日本語処理の問題

MySQLはよくできているのだが,残念ながら日本語すなわちシフト JIS

コードには対応していない。データベースの中ではデータは 8ビットがそのま

ま保存されており問題がないのだが,確認できたところでは日本語については

次のような問題がある。

(1) フィールド名は英数字に限定されており,日本語は使えない。

(2) SQL文で文字データを書き込むとき,シフト JISコードの 2バイト目が

Ox5cであると文字化けが発生する。

(3) 日本語文字列をソートしたときに文字コード順にならない。

インターネット経由でシフト JIS以外の日本語文字コードが来ることは予

想されるところであるが,処理する前にシフト JISに変換することにしている

ので,ここではその他の日本語文字コードについては考えていない。

(1)は新規データベースを作成するときにはあまり問題にならない。ただし,

既存のデータベースをそのまま転送するときはフィールド名を英数字に書き換

えなければならない。

(2)はよくあるケースである。 SQL文の中でデータとしての文字列を記述する

OLIVE 香川大学学術情報リポジトリ

Page 9: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

49 Webデータベースアプリケーションと開発環境 -49

場合,文字列の始まりと終わりを示す記号が決められている。また文字列の中

にそれらの終端記号を含める手段が必要である。 MySQLは文字列の中では

パックスラッシュ'¥'だけを処理する。したがって注意しなければならない文字

は次の 3文字である。

"(Ox22), '(Ox27),¥ (Ox5c)

これらの文字のうちシフト.JISコードの 2バイト自にくる可能性があるの

は'¥'だけである。MySQLは文字列の中に'¥'があると'¥'自身を取り除き,その

次の文字はそのまま文字列の中に含めるようになっているので,シフト JIS

コードの 2バイト自に'¥'が来ると文字コードが破壊されるのである。 MySQL

はソースコードが公開されているので,該当個所を探してシフト JISコードが

通るように修正することは簡単であるが, MySQLは今後もパージョンアップ

が頻繁に行われることが予想されるのでソースコードへの修正は行わず,必要

な個所に'¥'コードを追加する Perlスクリプトを用意することにした。内容

は,文字列の先頭から順番に調べて行って,シフト JISコードの 2バイト自に

'¥'が見つかったら'¥'をもう一つ追加しておくというものである(付録1)。

実は同様のことは英語版Perlの中でも起きる。 Perlにおける文字列は二重

引用符で囲む"川"と一重引用符で囲む'…'がある。'の文字列内では¥は処理さ

れないがの中では処理されることになっている。したがって"予約しまし

た。"と表示しようとして次のように書いた場合,(a)では文字化けが生じるので,

(b)または(c)のようにすればよい。参考のために 2バイト目が Ox5cになる文字

を表 2-4に示した。'予'の 2バイト目が Ox5cである。

(a) print"予約しました。¥n";

(b) print"予¥約しました。¥n";

(c) print'予約しました。ソ'¥n";

OLIVE 香川大学学術情報リポジトリ

Page 10: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-50ー 香川大学経済論叢 50

表 2-4 コードの 2バイト目が Ox5cになる文字

815C - 8B5C 欺 955C 表 9F5C 猷 E95C 鰻 F35C . 825C . 8C5C 圭 965C 暴 E05C 溶 EA5C 鶴 F45C . 835C ソ 8D5C構 975C 予 E15C 喬 EB5C ・ F55C

845C bl 8E5C 蚕 985C t索 E25C 乗 EC5C • F65C . 855C . 8F5C 十 995C 免 E35C 綜 ED5C ・ F75C . 865C 905C 申 9A5C w客 E45C 啓 EE5C • F85C . 875C IX 915C 曾 9B5C 矯 E55C 議 EF5C • F95C . 885C 925C 箪 9C5C 粥 E65C 鱗 F05C . FA5C ・

895C n噂 935C 日占 9D5C 余 E75C 鐙 F15C . FB5C •

8A5C 浬 945C 古E 9E5C 初 E85C 鐸 F25C . FC5C •

Perlには日本語対応の jperlがあるが,日本語モードにするとシフト JIS

コードの 1バイトごとの操作がしにくくなり, Perlで書いた文字コード変換ラ

イブラリが使えなくなるので英語モードのままで使わなければならない。

(3)は次のような理由により発生する。英語版のデータベースではアルファ

ベット順にレコードを並べ替える場合,大文字と小文字は同一視されるように

なっている。シフト .JISコードにそれが適用されると,コードの 2バイト自に

アルファベットと同じコードが含まれるため,たとえデータがカタカナまたは

ひらがなに限定されていても順序がおかしくなってしまう。これを避けるため

には日本語で,かっその欄をコード順にソートする必要がある場合は, BINAR-

Y指定をしておくことができる。これは MySQL3..21から用意された機能であ

る。ただし,これを使うとアルファベットの大文字小文字が同一視されなくな

るのでアルフアベットと日本語が混在する場合はやはり問題が生じる。今回作

成したアプリケーションは,最初は 3..20れ xxで始めたので,名前の読みの順で

ソートするところはローマ字にした。

OLIVE 香川大学学術情報リポジトリ

Page 11: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

51 Webデータベースアプリケーションと開発環境 -51ー

III Web Databaseアプリケーションの作成

3..1 ホームページの登録・検索アプリケーション

情報管理学科では,講義や演習の中で,学生にウェブページ作成の指導をし

ている場合があるので,学生が自分のホームページを持っているケースが増加

している。そこで,それらのページを紹介できるようにしたいと考えた。しか

し,学生の申し出を受けて担当者がいちいち HTMLファイノレに書き込んでい

たのでは面倒だし,内容を簡単なキーワードで検索できるようにもしたい。そ

こで,最初のアプリケーションとしてこれを作成してみることにした。

図 3-1 ホームページの検索画面

(1) 本節で紹介する 2つのアプリケーションは、香川大学経済学部情報管理学科の学科

サーバで公開している。 URLはhttp://is.ec.kagawa-uac. jp/。

OLIVE 香川大学学術情報リポジトリ

Page 12: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

52

接続するとまず図 3-1のような画面になる。画面が変わっても操作ボタンが

常に表示されるようにフレームを使用した。

香川大学経済論叢-52

ホームページの情報として表示す

これら以コメントの 5項目にした。ローマ字名,所属, URL, るのは,氏名,

データベース内ではレコード IDと登録者のパスワードフィーノレドが用外に,

意されている。氏名の読みをローマ字にしたのは, MySQLの最初に使ったパー

ひらがなまたはカタカナで読みを入力しジョンでは BINARY指定ができず,

その順序に表示させることが面倒だ、ったからである。ても,

それぞれ次のように機能する。左側にある操作ボタンは,

ボタンの機能表 3-1

官E

すべてのレコードを表示する。表示はローマ字名順とする。

条件に合うレコードだけを表示する。すべて ANDによる検索になる。

同一氏名のレコードがないことを確認して登録する。

まず該当するレコードを呼び出し、修正した後更新する。

まず該当するレコードを呼び出し、確認の上削除する。

フレームによる表示を止めてサーバのトップページに戻る。

機ボタン名

一人は一つのホームページしか登録できない氏名はユニークであるとして,

もっとも名前は自由に付けられるので,名前を変えれば一人で何ものとした。

件でも登録できる。テストノTージョンでは誰でも自由に登録し,削除・修正も

それではあまりにも無防備なので,登録者は登録時できるようにしていたが,

にパスワードを付けることにし,修正・削除はそのパスワードが一致する場合

だけ行うことにした。

操作ボタンでは更新と削除は別になっているが,実際にはまず同じ画面で更

新または削除するレコードを呼び出し,更新の場合はそれを適宜修正してから

「更ω新」する,削除の場合は内容はそのままにして「削除」するようにした。

両方ともその時点で登録時のパスワードを入力させるようになっている。

検索と登録は 1回のコマンドで処理できるが,更新と削除では,まずユーザ

が指定したレコードを見せておいて,ユーザからの確認を待ってから実際の処

OLIVE 香川大学学術情報リポジトリ

Page 13: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

53 Webデータベースアプリケーションと開発環境 -53

理をしている。残念ながら htゅではコマンドごとに接続が切れてしまうので,

こういう処理をするには少し工夫が必要である ocookieを使うという手もある

が,ユーザがcookieを受け入れない場合も考えられるので,できれば使いたく

ない。そこで前回の情報はフォームの隠しフィールドとしてブラウザ、側に一旦

返し,次にそれを利用することにした。

図 3-2 ホームページデータの更新画面

このデータベースでは,氏名はユニークになっているが,更新するときに氏

名を頼りに更新すると,氏名が修正された場合は更新対象のレコードが見つか

らなくなってしまうので,レコード IDに基づいて更新しなければならない。

次に MySQLにおけるデータベース作成の手順を紹介する。

サーバに telnetで接続し, MySQLのクライアント mysqlを起動する。以下,

次のように入力する。

(1) CREA TE DA T ABASE webdb ;

(2) Connect webdb ;

(3) CREA TE T ABLE homepage (

OLIVE 香川大学学術情報リポジトリ

Page 14: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

54- 香川大学経済論叢 54

(4) hp id INT AUTO INCREMENT,

(5) naロle V ARCHAR (50) NOT NULL,

(6) romaJl V ARCHAR (50) INT NOT NULL,

(7) shozoku V ARCHAR (50) INT NOT NULL,

(8) url V ARCHAR (100) id INT NOT NULL,

(9) comment V ARCHAR (255),

(10) password CHAR (16),

(1l) PRIMARY KEY (hp id)

(12) );

(1) はデータベースwebdbを作成する。

(2) はそのデータベースに接続している。

(3)~但) はhomepageという TABLEを定義し,作成している。

クライアント言語の mysqlは一つのコマンドを複数行に分けて入力でき,セ

ミコロン(;)がコマンドの終わりになる。

パスワードは MySQLで提供されている PASSWORD関数を使って暗号化

する。古いパージョンでは 8桁の 16進数になっていたが,現在は 16桁になっ

ている。

3..2 CGIスクリプト

PerlでCGIを書く場合には,先に紹介した cgi-lib..plとjcode..plの他に,

MySQL付属の PerlAPIを使う。したがってスクリプトの最初の部分は常に次

のようにしておけばよい。

非l/usr/bin/perl

use Mysql;

require 'cgi-lib.. pl' ;

require 'jcode.. pl' ;

OLIVE 香川大学学術情報リポジトリ

Page 15: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

55 Webデータペースアプリケーションと開発環境 -55-

cgi-lib引 plを使って Browserから GETまたは POSTで渡されたパラ

メータは,次のようにして取り出す。

&ReadParse ;

$name = $in {"NAME"}; $romaji = $in {"ROMAJI"} ;

まず ReadParseで処理すると,それらは連想配列として inに格納されるの

で,それを inから取り出せばよい。この例では NAMEという名前の入力

フィールドの値が$nameに取り出されることになる。同じ名前で複数の値が

ある場合は, ReadParseは'¥0'で区切られた文字列にするので, Per1では split

関数を使えば簡単に分解できる。

@array split(/¥o /, $multistring) ;

次いで日本語のフィーノレドであればjcode..plのライブラリでシフト JIS

コードに変換しておく。

&jcode'convert( *name, "sjis") ;

&jcode'convert (* comment, "sjis") ;

次に MySQLに問い合わせるための SQL文を作成し,日本語の文字化けを

防ぐ前処理をする。

$sql &jprep ($sql) ;

あとは SQLを発行し,結果を取り出し,クライアントにHTMLファイノレとし

て返してやればよい。

OLIVE 香川大学学術情報リポジトリ

Page 16: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

56 香川大学経済論叢 56

3..3 Perlから MySQLを使うための API

MySQLのPerlAPIはこれまでは MysqlAPIが使われていたが,新しいマ

ニュアノレにはこの APIの記述がなくなっており,代わりに DBI[28]を使うよう

に推奨されている。このアプリケーションは,実はすべて古い APIで作成して

しまっていたので,ここではまず MysqlAPIを説明し,参考までに新しい DBI

APIも説明することにする。

* Mysql APIによるデータベースへの接続

(1) use Mysql;

(2) $dbh = Mysql->Connect(ホスト名,データベース名)

(3) $sth = $dbhー>Query(SQL文)

(4) while (@record = $sth一>FetchRow)

(5) print "@record¥n" ;

(6)

これを使用可能にするには,あらかじめ use文でこのライブラリを使うことを

宣言しておく(1)。

(2)でデータベースに接続する。今は WebのCGIスクリプトの中で実行しよう

としているので,ホスト名は"localhost"でよい。データベース名は"webdb"で

ある。データベースのアクセス権の設定により,この場合はユーザ名とパスワー

ドは不要である。接続が成功するとデータベースハンドノレが返される。

(3)でSQL文を実行する。

(4),,-,(6)で結果を取り出している。 SQLがSELECT文のときは,上のように

QueryでSQLを実行してから,レコードを FetchRowで取り出す。 INSERT

や UPDATEなど,非 SELECT文のときは FetchRowを使う必要はない。な

お,接続したデータベースを閉じる Closeに当たるメソッドは必要がないので

用意されていない。

OLIVE 香川大学学術情報リポジトリ

Page 17: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

57 Webデータベースアプリケーションと開発環境

次に最新のマニュアノレで推奨されている DBIAPIを使う場合を示す。

(1) use DBI;

(SELECT文の場合)

(2) $dbh = DBI-> connect("DBI : mysql:データベース名")

(3) $sth = $dbh-> prepare (SQL文);

(4) $rc = $sthー>execute;

(5) while(@record = $sth->fetchrow array)

(6) print "$record¥n" ;

(7)

(8) $rc = $sth-> finish ;

(9) $rc = $dbh->disconnect;

(SELECT文でない場合)

(10) $dbh = DBI-> connect ("DBI : mysql:データベース名")

(11) $dbh-> do (SQL文)

(12) $dbh・-> disconnect ;

57-

DBIを使う利点は他のデータベースシステムに接続する場合と同じ手順が

使えるようになることである。 Perlのサイトには多くのデータベースに対する

DBIモジューlレが掲載されている。

3..4 演習室利用予約・表示アプリケーション

情報管理学科にある端末室・ゼミ室の利用予約とその予約状況を表示できる

ようにした。これは部屋もデータベースに登録しているので,簡単に部屋を増

やしたり,名前を変更したりできるように考慮してはあるが,部屋はとりあえ

ず4つに固定した。利用登録できるユーザは別途管理者がデータベースに登録

するものとする。予約は香川大学の授業時間単位にする。登録は毎日,毎週の

登録が簡単に行えるように工夫した。

OLIVE 香川大学学術情報リポジトリ

Page 18: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

58 香川大学経済論叢 58

図 3-3 演習室利用予定の検索

図 3-4 演習室予約状況の表示

OLIVE 香川大学学術情報リポジトリ

Page 19: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

59 Webデータベースアプリケーションと開発環境 59-

作成したテーブノレを表 3-2に示す。

表 3-2 テープJレの構造

部屋名表 roomna町le

予約表 roomresrv 項目名 データ型

100m id INT 項目名 データ型 room V ARCHAR(20) 1S id INT

1S date DATE 利用者表 roomuser

room id INT

period INT 項目名 データ型

user id INT user id INT

user V ARCHAR (20)

password V ARCHAR (16)

図 3-5 演習室利用予約画面

OLIVE 香川大学学術情報リポジトリ

Page 20: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-60ー 香川大学経済論叢 60

以下,各操作ボタンの機能について説明する。

* 検索

何も設定せずに実行すると,すべての部屋について,当日から 1週間分の

予約状況を表示するようにした(図 3-4)。

* 予約

1利用者ごとにパスワードを付けて予約させるようにした。

1度の予約で,複数の部屋,複数の時限が指定でき,期間は毎日,毎週,

毎月の繰返しができる。

* 取り消し

予約とほぽ同様の指定で行える。実際に取り消す前に対象の予約を表示し,

確認の上,取り消すときはパスワードを入力させて取り消すようにした。

* パスワードの変更

利用者ごとのパスワードを変更する。

* カレンダーの表示

予約のためにカレンダーを確認した

いことがあるだろうと考えて, Java-

Scriptでカレンダーを表示できるよ

うにした。フレームを使って上側に年

月とボタンを表示し,下側のフレーム

に曜日と日の表を表示するようにした

が,ブラウザによって動作が異なった。

結局Netscape3.. x, 4. x,インターネッ図 3-6 JavaScriptによるカレンダー

トエクスプローラ 4..X では何とかできたが, IE3“xではうまく行かなかっ

た。

予約・表示できる部屋をデータベースに登録しであるものをそのまま使うよ

うにするためには最初に表示するファイルを静的な htmlファイルにせず、に,

SSIかCGIを使うようにすればよい。ただ,部屋の数が多くなると部屋名を整

理して表示するのが面倒になる。仮にテーブルのセルに適当に書き出してしま

OLIVE 香川大学学術情報リポジトリ

Page 21: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

61 Webデータベースアプリケーションと開発環境 61ー

うと図 3-7のようになって乱れてしまう。利用者がどのような環境で表示して

いるかわからないときちんと表示することは難しい。

図 3-7 予約できる部屋をデータベースから取り出して適当に表示した場合

IV Windows 95における WebDatabase環境

ここまでは PC-UNIXの上での話であったが,実際にシステムを試作,開発

するためにいつも公開中のサーバ上で行うわけにも行かず,また,個人的には

自宅でも作業しなければならないという事情もある。通常使用している Win-

dows 95マシン上でアプリケーション開発ができれば便利である。そこでここ

では, Windows95上で同様な WebDatabase環境を構築するのに必要な情報

について述べる。個人で小規模な WebDatabaseアプリケーションを作ってみ

たいと考えている人にも参考になるであろう[鈎叫](2 )

データベースはマイクロソフト社の Access97を用いることにする。実際は

ODBCドライパのあるデータベースなら何でもよい。 Webサーバはいくつか

考えられるが,まずはマイクロソフト社の製品でASPが利用できる環境を考

えてみた。 Windows95で利用できる WebServerはPersonalWeb Serverと

(2) ASPをインストー1レすると OLEDBがインストーJレされるので、 ASPでデータベー

スを使うだけなら Access97はなくてもよい。

OLIVE 香川大学学術情報リポジトリ

Page 22: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

62 香川大学経済論議ー 62

FrontPage Web Serverがある。このうち FrontPageWeb Serverはデータ

ベースと接続するためのダイナミック HTMLの機能をもっていない。した

がって{吏えるのは PersonalWeb Serverだけとなる。

表 4-1 ASPに必要なもの

Personal Web Server ASP Access 97

これだけあればマイクロソフト社が推進している ActiveServer Pagesの機

能を試すことができる。 WindowsNTWorkstationであれば PersonalWeb

Serverではなく PeerWeb Serverが利用できる。

4“1 Personal Web Server

Personal Web Server (PWS)には WebServerとFTPServerの機能が含

まれている。 WebServerとしては小規模ながら CGI,IDC, ASPを利用する

ことができる。 SSIについては残念ながら非include機能だけしか利用でき

ない。

PWSはWindows95の追加モジュールとして以下のサイトからダウンロー

ドできる他,マイクロソフト社のインターネット関連ツールのソフトウェア

CD-ROMにも含まれている。

表 4-2 PWSの入手先

http://www microsoft com/japan/win 95/modules/pcatnew htm Microsoft Visual InterDev LO FrontPage 98

(3) SSIの他の機能も使いたければOmniHTTPd[お]など、 SSIに対応したサーバを利用するしかない。 WindowsNTのPeerWeb ServerはSSIに対応している[34]。

OLIVE 香川大学学術情報リポジトリ

Page 23: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

63 Webデータベースアプリケーションと開発環境 -63-

インストールしてからマシンを再起動するとPWSが自動的に起動し,タスク

トレイにアイコンが表示される。これをダブルクリックするか,右クリックす

ることにより各種の設定ができる。PWSは常に使うようなものではないので,

起動は手動にしておくことが多いと思われるが,その時はコントロールパネル

のパーソナルWebサーバーアイコンから起動できる。ただ

し,実際に Netscape等のブラウザ、からアクセスするには

ネットワーク設定を適切に行わなければならない。

4..2 ネットワーク設定

寵図 4-1 PWS

実際にネットワークに接続していないパソコンの場合でもネットワークの設

定をしなければならない。通常の HTMLファイルなら Webサーバを使わず、に

ローカルファイルを直接表示できるが,ダイナミックな HTMLはサーバ経由

で表示する必要があるので, Webブラウザ、がサーバにアクセスできるようにし

なければならない。

色々な環境が想定されるが,ここではLAN接続していないパソコンを想定す

る。その場合,次の 2つのドライパは必須である。

* 夕、イアルアップアダプタ

* TCPjIPプロトコル

設定はコントロールパネルのネットワークで行う。

ユーザ情報には適当にコンピュータ名とワークグループを設定しておく。

ブラウザ、からはこのコンピュータ名で接続することにする。

アクセス権の管理は共有レベルのアクセス管理にしておく。

TCPjIPプロパティの IPアドレスは何か設定しておく。どこにもつないでい

ないので何でもよいのだ、が,自由に使用できる192..168.L xxがよいだろう。 xx

は1~254 の聞で適当に決めればよい。その他は特に変更する必要はない。

夕、イアルアップでプロパイダに接続する場合は,この IPアドレスはrIPアド

OLIVE 香川大学学術情報リポジトリ

Page 24: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-64ー 香川大学経済論叢 64

レスを自動的に取得」にしておかないとうまく接続できなくなるので注意が必

要だ。その度に設定を変更するのがいやな場合は, IPアドレスを付けないで

localhostとして接続すれば接続できないことはないが,名前で接続した方がよ

いだろう。その場合は hostsファイノレを用意する。 windowsディレクトリの中

に hosts..samというサンプルがあるので,それを hostsにコピーし, localhost

の次に IPアドレスとホスト名(コンピュータ名)を追加する。

もし LANアダプタがあるなら, IPアドレスはそのアダプタに付けておけば

よいのでト便利である。夕、イアルアップアダプタの IPアドレスは自動的に取得

するにしておけばよい。この設定で,もし ODBCドライパがすでにインストー

ノレしであれば, IDCjHTXによるダイナミック HTMLを使用することができ

るが, ODBCドライパなどのパージョンが違っていたりするとうまくデータ

ベースに接続できなかったりするので,ここでASPもインストールしてしま

うことにする。

4..3 Active Server Pages

これを利用するためには, ASPパッケージをインストーノレする必要がある。

これも MicrosoftのWebsiteからダウンロードできるが,ファイルが 7MB

近くあるので, CD-ROMを用意したほうがよい。

表 4-2 ASPの入手先

http://www. microsoft com/japan/products/iis/download/ Microsoft InterDev その他、雑誌付録の CD-ROM

ASPをインストーノレすると, ODBC3.0 (AccessとSQLServerドライノてを

含む) ADOおよびOLEDB,オンラインマニュアlレおよびサンプルページコ

レクションがインストーノレされる。 PWSを起動してブラウザでアクセスする

とASPサンプノレを見ることができる。

PWSとODBCに関連しては,いくつかのトラブルが発生するかもしれな

OLIVE 香川大学学術情報リポジトリ

Page 25: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

65 Webデータベースアプリケーションと開発環境 65

い。ライブラリモジュー1レのパージョンが違っていたりするとうまく行かない

ことがある。他のソフトウェアをインストーノレしたことによりエラーが発生す

るようになる場合もある。筆者の環境では ODBC32を聞いて閉じただけで次

のようなエラーが発生する。実害はないようなのだが気持ちが悪い。

図 4-2 ODBC32を閉じるときのエラー

システムを元に戻し,一つずつソフトウェアを再インストールして行ったら,

Netscape Communicatorをインストーノレしたところでこのエラーが再現し

た。しかたなく Netscapeをインストールしないで使っていたが,いつのまにか

またこのエラーが出るようになっていた。どうせエラーが出るのならとNets-

capeも再導入したそのパソコンで本稿で紹介したアプリケーションを開発し

ている。

4..4 Perl for 羽Tin32

CGIをPerlで書きたいなら Perl for Win 32をインストーノレする。実は

PWSはこれを使わずに ISAPIから Perlを実行する Perlis..dllがあればよい

のだが,コマンドから Perlを実行したいときもあるので,これもインストール

した方がよい。その他Perl関連では ASPでPerlScriptを使うためのモジュー

OLIVE 香川大学学術情報リポジトリ

Page 26: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

66 香川大学経済論叢 66

ル, Perlから ODBCドライパにアクセスするためのモジコールもインストー

ルする。

表 4-3 導入する Perl関漣モジュール

Perl for Win 32 PW 32 i 316. exe Perlis dll PIISi 316.. exe PerlScript PlSEi 316 exe Perl ODBC 羽Tin32 odbc v 970208 zip

これらのファイルは Perlのホームページまたはミラーサイトに掲載されて

いるP なお, Perl Win 32 odbcは展開した後,安定版ではなく, beta版の方を

使うようにする。安定版ではエラーが出て使えなかった。

4..5 Windows 95における WebDatabaseアプリケーションの開発

PWSを利用して WebDatabaseアプリケーションを作成する手法として

は, IDC, ASP, CGIを使う 3つが考えられる。このうち IDCとASPはとも

にマイクロソフト社が開発したものである。 IDCによる方法は簡単ではある

が,機能が乏しく適用範囲が限定される。同社も現在は ASPを推進しているの

で,まず ASPから検討してみる。

ASPを使う場合はスクリプト言語を選択できる。 Visual Basic風の

VBScriptが標準であるが, ASPパッケージには ]avaScriptを処理する機能

が含まれており,そのままで]avaScriptが使用可能である。ただし,マイクロ

ソフト社は JScriptと呼んでいる。更に PerlScriptのためのモジューノレを追加

したので,ここでは PerlScr均tも利用できる。

4..5 1 ASPのスクリプト

・主要スクリプト言語の指定

ASPファイルの先頭に次のように指定する。

OLIVE 香川大学学術情報リポジトリ

Page 27: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

67 Webデータベースアプリケ}ションと開発環境 -67-ー

<% @ LANGUAGE =スクリプト言語名%>

スクリプト言語名は, VBScrit, JScript, PerlScriptの一つを指定する。デ

フォルトは VBScriptである。指定したスクリプトの文は ASPファイルの中

で区切り記号<%と%>で囲んで記述する。この中では主要言語だけが使え

る。手続きを定義する場合はくSCRIPT>タグを使う。主要言語ならく% %>

の中でも定義できるが,作法としてはしない方がよい。

くSCRIPTLANGUAGE=スクリプト言語名 RUNA T = Server>

くjSCRIPT>

このタグの中では独立に言語を指定できるので,異なる種類の言語の手続き

を混在させることができる。これを置く場所はくHTML>の前か,くjHTML>

の後が無難である。

• Browserへの出力

ASPは基本的に HTMLファイルであるので,通常の記述はそのままブラウ

ザに送出される。

サーバ側で処理した変数の内容を出力するときは

<% =変数名%>

の形で HTMLテキストの中に埋め込めば,変数の内容が送出される。スクリプ

トの中で直接出力するときは, Responseオブ、ジ、ェクトのWriteメソッドを使う

ことができる。

Response Write変数

OLIVE 香川大学学術情報リポジトリ

Page 28: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

68ー 香川大学経済論叢 68

• Browserからの情報を取り出す

ブラウザから GETで送られた情報は, Requestオブジェクトの QueryStr-

ingコレクションで, POSTで送られたものは Formコレクションで受け取る

ことができる。

usemame = Request QueryString ("N AME")

usemame = Request. Form("NAME")

• ADOからデータベースにアクセスする。

VBScTIptからの基本的な使い方を示す。

(1) Set db = Server CreateObject ("ADODB.. Connection")

(2) db..Openデータベース名

(3) Set 1S = Server CreateObject (" ADODB“Recordset")

(4) rs.. Open SQL, db, 3, 3

(5) do while not rs.. eof

(6) Response. Write rs.. Fields ("フィールド名")などで書き出す

(7) rs,. MoveN ext

(8) loop

(9) rs.. Close

(10) dh Close

(1)はADODB..connectionオブジェクトを作成する。

(2)はデータベースをオープンする。データベース名は ODBCデータソース名で

ある。

(3)はSQL文の結果を取り出すための ADODBRecordsetオブジェクトを作

成する。

(4)はSQLで与えられた SQL文を実行し,結果をレコードセットに設定する。

OLIVE 香川大学学術情報リポジトリ

Page 29: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

(

i

i

69 Webデータベースアプリケーションと開発環境 -69-

(5)~(8)はレコードセット内の全レコードを順に処理している。

(7)は次のレコードへ進む。

(9), (10)はレコードセットとコネクションをクローズする。

SQLを実行するには Executeメソッドを使って次のようにすることもでき

る。

Set rs = dh. Execute (SQL)

ただし,実際にこれを使ったところ,返されたレコード件数を取り出す

rs.. RecordCountが Oか-1にセットされるだけで,正確な件数が取り出せな

かった。先にレコードセットオブジェクトを作成しておく方法では正確な件数

が取り出せる。

4..5..2 ASPスクリプト言語の違い

VBScriptによる書き方は ASP付属のオンラインマニュアノレに詳しく記述

があり,文献[ぬ]もあるが, JScriptとPerlScriptから ActiveXコンポーネント

を使う方法については記述がなく,文献も少ない。 PerlScriptでは配布パッ

ケージにサンプノレが付いているだけで言語仕様の記述すら見つからなかった。

• VBScript

すべて大文字と小文字の区別はない。

メソッドや手続きを呼び出すときに括弧が必要な場合とそうでない場合があっ

て混乱する。

• JScript

オブジェクト名は大文字小文字が区別されるが,メソッド,プロパティはどち

らでもよい。

メソッド/手続きの呼び出しは( )が必要である。 プロパティのときはもちろ

OLIVE 香川大学学術情報リポジトリ

Page 30: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-70ー 香川大学経済論叢 70

ん括弧を付けてはいけない。以下, 0は正常に動作することを, xはエラーまた

は異常な動作をすることを表す。

o var db = Se町rveぽrιCreat旬eOb同ject("ADODB" Connectiωonが1"

o var r陀s= Se釘rver..CreateOb同lIect(" ADODB. Recordset"

o db., open ("we油bdb勺

o db., Open ("webdb")

o Response" Write () o Response" write () X response" Write ()

o rs“MoveNext ()

X rs" MoveN ext

o rs"EOF o rs" eof X rs" EOF ()

• Per1Script

オブジェクト名にはSを{寸ける。

オブジェクト内の要素を参照する場合は一>を使う。

オブジェクト名は大文字小文字の別があるが,メソッド,プロパティは区別が

ない。

メソッドプロパティ共に最後の()は付けても付けなくてもよい。

$ Request-> Form ( )の後に'一>Item'が必要である。付けないと何か違うも

のが返される。

o $db = $Server->CreateObject ("ADODB. Connection"); x $db = $server-> CreateObject (" ADODB Connection") ;

o $db->Open ("webdb") ;

OLIVE 香川大学学術情報リポジトリ

Page 31: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

71 Webデータベースアプリケーションと開発環境 -71ー

o $rs = $Server-> CreateObject (" ADODB. Recordset") ;

o $rs->Open ($sql, $db, 3,3);

o $rs-.> MoveNext ;

o $rs->MoveNext (); o $rs一>movenext;o $rs->EOF o $rs->EOF () X $Request->Form ("NAME");

o $Request-> Form ("NAME勺 >ltem;

4..5..3 CGI

ここでは PerlとPerlのODBCドライパを使う例を紹介する。

UNIXで MySQLに接続する場合と違うのは, ODBCドライパを使うところ

と, MySQLとAccessのSQLが違うところである。

use Win 32 :: ODBC;

$db = new Win32 :: ODBC ($dbname)

$db-> Sql (SQL) ;

while ($db-> FetchRow ())

@rec = $db-> Data ;

print "@rec¥n"

$dbー>RowCount () ;

$db-> Close () ;

OLIVE 香川大学学術情報リポジトリ

Page 32: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-72- 香川大学経済論叢

次に MySQLとAccessのSQLの違いをまとめておく 0

・数値の指定

72

MySQLでは数値を引用符で囲んでも閉まなくてもよいが, Accessでは引用符

で閤んではいけない。

room id =' 2 ' MySQLは0,Accessは×

room id= 2 MySQL, AccessともにO

- 日付の指定

MySQLはrsdate='1998-04-01'のように指定するが, Accessでは rsdate=非

1998-04-01非のように指定する。

rsdate = '1998-04-01' 乱1ySQLのとき

rsdate=非1998-04-01非 Accessのとき

• date型

MySQLには日付時刻に関するデータ型として DATE, TIME, DATETIME

があれそれぞれ保持するデータが異なっている。一方 Accessはデータ型とし

ては日付/時刻型一つだけで,表示するときに様々な形式を指定することができ

る。

MySQLでDATE型項目からデータを取り出すと yyyy-mm-ddとなるが,

Accessの日付/時刻型では,それに日付だけをセットしてから取り出すと yyyy

-mm-dd 00: 00: 00になる。

4..5“4 Windows 95での PC-UNIXアプリケーションの開発

スタンドアロンの Windows95でPC-UNIX環境のアプリケーションを開

発するために作成したものである。 Perl自体は同じなので,違うところは

MySQLのAPIとWindowsのODBCの違いである。これらの違いを吸収する

OLIVE 香川大学学術情報リポジトリ

Page 33: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

73 Webデータベースアプリケーションと開発環境 -73-

ために新しい手続きを作ることにした。作成した手続きは次の 5つである。

DBOpenO

DBQueryO

DBFetchO

DBRowCountO

DBCloseO

どちらのインターフェイスを使うかは変数 $mysqlにOか 1を設定して選ぶ

ことにした。use文は次の 2つを使い分けなければならないが,これは条件文で

判定してどちらかを実行するという訳には行かなかったので,どちらか一方を

コメントにすることにした。

書use恥lysql;

use Win 32 :: ODBC;

本稿の演習室予約アプリケーションはこのライブラリを使って自宅のノート

パソコンで開発したものである。プログラムリストは付録 2に掲載した。

V むす び

ある程度の実用に耐え得る WebDatabaseシステムが,少ない費用と手間で

構築できることがわかった。また,ライセンスフリーの SQLサーバが機能と性

能面で実用レベルに達していることも確認できた。日本語に完全に対応してい

る訳ではないが,簡単な工夫により,実用上はほぽ問題なく日本語が使えるこ

とを確認できた。 PC-UNIX環境では必要なソフトウェアはほとんどライセン

スフリーで揃えることができるようになっており, Windows環境への移植も

進んでトいる。費用の面からは PC-UNIXが断然有利である上,下手に商用の

UNIXを導入するよりはむしろ使いやすい面がある。

OLIVE 香川大学学術情報リポジトリ

Page 34: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-74ー 香川大学経済論叢 74

Web Databaseアプリケーションを実際に作成してみて,面倒だ、ったのは

WWWサーバとデータベースを連携させることより, WWWブラウザによる

ユーザインターフェイスを作成する部分であった。その理由としては, HTML

の仕様が貧弱なこと,ブラウザの完成度が低く,ブラウザによって,また同じ

ブラウザ、でもパージョンによって,表示と動作が異なることが多いことがあげ

られる。CGIとASPを比較すると,ASPはHTMLファイルにスクリプトを埋

め込む方式なので,最初はやさしそうに感ずるが,少し手の混んだ処理をしよ

うとすればほとんど同じような手間である。ただ実現手法としては ASPの方

には少々スマートさがあるのに対して, CGIは腕ずくでやっているという感じ

である。

スクリプト言語について言えば, Perlはさすがに実用指向の言語だけに機能

が豊富である。個人的には Perlの言語仕様は好きではないが,やりたいことは

とりあえず何とかなりそうだという気がする。UNIXとWindows,Macでも同

じPerlが使えるというのも心強い。 JavaScriptはオブジェクト指向で,きれい

なプログラムが書けるが,文字の編集機能が弱いのではないかと感じた。

VBScriptは言語が VisualBasic風ではあるが, Visual Basicの限られた機能

しか持っておらず使いにくい。簡単なものなら JavaScript,複雑なものなら

Perlで書いた方がよさそうである。ただ, ASPでは書き出し部分はほとんど

HTMLへの埋め込みで済ませられるので,複雑な処理をしないなら言語の違

いはそれほど大きくはない。

データベースとの接続部分は,現在も種々の手法が開発されている。 Win-

dows環境では ODBCが先行しているが, JDBCも利用可能になっている [15]。

今後は JavaとCORBAが期待できそうである [35]。

参考文献

[ 1 ] WindowsNTサーバの価格, http・//www microsoft. com/iapan/products/ntser-

ver/ver 40/howtobuy /price htm

[ 2 ] rデータベース管理システム~,日経バイト特別増刊号開発ツールパーフェクトガイド

OLIVE 香川大学学術情報リポジトリ

Page 35: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

75 Webデータベースアプリケーションと開発環境 -75-

pp 238山 261,1997年 11月

[ 3 J 小山裕司,斉藤靖, "Linux 入門~, トッパン, 1996年 10月

[ 4 J トップマネジメントサービス, 'Linuxサーバ構築入門,1,ローカス, 1998年4月

[5 J 宮寄忠臣, 'FreeBSD入門キット AT互換機版h 秀和システム, 1996年 10月

[6 J あさだたくや,天}I[修平他, 'FreeBSD 徹底入門~,吻泳社, 1997年6月

[7] 青山順一,小倉英俊,高橋正一, ~FreeBSD でインターネットサーバを立ちあげる 1 ,

ディアート, 1997年 12月

[8 J はねひでや,ゃまだあきら, 'Red Hat Linuxユーザガイド1,レーザー 5出版局, 1997

年 4月

[9 J 林雅人, 'Red Hat Version 4,2 LINUX入門キット 1,秀和システム, 1997年 8月

[10J Debian GNU Linux開発者の会, 'Debian GNU/LINUX L 3., 1~ , LASER 5

[11J Scott Stone (sstone@pht com), 'Red Hat LinuxをISP/Serverにして使う場合の

検討1,Red Hat Linux 4,2添付ファイ Jレ

[12J ApacheのWWW公式サイト http://wwwapache, org/

[13J 目立西武ソフトウェアの調査, qPドメインにおける WWWサーバ・シェアh

http://www hitachiィISco" jpjw 3 suyvey /Iatest/

[14J MySQLのホームページ, http://www, tcx se/日本を含め世界各地にミラーサイト

がある。日本のミラーサイトはhttp://www.happysizeco.jp/mysqlj

[15J Pratik Patel & Karl Moss, 'JDBC入門1,International Thomson Publishing

Japan, 1997年 11月

[16J mSQLのdownloadsite, ftp: / /bond" edu au/pubjMinerva/msqljmsqI2/

[17J PostgreSQLのホームページ, http://www postgresqL org/ ,ダウンロードサイト

ftp: / /ftp jaist ac, jp/pub/dbms/postgres 95

[18J フリーなデータベースソフトウェアについての情報,http://bunny cs, uiuc edu/sig-

mod/ databaseSoftware/

[19J MySQL Reference Manual for version 3,, 21 26-gamma, http://wwwtcx.se/

Manual chapterj

[20J LinuxThreads 0, 6, http://www tcx se/Downloads/Linuxjlinuxthreads-0" 6

tar gz

[21J Randolph Bentoson著,檎山正幸監訳, qNSIDE LINUX レーザー 5 出版局~, 1997

年 12月

[22J Perlのホームページ, http://www perl com/

[23J Randal Schwartz著,近藤嘉雪訳初めての PerlJ,ソフトパンク, 1995年6月

[24J Larry Wall箸 RandalL Schwartz著近藤嘉雪訳 rPer!プログラミングh ソフト

パンク, 1993年 2月

[25J フォレストそのまま使える CGIJ,AI出版, 1997年 9月

OLIVE 香川大学学術情報リポジトリ

Page 36: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

-76ー 香川大学経済論叢 76

[26J Steven E Brenner, cgi-lib pl 2.15, http://cgi-lib. stanford.. edu/cgi-lib/, 1997

[27J Kazumasa Utashiro, icode pl: Per1 library for Japanese character code conver-

sion, 1997年 12月, ftp: / /ftp iij ad jp/pub/UJ/dist/utashiro/per1/jcode. pト2..6

[28J Per1 DBIのWebページ, http://www. hermetica com/technologia/DBI/

[29 J J oseph Sinc1air/Carol McCullough著,荒井美千子監訳, 'Webデータベース導入ガ

イド,ソフトバンク~, 1997年 5月

[30J 大津文孝, 'WindowsNT 4. 0 Webアプリケーション構築ガイド Phase1 IIS + Access よるデータ連携j,ソフトパンク, 1997年4月

[31Jプロジェクトハウス, 'Access 97によるインターネット・ビジネス実伊jガイド j,カット

システム, 1997年 7月

[32J 青山円, 'Access 97 で作るイントラネット実践構築ガイド~,自由国民社, 1997年 9月

[33J Omnicron Technologies Corporation, OmniHTTPd alpha 6, http://www fas

harvard. edu/ -glau/httpd/, 1998

[34J Microsoft Peer Web ServerのSSI,ASP付属のドキュメントファイル, http・//

localhost/IASDocs/ ASPDocs/ssi/

[35J ロパート・オーファリ,ダン・ハーキー著,並河英二,水野貴之,池浦規之訳, iJava

& CORBA C/SプログラミングJ,日経 BP社, 1997年 11月

付 録

付録1 日本語文字化けを防ぐプリプロセッサ

sub jprep {

local( @new) ;

local( @orig)ニ unpack("C* ", $ [OJ);

local($i, $j, $k);

$j=O;

for($i=O; $i< =料orig;) {

$ k = ($orig [$iJ > =Ox81) && ($orig [$iJ < =Ox9f) 11($orig [$iJ > =OxeO && $orig [$iJ < = Oxfc);

$new [$j++ J=$or抱[$i++ J ;

if ($k) {

if($orig [$iJニ =Ox5c)

$new [$j + + J =Ox5c;

$new [$j + + J =$orig [$i + + J

OLIVE 香川大学学術情報リポジトリ

Page 37: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

77 Webデータベースアプリケーションと開発環境

pack(" C *", @new);

付録2CGIでMySQLとAccessの両方にアクセスするためのスクリプト

者!jusr/perl/bin

非useMysql; use Win32 : : ODBC; require 'jcode, pl' ;

require ' cgi -lib “pl' ;

$mysql=O; $dbname= "webdb";

sub DBOpen

if($mysql) { $host = "localhost"; if( ! ($dbh=Mysql->Connect($host, $dbname))) {

&statusmsg("$Mysql:: db errstr");

else { if( ! ($db = new Win32:: ODBC [$dbname))) {

&statusmsg("ODBC Error: Create Object") ;

sub DBQuery

if [$mysqlJ { if ( ! ($sth=$dbh->Query($_ [0]))) { &statusmsg(可Mysql::db _ enstr");

else {

-77-

OLIVE 香川大学学術情報リポジトリ

Page 38: データベースアプリケーションと Web 開発環境shark.lib.kagawa-u.ac.jp/kuir/file/5582/20190528133506/... · 45 Webデータベースアプリケーションと開発環境

78 香川大学経済論叢

$db->Sql($ [ 0 J) ;

sub DBFetch

if($mysql) { return( @recニ $sth-> FetchRow()) ;

else { if(my $sts=$db一>FetchRow()){

@rec=$db->Data;

else { @rec=O ;

return $sts ;

sub DBRowCount

if($mysql) { return $sth-> numrows;

else { return $db-> RowCountO;

sub DBClose

if($mysql) {

else { $db-> CloseO ;

78

OLIVE 香川大学学術情報リポジトリ