mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
Xprioriで始めるXML DBプログラミング
~リレーショナルデータベースからXML DBへのデータ移行を進めよう~
ユーザがデータ構造を定義するような、自由度の高いシステムの設計開発に携ったことのある方でしたら、XMLデータベースへの関心は高いのではないでしょうか。
XMLは人間が理解しやすいデータ構造です。従来RDBMSでは無理やり実現させていたり諦めたりしていたデータ構造も、正規化を繰り返したあげくクライアントとの意思疎通に悩んだり、改修の案件が発生する度に当時の議事録をひっくり返して頭を悩ませたりすることも、XMLデータベースなら柔らかく解きほぐしてくれるかもしれません。
とはいえ、XMLデータベースは、これまでノウハウを蓄積してきたRDBMSとは本質的に異なるものです。プログラムからの利用法も異なりますので、スキルを身につける必要があります。元々理解し易い構造ですから、自転車に乗れるようになるほど難しいことではありません。
幸いにして、私たちは非商用利用ならば無償で提供されているXprioriを入手することができます。Windows版・インストーラ付きでセットアップも簡単にできますので、XMLデータベースの学習には最適です。
本稿では、比較的準備の容易なPerl言語(ActivePerl)の開発環境構築から、CGIによるWebアプリケーションにおける一連のXMLデータベース操作までをガイドしていきます。
是非Xprioriをお手元のWindows環境にセットアップして、XMLデータベースを体験してみてください。
それでは早速開発環境を構築しましょう。インストールはAdministratorsグループのユーザで行う必要がありますのでご注意ください。
■ Apacheの入手とインストール
Apache HTTP Serverはhttp://www.apache.jp/からリンクを辿って、ミラーサーバからダウンロードします。筆者がダウンロードしたときのファイル名はapache_2.0.55-win32-x86-no_ssl.exeでした。
Apache2.2.0がリリースされましたが、筆者にもノウハウがありませんので、はやる気持ちをグッとこらえてバージョン2.0.55をダウンロードしました。
[Tips] ファイル名が示すとおり、一般に配布されているWindows版Apacheのコンパイル済みバイナリはSSL(HTTPS)に対応していません。 Xprioriを利用する分には必要が無いかもしれませんが、商用サービスとしてNeocoreXMSを利用する場合などSSLを利用する必要がある場合には、ソースコードをコンパイルする他に、http://hunter.campbus.com/で配布されているコンパイル済みバイナリを利用することもできます。 コンパイル時にSSL通信ライブラリであるOpenSSLを必要とするため、配布されているものを利用する際にはバージョンを合わせる必要がありますのでご注意下さい。 |
インストーラを起動し、タイトル>License Agreement>Read This Firstと読みながら進めていきますと、Server Informationを設定する画面になりますので、ドメイン名、ホスト名、メールアドレスを入力し、ラジオボタンは上(PCを利用する全ユーザ対象、サービスとして80番ポートで動作)を選択します。
注意:1 注意:2 |
次のSetup TypeではCustomを選択します。
インストール先を指定します。どこか空き容量のあるドライブのルートディレクトリ直下のusrというディレクトリを使うよう変更します。
この後は画面の指示に従ってインストールを完了させます。
■ ActivePerlの入手とインストール
ActiveState社(http://www.activestate.com/)が配布しているActivePerlを入手します。
http://www.activestate.com/Products/ActivePerl/にアクセスして、Free DownloadからWindows用のActivePerl(MSI版)をダウンロードします。筆者がダウンロードしたときのファイル名はActivePerl-5.8.7.815-MSWin32-x86-211909.msiでした。
インストーラを起動し、タイトル>End-User License Agreementと読みながら進めますと、Custom Setup画面になりますので、インストール先を、先ほどApacheをインストールしたディレクトリを再び指定します。
続くChoose Setup Options画面で、オプションを設定します。筆者はエディタで「.pl」のファイルを開きたいことと、IISとPerlの組み合わせを使用しないことから、上から二つのチェックボックスだけをオンにしました。
この後は画面の指示に従ってインストールを完了させます。
■ ここまでの確認
ApacheとActivePerlがうまくインストールできたか確認してみましょう。
ブラウザを開いて「http://localhost/」にアクセスしてみてください。「Apache インストール時のテストページ」が表示されればApache HTTP Serverは動作しています。
表示されない場合は、タスクトレイにApache Monitorのアイコンが追加され、緑色の三角形が表示されていることを確認してください。
WindowsXP SP2では、Apache HTTP ServerがWindows ファイアウォールにブロックされているかもしれません。
次にコマンド プロンプトを開き、ActivePerlのサンプルを実行します。
>perl e:\usr\eg\example.pl Hello from ActivePerl! |
いかがでしょうか。うまくいかない場合は、PATHやインストール先を確認してください。
■ Xprioriの入手とインストール
次はいよいよXprioriをインストールします。
XMLDB.JPのダウンロードページからWindows版をダウンロードして実行してください。
Introduction>License Agreement>Choose Install Folder>Pre-Installation Summaryと進めます。(インストール場所はどこでも構いません。)
インストールが終わりますと、XprioriのWebベースの管理画面にアクセスするためのConsoleユーザのアカウントを作成する画面になりますので、パスワードを入力します。
次に、ブラウザが起動し、ライセンスファイルを取得するための画面が表示されますので、画面の指示に従ってライセンスファイルを入手します。メールで届いたライセンスファイルを画面の指示に従ってインストールして、次に進みましょう。
続いてデータベースを作成します。データベース管理者(Administrator)のパスワードを決めて入力し、Create Databaseをクリックします。
Xprioriのロゴが高速回転をやめ、「Status: Database Created」と表示されれば作成完了です。次の画面でNeoServerを起動してインストールを完了しましょう。
■ もう一息 ~ ApacheのCGI設定と再起動
インストール直後のApache HTTP ServerはCGIが動作するようになっていませんので、設定ファイルを書き換えます。
Apacheをインストールしたディレクトリ配下のApache2\confディレクトリにある、httpd.confをエディタ(無ければメモ帳)で開き、以下の設定を変更します。
筆者と同じバージョンのApacheでしたら行番号が参考になります。表中では「e:\xmldb\htdocs」というディレクトリにWebアプリケーションを配置するものとしていますが、皆様の環境に合わせて適宜ご変更下さい。
ところで、行番号452と462の2つの設定は、サーバ情報を外部に公開しないための設定です。NeocoreXMSを使ってインターネットに公開するサーバを構築する際には、ここに掲載するより更に慎重なセキュリティへの配慮が必要です。(SSLの利用、アクセス制限、アクセスログの詳細化、icons/manual表示の削除などApacheの設定だけでなく、ファイアウォールや侵入検知システム(IDS)等の機器の導入をお勧めします。)
行番号 | 変更前 | 変更後 |
228 | DocumentRoot "E:/usr/Apache2/htdocs" | DocumentRoot "E:/xmldb/htdocs" |
253 | <Directory "E:/usr/Apache2/htdocs"> | <Directory "E:/xmldb/htdocs"> |
267 | Options Indexes FollowSymLinks | Options ExecCGI |
321 | DirectoryIndex index.html index.html.var | DirectoryIndex index.cgi index.html |
452 | ServerTokens Full | ServerTokens Prod |
462 | ServerSignature On | ServerSignature Off |
765 | #AddHandler cgi-script .cgi | AddHandler cgi-script .cgi |
ファイルを保存して、上記ディレクトリを作成したら、Apacheを再起動してみましょう。タスクトレイのApache Monitorアイコンをクリックして、「Apache2」をポイントし、「Restart」をクリックします。
確認のために、先のディレクトリ(筆者の環境ではe:\xmldb\htdocs)に、「index.cgi」というファイルを作成します。ファイルの内容は下記のようにしてください。
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello CGI!"; exit; |
ファイルを保存したら、ブラウザを開いて「http://localhost/」にアクセスしてみましょう。期待した結果が得られましたでしょうか。
うまくいかないときは、Apacheのログファイルを確認します。usr\Apache2\logs配下にerror.logファイルがあります。きっとエラーが出力されていますので、エラーの内容を検索エンジンにかけてみてください。同じトラブルを抱えて解決した方がきっと見つかることでしょう。
■ XprioriをCGIから操作 ~ 動作確認おしまい
最後に、XprioriをCGIから操作してみましょう。これで動作確認は終わりです。
まずXpriori(NeocoreXMS)のPerlAPIをダウンロードします。Xprioriダウンロードページの下のほうからPerlAPIがダウンロードできるようになっています。
ダウンロードしたら、アーカイブを展開して出来る3つの「.pm(Perl Module)」ファイルを、先ほどApacheに設定したDocumentRootの1つ上に「lib」ディレクトリを作成して格納します。
筆者の環境では以下の3ファイルができます。
e:\xmldb\lib\NeoPerlConfig.pm e:\xmldb\lib\NeoProxy.pm e:\xmldb\lib\NeoResult.pm |
NeoPerlConfig.pmを開き、先ほどXprioriをインストールしたときに設定したAdministratorユーザのパスワードを10行目に設定(PASSWORD => ''のシングルクォート内を変更)し保存します。
htdocsディレクトリに「example1.cgi」ファイルを作成して、ブラウザから実行してみましょう。ファイルの内容は下記のものをコピー&ペーストしてください。URLは「http://localhost/example1.cgi」です。(HTML構文を端折っている点については目を瞑って頂けますと幸いです。)
#!/usr/bin/perl |
ブラウザに以下のように出力されれば正しくXprioriに接続できています。(<sid>の数字はアクセスする度に変わります。試してみてください。)
ログイン結果の欄に「Authorization Failed」などと表示されたら、それは恐らくパスワードが違うことに因るものです。また、画面が真っ白だ!「Internal Server Error」が出る!という場合には、コピー&ペーストのミス、あるいはディレクトリ構成が違うかもしれません。前出のerror.logが解決の一助となることでしょう。
NeocoreXMS 接続試験 |
さて、うまくいきましたでしょうか!?次回以降は、まず上記「example1.cgi」の解説をして、それから今回構築した環境を使ってXprioriの様々な機能に触れていきたいと思います。
▲このページのTOPへ