JavaでSQLite

あえて説明するまでもありませんが、SQLiteは軽量で扱いやすいリレーショナルデータベースのエンジンです。これはC言語で使うために作られたライブラリですが、いろいろな人たちの努力により、Javaでも動作するようになっています。いくつか使ってみたところ、どういう場合に向いているのかが何となく分かりました。誰かの役に立つかもしれないので、ここにメモしておきます。

まずはSQLJetから。すべてJavaで書かれたSQLiteの実装で、データファイルにおいて完全な互換があります。SQLiteはC言語用のライブラリなので、これをJavaから使うためにはJNIを使ったラッパーを作らなければならないのですが、その必要がまったくなくなるという利点があります。JARファイルをクラスパスに加えるだけで使えるようになります。

しかし、あまりドキュメントが充実しておらず、どのようにプログラムを組めばよいのか、調べるのが大変という欠点があります。また、SQLをサポートしているわけではなく、SQLJetが提供しているAPIを使わなければなりません。そのため、データベースの実装について抽象化したようなプログラムを書くことが難しくなります(不可能ではないと思いますが…)。

逆に言えば、SQLを使うことなく、Javaのオブジェクトにアクセスすることでデータベースを操作することができるのですから、SQLに詳しくなくてもデータベースを扱うことができるということになり、ひとつの利点といえるのかもしれません。

次はSQLite JDBC Driverです。これは名前の通りJDBCドライバになっており、SQLiteのラッパーとして動作します。JARファイルの内部にコンパイルされた各環境用のライブラリが同梱されており、動的にロードするという仕組みになっているそうです。ですので、C言語で作成したアプリケーションにおいてSQLiteを使うのと変わりません。

このドライバ自体のドキュメントは少ないのですが、データベースの操作はJDBCのインターフェイスを使って行うため、JDBCに関する知識があれば扱えるということになり、それほどの欠点ではありません。また、SQLを発行することでデータベースの操作を行うため、操作の抽象化を行うことが比較的容易になります。もっとも、SQLが分からなければ使いこなせない、ということも意味するのですが。

残念ながら、ドライバの実装は最新のJDBCに対応していないようで、Java 1.6で追加されたメソッドを使用すると例外が発生してしまいます。この点は欠点になると思いますが、ほかのメソッドによって代用することができたり、そもそも必要のないメソッドもありますので、致命的なものではありません。

使ってみた所感は以上です。

ごく簡単に使いたいというのであれば、SQLJetを。抽象化なども交えて本格的に使いたい、最新のSQLiteを使いたいというのであれば、SQLite JDBC Driverを使うのがよいと思います。

XREAでWordPress

XREAの無料サーバでWordPressを使おうとしたら少々の問題が生じたので、その対処法をメモしておきます。

環境は次の通り。

Firefox 3.6.10
Apache 1.3.37
PHP 5.2.5
MySQL 5.1.22-rc
WordPress 3.0.1-ja

まずはXREAの管理画面でMySQLのデータベースを作成。そしてWordPressのインストールの手引きに従って、wp-config.phpを編集してからファイルをアップロードし、install.phpを実行します。

ここで最初の問題が発生。install.phpを呼び出すとデータベースに接続できないというエラーが表示されました。この原因はいまでもよく分からず、データベースを削除してから作り直すことで解決されました。

ともかく、必要な情報を書き込み、インストールは完了(おそらくデータベースのテーブル作成のみ)です。

インストール後は作成した管理者アカウントでログインしてダッシュボード画面に移るのですが、明らかにレイアウトが崩れています。本来は3ペイン構成になるのですが、そのようにならず、縦にずらっと並んでしまいます。一目で、スタイルシートまわりに問題があると分かりました。

この解決方法を探してみると、「Xrea+wordpressでダッシュボードの表示が変」で対処方法が解説されていました(記事内で「CORESERVER + WordPress の管理画面がおかしくなる場合の対処法」を参照)。

どうやら、スタイルシートを読み込むphpスクリプトがスタイルシートをtext/htmlで送っており、広告が自動挿入されてしまうため、正しいスタイルシートとして認識されていないらしいのです。IEではこの問題が生じないそうなのですが、おそらくスタイルシートの処理が違うためでしょう。

いくつかの解決方法がありますけれど、わたしは最大限WordPressをモジュールで動作させようと思ったので(その方が処理も軽くなるはず)、次のような.htaccessをwp-adminディレクトリに置きました。

# ファイルのアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# プラグインの新規インストール
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# テーマの自動アップグレード
<files update.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# コアアップグレード
<files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</files>


# スタイルシートを text/html で出力するため広告自動挿入をオフにする
<files load-styles.php>
LayoutIgnoreURI *.php
</files>

これでダッシュボードは正常にレイアウトされるようになりました。