いよいよ本連載のかなめであるデータベースアプリケーション・プログラミングについて解説するときがきた。まず手始めとして、PerlでMySQLを操作する方法を紹介する。Perlを使う際のポイントは、Perl用汎用データベースAPIであるDBIのマスターにある。
Perlは、いまやスクリプト言語の代表格として、とりわけWebアプリケーションで利用されています。また、その手軽さから些細な用を済ませるための使い捨てスクリプトをPerlで作る方も多いようです。昔はshスクリプト、いまはPerlといったところでしょうか。このPerlが持つ強力な文字列処理とデータベースが連携できれば、さらに強力なスクリプト言語になります。
第3回の次回予告で紹介したファイルのインストールはお済みでしょうか? おさらいすると、PerlでMySQLを利用するには以下のファイルが必要になります。
DBD/DBIモジュールとData-ShowTableは、一般的なLinuxディストリビューションならばすでにインストールされている可能性があります。
$ rpm -qa | grep perl
でインストールされているか確認しましょう。インストールされていない場合は、インストールCDまたは各ディストリビュータのサイトからパッケージを取得することもできますが、ここではソースからインストールする手順を説明します。
上記のサイトから、現時点での最新版であるDBI-1.14.tar.gzとData-ShowTable-3.3.tar.gzをダウンロードして、適当な作業ディレクトリで展開します。
$ tar XXXX.tar.gz $ cd XXXX
後はREADMEに書かれているとおりに進めます。
$ perl Makefile.PL $ make $ make test # make install
(注)“$”は一般ユーザー、“#”はスーパーユーザーのプロンプトです。
データベースが変わるたびに新しいやり方を覚えるのでは効率が上がりません。しかし、データベースが変わっても同じ方法でプログラムできれば作業が効率化します。Windowsにはそれを実現する手段としてODBCがあり、Javaの場合にはJDBCがあります。Perlも、DBI/DBDを使うことで、それが実現できます。
DBIはデータベース非依存の機能や変数を提供するAPIです。その非依存性を実現するためにDBIの下層にDBDがあり、それぞれのデータベースと連携する低レベル処理を行っています。例えば、今回取り上げているPerlスクリプトをMySQLではなくPostgreSQLとの連携に変更したい場合は、
$db = DBI->connect('DBI:mysql:データベース名:サーバ名', ユーザー名, パスワード);
を
$db = DBI->connect('DBI:Pg:データベース名', ユーザー名, パスワード);
のように置き換えるだけです。もちろんPostgreSQL用のDBDがインストールされている必要があります。
なお、今回紹介しているDBIのメソッドはごく一部にすぎない。ほかのメソッドについては、
http://member.nifty.ne.jp/hippo2000/perltips/dbimemo.htm
を参照していただきたい。
http://www.mysql.com/Downloads/Contrib/から、現時点での最新版であるMsql-Mysql-modules-1.2215.tar.gzをダウンロードし、展開します。
$ tar xvfz Msql-Mysql-modules-1.2215.tar.gz $ cd Msql-Mysql-modules-1.2215
次にMakefile.PLスクリプトを実行します。
$ perl Makefile.PL
ここで少し質問に答える必要があります。
Which drivers do you want to install? 1) MySQL only 2) mSQL only (either of mSQL 1 or mSQL 2) 3) MySQL and mSQL (either of mSQL 1 or mSQL 2) 4) mSQL 1 and mSQL 2 5) MySQL, mSQL 1 and mSQL 2 Enter the appropriate number: [3]
ここでは1を選択してください。後の質問には[Enter]キーを押してデフォルトの値を使用します。質問が終了したらインストールのための最後の処理を行うのですが、“make test”でローカルサーバへの接続テストを行うのであらかじめMySQLを立ち上げておきましょう。そして、
$ make $ make test # make install
を行えば必要なプログラムのインストールは完了です。
Copyright © ITmedia, Inc. All Rights Reserved.