はじめに
本稿第1回では、Perl 5.8を使ってAtomフィードのリーダーを作成し、第2回では、一定の書式を持つWeb日記からAtomフィードを生成・配信するスクリプトを書きました。前回は、jperlを使って、WindowsのShift_JIS文字コード環境のエディタ上で、Web日記の日記記述言語(DDL)からWeb日記を生成・配信するスクリプトを作りました。
Atomリーダーの作成とWeb日記のAtomフィード化によって、次のことができるようになりました。
- HTML日記記事本体の内容をAtomフィードにすべて格納する。
- 格納したものをHTMLに変換して取り出す。
AtomフィードのようなXMLは共通の約束事に従って書かれたテキストなので、一度Atomの形式に変換すると、「特定のサイトのAtomフィードと他のサイトのAtomフィードを混在させて取り扱いたい」というようなニーズに応えることができます。関心のあるサイトの過去記事をAtomデータ構造で継続的に保存し、必要に応じて取り出すことができるデータベースを作成できると、多いに役立つのではないでしょうか。Atomフィードのデータベースは、前述の知識循環・発想定着型データベースの高機能化にも役立つと考えています。
そこで本稿第4回は、よく知られているMySQLを使って、Atomフィードのデータベース(atomfeeds)を作成します。手順としては、まずMySQLを導入して、Atomフィードを格納するためのRDBを作成します。次にAtomフィードを読み込み、内容をRDBに格納します。最後にRDBからデータを読み出して、HTML形式で出力します。
すでに、PerlでAtomフィードを読んだり書いたりできるわけですが、さらにそれをDBIとDBD::mysqlというモジュールを使って、MySQLと連携させます。SQLやMySQLについてはWikipediaによいまとめがあるので参照してください。
Wikipedia
過去の記事
MySQLの導入
MySQLの日本語情報については、日本MySQLユーザー会のサイトがまず上げられます。「MySQLの書籍」についてのページもあるので、参考にされるとよいでしょう。MySQL AB :: The world's most popular open source databaseがMySQLのホームページで最新の情報やドキュメントの入手、配布ファイルのダウンロードが行えます。
- MySQL AB :: MySQL 5.0 Downloadsから、mysql-5.0.27-win32.zip(2007年2月13日現在の最新バージョン)をダウンロードします。
- Lhaca+等で解凍します。
- 解凍されたSetup.exeを実行してインストールします。
インストール時の設定
著者の場合、以下のように設定しています。
- 用途・機能 - Developer Machine、Multifunctional Database、Decision Support(DSS)/OLAPを選択
- Enable TCP/IP Networking - デフォルトのPort Number: 3306のままでチェック
- Enable Strict Mode - 推奨なのでチェック
- デフォルトの文字セット - Best Support For Multilingualismを選択して、UTF-8とする。
- rootのパスワード - とりあえず「password」とする。
設定は、MySQL Server Instance Configuration Wizardで、後から変更も可能です。これらの設定は、デフォルトで「C:\Program Files\MySQL\MySQL Server 5.0\my.ini」に書き込まれています。
DBIとDBD-mysqlの導入
Perlでデータベースを使うためには、DBIというデータベースインターフェイスの機能を持つモジュールとDBIと、連携して動作するデータベース別のドライバが必要です。DBIはデータベースを抽象化したデータベース非依存のモジュールで、DBDxというドライバが、各種データベースに依存した部分を取り扱うモジュールです。
本稿の執筆では、DBIはバージョン1.53、MySQL用のドライバDBD::mysqlは3.0008を使用していますが、モジュールのバージョンにそれほどこだわる必要はないでしょう。読者の環境がどのようなっているか、コマンドラインで次のように試してみましょう。著者の環境の出力も合わせて載せておきます。
C:\Scripts\Perl>perl -MDBI -e "DBI->installed_versions" Perl : 5.008008 (MSWin32-x86-multi-thread) OS : MSWin32 (5.0) DBI : 1.53 DBD::mysql : 3.0008 DBD::Sponge : 11.10 DBD::SQLite2 : 0.33 DBD::SQLite : 1.13 DBD::Proxy : install_driver(Proxy) failed: Can't locate RPC/PlClient.pm in @INC DBD::File : 0.35 DBD::ExampleP : 11.12 DBD::DBM : 0.03
ActivePerl build 819であれば、DBIは標準でインストールされていて、バージョンは1.52です。DBD::mysqlは標準ではインストールされないので、PPM(注1)を使ってインストールしておきましょう。執筆時では、バージョン3.0002がインストールされました。