CodeZine(コードジン)

特集ページ一覧

初めてのCatalyst入門(7)
モデルを使ったプログラミング

ブックマークの情報をデータベースに保存する

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/02/04 14:00
目次

Bookmarkサンプルアプリケーション

 サンプルとしてブックマークを登録するアプリケーションを作成します。

必要なモジュールのインストール

 まずは、今回のサンプルとして必要になる、DBIx::Class::Schema::LoaderCatalyst::Model::DBIC::Schemaをインストールします。

 これらのモジュールをインストールするには、rootユーザーで次のコマンドを実行します。

[リスト4]Catalyst::Model::DBIC::Schema関連モジュールのインストール
# perl -MCPAN -e 'install DBIx::Class::Schema::Loader'
# perl -MCPAN -e 'install Catalyst::Model::DBIC::Schema'

アプリケーションスケルトン作成

 最初にブックマークアプリケーションを作成します。今回のサンプルではビューモジュールとしてCatalyst::View::TTを使用しますので併せてビューも作成します。また、コード類はすべてUTF-8で保存しています。

[リスト5]ブックマークアプリケーションを作成
$ catalyst.pl Bookmark
$ ./Bookmark/script/bookmark_create.pl view TT TT

データベース定義

 このサンプルでは、データベースとしてSQLiteを使用します。SQLiteのドライバモジュールDBD::SQLiteDBIx::Classインストール時に一緒にインストールされているので、他のデータベースに接続する場合には、別途ドライバをインストールする必要があります。

 ブックマークデータベースには、URLのエントリ情報を登録するためのEntryテーブルを定義します。SQLは次のようになります。このSQL定義を「Bookmark/bookmark.sql」ファイルに保存します。

[リスト6]bookmark.sql
CREATE TABLE Entry (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  url VARCHAR(256) NOT NULL,
  title VARCHAR(64) NOT NULL,
  counter INTEGER NOT NULL DEFAULT 0,
  comment TEXT
);

 Entryテーブルには次のカラムを定義しています。

Entryテーブルの定義
カラム名 説明
id ブックマークの主キーとなるID
url 登録するURL
title 登録するURLのタイトル
counter Bookmarkアプリケーションからアクセスした回数
comment ブックマークのコメント

 次にsqlite3コマンドを使用して、データベースファイルを作成します。データベースファイルは「Bookmark/db/bookmark.db」に配置します。

[リスト7]SQLiteのデータベースファイルを作成
$ mkdir ./Bookmark/db
$ sqlite3 ./Bookmark/db/bookmark.db < ./Bookmark/bookmark.sql

Catalyst::Model::DBIC::Schemaを使用したモデルの作成

 それでは、ブックマークデータベースに対応したモデルを作成してみましょう。モデルクラス名をBookmarkDB、スキーマクラスをBookmark::Schemaとして作成します。次のコマンドで作成します。

[リスト8]BookmarkDBモデル作成
$ cd Bookmark
$ ./script/bookmark_create.pl model BookmarkDB DBIC::Schema \
Bookmark::Schema create=static dbi:SQLite:./db/bookmark.db

 このコマンドを実行すると、「Bookmark/lib/Bookmark」フォルダ以下に、次のファイルが作成されます。

作成されるモジュールファイル
作成されるモジュールファイル 説明
Model/BookmarkDB.pm bookmark.dbへの接続情報を持ったモデルクラス
Schema.pm DBIx::Class::Schemaを継承したスキーマクラス
Schema/Result/Entry.pm Entryテーブルに対応するクラス

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

バックナンバー

連載:Webアプリケーションフレームワーク「Catalyst」入門

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

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