アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » CakePHPで高速Webアプリ開発 » 第5回 CakePHPで作るToDoアプリ(1)

CakePHPで高速Webアプリ開発

第5回 CakePHPで作るToDoアプリ(1)

第4回ではCakePHPでの開発環境を構築しました。今回からアプリケーション部分の開発にとりかかります。

開発するのはToDo管理アプリケーションです。今回は以下の作業を行います。

  • DBの設計と作成
  • コントローラの作成
  • モデルの作成
  • ビューの作成

この作業で実装される機能は以下になります。

  • タスク一覧の表示

このアプリケーション開発の前提として,DocumentRootは/home/gihyo/public_htmlで,URLはhttp://example.com/~gihyo/,CakePHPをセットアップしたディレクトリは/home/gihyo/public_html/todo,URLはhttp://example.com/~gihyo/todo/とします。

DBの設計と作成

まずはCakePHPに慣れるためのサンプルアプリケーションですので,機能は最小限とします。アプリケーションを利用する想定ユーザは1人だけとして,複数ユーザでの利用はとりあえずは想定外とします。

データベース名はtodo,タスクを管理するテーブル名はtasksとしました。テストデータを含むMySQL用のdumpが以下になります。

CREATE DATABASE todo;
use todo;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE `tasks` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `content` text NOT NULL,
  `status` enum('yet','done') NOT NULL default 'yet',
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `status` (`status`),
  KEY `created` (`created`),
  KEY `modified` (`modified`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `tasks` (`id`, `content`, `status`, `created`, `modified`) VALUES 
(1, 'プログラマーズリファレンスガイドを一通り読む', 'done', '2007-08-20 00:00:00', '2007-08-21 01:00:00'),
(2, 'ブログチュートリアルを行う', 'yet', '2007-08-21 02:00:00', '2007-08-21 02:00:00'),
(3, 'CakePHP情報サイトをRSSリーダーに登録する', 'yet', '2007-08-21 05:00:00', '2007-08-21 05:00:00');

データベース名に合わせてapp/config/database.phpも書き換えます(リスト1)。

リスト1 app/config/database.phpの書き換え

<?php
class DATABASE_CONFIG {
  var $default = array(
    'driver' => 'mysql',
    'connect' => 'mysql_connect',
    'host' => 'localhost',
    'login' => 'ここにDBのユーザー名',
    'password' => 'ここにDBのパスワード',
    'database' => 'todo',
    'prefix' => '',
  );
}

レンタルサーバなどでdb名が固定の場合は,それにあわせて変更してください。

tasksテーブルの解説

テーブル名は複数形

CakePHPの規約ではテーブル名は複数形です。この規約は絶対ではありませんが,規約から外れた場合は規約外であることを明示するコードを書き足す必要があるため,特別な理由がない限りは規約に沿っておくべきです。

複数形は単純に「s」が足されるわけではなく,英語として正しい複数形である必要があります。たとえばdiaryはdiariesとなります。

複数形がない単語は例外的にそのままになります。たとえば「news」などはテーブル名も「news」です。

プライマリキーはid

プライマリキーはidです。CakePHPの規約ではプライマリキーのフィールド名はidなので,新規開発時にはプライマリキーは必ずidとしておいたほうが良いでしょう。テーブル名と同様に規約外でも可能ですが,コードを書き足す必要があります。

タスク内容とステータス

タスク内容はcontentフィールドに入ります。タスクの状態は「未完了」「完了」の2つとして,enum型のstatusフィールドで「yet(まだ)」「done(完了)」で表現します。

作成日はcreated,更新日はmodified

タスクを作成した日はcreatedフィールドにdatetime型で入ります。更新日はmodifiedフィールドで,同様にdatetime型です。この2つのフィールド名はCakePHPの規約に沿っており,新規にレコードを作成したときやレコード内容を更新したときに自動で更新されます。何かと便利なフィールドですので,特別な理由がない限りは作成しておくと良いでしょう。

著者プロフィール

秋田真宏(あきたまさひろ)

株式会社ヨセミテ CTO。個人ブログは「akiyan.com」。1981年生まれ。

URLhttp://www.akiyan.com/

著書

  • Fast CakePHP

    Fast CakePHP

トラックバック

  • CakePHP/CakePHPで作るToDoアプリ

    第5回 CakePHPで作るToDoアプリ(1) http://gihyo.jp/dev/serial/01/cakephp/0005

    Tracked : #1  dev.phlox2.com (PukiWiki/TrackBack 0.4) (2008/03/11, 11:03)

コメント

  • なんというか・・・

    cakePHPにあるサンプルを劣化させて持って来ただけのように感じるのは俺だけ??

    Commented : #3  oioi (2009/11/01, 01:09)

  • asdf

    うごきませんでした。
    これだからWebの解説は嫌いなんだ。
    時間ばかりとられてうまく動いた試しがない。

    Commented : #2  xxx (2009/06/30, 00:51)

  • さっぱり分からん

    さっぱり分からん!
    コントローラー作って、どっから、
    /~gihyo/todo/tasks
    が出てきたんだ?

    やっぱ、技評は分からん!

    Commented : #1  tako (2009/03/17, 14:34)

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス