Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

デスクトップCGIでWebとデスクトップを融合する 第4回

MySQLでAtomフィードをデータベース化 - 前編

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/02/22 00:00

ダウンロード ソースコード (11.0 KB)

今回は、MySQLを使ってAtomフィードのデータベースを作成します。フィードをデータベースに取り込むことで管理・再利用が容易になります。

目次

はじめに

 本稿第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のホームページで最新の情報やドキュメントの入手、配布ファイルのダウンロードが行えます。

  1. MySQL AB :: MySQL 5.0 Downloadsから、mysql-5.0.27-win32.zip(2007年2月13日現在の最新バージョン)をダウンロードします。
  2. Lhaca+等で解凍します。
  3. 解凍されたSetup.exeを実行してインストールします。

インストール時の設定

 著者の場合、以下のように設定しています。

  1. 用途・機能 - Developer Machine、Multifunctional Database、Decision Support(DSS)/OLAPを選択
  2. Enable TCP/IP Networking - デフォルトのPort Number: 3306のままでチェック
  3. Enable Strict Mode - 推奨なのでチェック
  4. デフォルトの文字セット - Best Support For Multilingualismを選択して、UTF-8とする。
  5. 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がインストールされました。

(注1)
 ActivePerl(build 819)のPPM(Perl Package Manager)はPPM4でGUIを使うことができます。しかし、環境変数のUSERPROFILE(あるいはUSERNAME)がUTF-8以外の文字、SJIS文字などを含むと動作しないので、日本語Windowsでユーザー名にShift_JIS日本語を使用している場合に困ります。この問題は、ACTIVEPERL_PPM_HOMEという環境変数に、asciiコードだけのディレクトリ(例えば、「C:\Perl5.8\bin\ppm_home」など)を設定すれば回避できます。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:PerlでデスクトップCGI

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5