いよいよWebアプリケーションサーバの大本命Java Servlet/JSPの登場だ。Javaを使えばさまざまな方法でMySQLを操作できるようになる。今回はServlet/JSPの基本となるJavaアプリケーションを作成してみよう。
皆さんも一度は「アプリケーションサーバ」という言葉を耳にされていると思います。アプリケーションサーバという言葉を広義で使うなら、本連載で紹介してきたPerlやPHP、Rubyで作成したWebアプリもアプリケーションサーバの1つと説明できるでしょう。すなわち、データベース接続など、サーバ側で何らかの作業を行い、結果を動的にHTML化してWebサーバに渡すという一連の作業を処理するという意味で。
しかしながら、いままでのWebアプリケーションの手法では、提供するサービスが煩雑になった場合やアクセス数が増加した場合などに対応するのが簡単ではありません。また、ちまたにあふれるオークションサイトや会員制のホームページなどを見ても、Webを使ったサービスに求められる品質はますます高度化しています。そんな要求にこたえられる本命として登場したのが、今回紹介するJavaを使ったWebアプリケーションです。「えっ? Java」と思われた方は、Java Solutionフォーラムの記事に目を通し認識を改めましょう。Javaアプリケーションやアプレットの一番のネックは、インタプリタ(厳密には違うものなのですが)であるJava Runtimeの起動待ちですが、サーバ側で使う分には最初に一度だけ起動しておけばそれでおしまいです。
一概にJavaといっても、各クライアント側で動作するアプリケーションやアプレット、サーバ側で動作するServlet/JSPなど形態はさまざまですが、その本質は変わりません。今回は最終的にServlet/JSPからMySQLサーバへの接続を目標にしていますが、まずはインストールの手間がほとんどかからないJavaアプリケーションでMySQLサーバを操作する方法から見ていきましょう。
それからもう1つ、Javaプログラムでデータベースに接続するための布石として必ず説明しておかなければいけないものにJDBCがあります。Javaの優位性の1つに、一度プログラムを作ってしまえば、LinuxはもちろんWindowsでもMacOS Xでも動作する「Write once, Run anywhere」というのがあります。もし、そのプラットフォーム非依存性がデータベースにも拡張できたらどうでしょう。今回はMySQLが主題ですが、PostgreSQLやOracleへの接続にも同じプログラムがコードを変更することなく使えれば移植性が上がります。データベースの種類によっては独特のカラムやデータタイプを持っているため完全に非依存というわけにはいきませんが、移植を最少の手間で実現できるようにしたものがJDBCです。データベースに合わせたJDBCドライバに変更するだけで、ほかの作業の多くを共通化することができます。
LinuxでJavaを利用するには、まず下記のURLからJavaの開発環境であるJ2SDKをダウンロードします。
このページにはRPM版とshスクリプトで展開されるものの2つが用意されているので、環境に合わせた方を選びます。多くのLinuxディストリビューションはすでにJavaの開発環境がインストールされている場合がありますが、最新版を使うことをお勧めします。
ここでは例としてshスクリプト版を使用します。
まず展開するディレクトリ(例では/usr/local)に移動し、ダウンロードしたファイルを下記の要領で展開します。
# cd /usr/local # sh ダウンロードしたディレクトリ/j2sdk-1_3_1-linux-i386.bin
以降、J2SDKをインストールしたディレクトリ(/usr/local/jdk1.3.1となっているはず)を$JAVA_HOME/と表記します。
次に、JDBCドライバをインストールしましょう。ここではMM.MySQL JDBCドライバを使用します。
現時点での最新版は2.04になります。http://mmmysql.sourceforge.net/からダウンロードします。上記サイトにはバイナリのみのものと、ソースとドキュメントを含めたものの2種類が用意されています。詳しいドキュメントが欲しい場合、または自分が作成するアプリケーションに含めて配布したい場合は、ソースとドキュメントを含むものを使います。取りあえず使ってみたいという方は、バイナリのみでよいでしょう。ファイルはjarで圧縮されているので、J2SDKに含まれるjarコマンドを使って展開する必要があります。mm.mysql-2.0.4-src.jarは、適当なディレクトリで以下のようにして展開します。
$ $JAVA_HOME/bin/jar -xf mm.mysql-2.0.4-src.jar
展開したディレクトリの中にmysql.jarができているので、classpathが通っている適当なところにコピーするか、mysql.jarをclasspathに加える必要があります。ここでは毎回-classpathオプションで指定する方法を使うので特に何もする必要はありません。
今回も、第4回 「PerlでMySQL操作CGIを作ろう」で作成したATMARKITデータベースとlistテーブルを使用します。データベースとテーブルを用意していない方は、上記のページを参考にMySQLサーバ側の準備をしてください。またその際、参照権の設定をお忘れなく。
バージョン3.23.38がリリースされました。3.23.37で問題となったUJIS漢字でREPLACE()関数を使用した際の不具合が修正されています。REPLACE()関数で不具合を感じている方はバージョンアップしましょう。
先日、私も執筆に参加した『MySQL徹底入門』(翔泳社)に携わったメンバーで食事をともにする機会がありました。MySQL界の大御所といわれるとみたさんやソフトエージェンシーの村上さんも参加されており、筆者にとっては大変有益な時間を過ごすことができました。
その際、最近のさまざまなコミュニティ、とりわけオープンソースに絡んだユーザー会で新参者に対する態度が冷たいと感じるときがあるという意見がメンバーの口々から出てきました。インターネット同様、多くのオープンソースも熟成期に入り、それぞれのコミュニティもルールといわれるものが暗黙のうちにできあがっているようです。そうしたルールが新参者に対するハードルになるのか、逆に若手を育てる糧になるのか、結果はさまざまですが、幸いMySQLユーザ会はまだまだ創生期です。これからデータベースを勉強したいという方は、ぜひMySQLユーザ会(http://www.mysql.gr.jp)に入会してともに成長していきましょう。……と、今回はMySQLユーザ会のアピールでした。
Copyright © ITmedia, Inc. All Rights Reserved.