SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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


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テーブルに対応するクラス

次のページ
コントローラの実装

この記事は参考になりましたか?

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

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4788 2010/06/21 19:56

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー