SHOEISHA iD

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

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

S2Baseで作るWebアプリケーション

S2Base.PHP5とS2Dao.PHP5で作るWeb2.0風アプリケーション 前編

S2Baseで作るWebアプリケーション


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

S2Base.PHP5とS2Dao.PHP5を用いてWeb2.0風のアプリケーションを作成します。初めて作成する人でもすぐに始められるよう、導入から動作までを紹介していきます。前編では必要な環境の導入から雛形の作成まで行います。

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

はじめに

 Web開発では、効率よく開発するためにWebフレームワークの選定に悩みがちです。

 今回はSeasar.PHPで開発が続けられているS2Base.PHP5とS2Dao.PHP5を使ったWeb2.0風なWebアプリケーションを作成する手順を導入から動作まで紹介します。今回紹介する方法ではS2Base.PHP5のごく一部の機能とS2Dao.PHP5の一部の機能しか使っていませんが、効率よく開発するためにフレームワークを探している人や、S2Base.PHP5を用いたWeb開発を考えている方への参考になれば幸いです。

対象読者

  • PHP5を使ってWeb開発をしている方
  • フレームワークの導入を検討する立場にいる方
  • S2Base.PHP5を導入しようと思っている方
  • S2Dao.PHP5を使ったことのある方

必要な環境

 PHP5(必要なバージョンとしてはPHP5.1.6以上を対象とします)

S2Base.PHP5について

 S2Base.PHP5はSeasar.PHP(S2Container.PHP5やS2Dao.PHP5)による開発を支援するためのコマンドラインツールです。コマンドライン上から各ファイル(クラスの雛型やテストクラス)の生成が行えます。また、S2Base.PHP5の機能は単にそれだけではなく、各種有名なWebフレームワークとSeasar.PHPの連携を可能にします。S2Base.PHP5が対応するWebフレームワークは以下の通りです。

 S2Base.PHP5にはこの他にもS2JavelinTraceInterceptorというトレースロガーがあり、ログをビジュアルで見る事が可能です。ただし本稿では、S2JavelinTraceInterceptorの機能は使いません。Webフレームワークも特別なものを用意せずに、PHPユーザーに馴染の深いSmartyをベースとしたS2Base.PHP5によるフレームワーク(with Smarty)を利用することにします。

導入

 今回導入するものは以下の4点です。

  • Smarty
  • S2Container.PHP5
  • S2Dao.PHP5
  • S2Base.PHP5

 S2Base.PHP5のインストールは、S2Base.PHP5のセットアップページを参考にしています。また、S2Base.PHP5にはPhingPHPUnit2が必要となりますが、既にこれはインストールしているものとします。この他に、ブラウザ上のフレームワークとして「prototype.js」を利用しています。

S2Container.PHP5の導入

 今回使用するS2Base.PHP5とS2Dao.PHP5の動作にはこのS2Container.PHP5が必要になります。S2Container.PHP5に関する詳細な情報はS2Container.PHP5を用いたDIベースの開発を参照してください。

インストール

 S2Container.PHP5のプロジェクトページにPEARパッケージの配布物がありますので、PEARを使って導入します。今回導入したバージョンはS2Container.PHP5-1.1.2です。

PEARコマンドによるS2Container.PHP5のインストール
> pear install http://s2container.php5.seasar.org/download/S2Contai
ner-1.1.2.tgz
downloading S2Container-1.1.2.tgz ...
Starting to download S2Container-1.1.2.tgz (101,504 bytes)
.......................done: 101,504 bytes
install ok: channel://pear.php.net/S2Container-1.1.2

 インストールができたかどうかの確認にはpear infoを使います。

pear info S2Containerの抜粋
> pear info S2Container
About pear.php.net/S2Container-1.1.2
====================================
Release Type          PEAR-style PHP-based Package
Name                  S2Container
Channel               pear.php.net
Summary               S2Container.PHP5, a lightweight container
                      supports DI and AOP.
Description           S2Container is a lightweight container which
                      supports DI(Dependency Injection) and
                      AOP(Aspect Oriented Programming). The goal of
                      S2Container.PHP5 project is to port Java
                      Seasar2 to PHP5.
    :
    : (省略)
    :

S2Dao.PHP5の導入

 S2Base.PHP5はS2Container.PHP5同様、S2Dao.PHP5を用いた開発をサポートしています。今回作成するアプリケーションでは、DBアクセスにこのS2Dao.PHP5を利用しています。

インストール

 S2Dao.PHP5の導入もS2Container.PHP5と同様にPEARを使いインストールします。S2Dao.PHP5のプロジェクトページにPEARパッケージの配布物がありますので、PEARを使って導入します。今回導入したバージョンはS2Dao.PHP5-1.1.1です。

PEARコマンドによるS2Dao.PHP5のインストール
> pear install http://s2dao.php5.seasar.org/files/S2Dao-1.1.1.tgz
downloading S2Dao-1.1.1.tgz ...
Starting to download S2Dao-1.1.1.tgz (92,630 bytes)
.....................done: 92,630 bytes
install ok: channel://pear.php.net/S2Dao-1.1.1

 インストールの確認は同じくpear infoを使います。

pear info S2Daoの抜粋
> pear info S2Dao
About pear.php.net/S2Dao-1.1.1
==============================
Release Type          PEAR-style PHP-based Package
Name                  S2Dao
Channel               pear.php.net
Summary               S2Dao.PHP5, a Object Relational Mapping tool.
Description           S2Dao is Object Relational Mapping tool: S2Dao
                      does not use XML; and does not require
                      DB-Driver knowledge. The goal of S2Dao.PHP5
                      project is to port Java S2Dao to PHP5(using
                      PDO).
    :
    : (省略)
    :

S2Base.PHP5の導入

 S2Base.PHP5は今回メインで使用するツールです。

インストール

 S2Base.PHP5のプロジェクトページにPEARパッケージの配布物がありますので、PEARを使って導入します。今回導入したバージョンはS2Base.PHP5-1.0.0です。

PEARコマンドによるS2Base.PHP5のインストール
> pear install http://s2base.php5.sandbox.seasar.org/download/S2Bas
e-1.0.0.tgz
downloading S2Base-1.0.0.tgz ...
Starting to download S2Base-1.0.0.tgz (56,540 bytes)
..............done: 56,540 bytes
Did not download optional dependencies: http://s2base.php5.sandbox.
seasar.org/download/S2Javelin-1.0.0, use --alldeps to download auto
matically
__uri/S2Base can optionally use package "http://s2base.php5.sandbox
.seasar.org/download/S2Javelin-1.0.0"
install ok: channel://__uri/S2Base-1.0.0

 S2Javelin-1.0.0は今回は使用することはありませんので、インストールしません(別途インストールすることが可能です)。

S2Javelin(.PHP5)について
 今回インストール時に登場するS2Javelin(.PHP5)は、Javaで作成されたS2JavelinをPHPに移植したものです。S2JavelinはArrowVisionというツールを使うことで、トレースログをビジュアルで見る事ができます。処理の流れを視覚的に表示してくれるツールですので、開発時には役立つことも多いと思います。
 S2Base.PHP5からS2Javelin(.PHP5)を利用できるようにするには、S2Base.PHP5プロジェクトページ内のS2JavelinTraceInterceptorを参照してください。

 S2Base.PHP5がインストールできたかどうかを確認します。

pear info __uri/S2Baseの抜粋
> pear info __uri/S2Base
About __uri/S2Base-1.0.0
========================
Release Type          PEAR-style PHP-based Package
Name                  S2Base
Channel               __uri
Summary               S2Base.PHP5 is a command line tool for
                      development using S2Container and S2Dao.
Description           S2Base.PHP5 is a command line tool for
                      development using S2Container and S2Dao.
                      Includes generator of project directory, source
                      files and unit test.
   :
   : (省略)
   :

 この状態でs2baseコマンドが使えますので、使えるかどうか確認します。

s2baseコマンド
> s2base --help
[INFO ] Usage: % s2base <project directory> [smarty]

 無事s2baseコマンドが利用できればS2Baseの導入は完了です。

Smartyの導入

 SmartyのページからSmartyをダウンロードしておきます。今回は、S2Baseでプロジェクトを作成するまで使用しませんので、適当な場所へ保存しておいてください。利用するバージョンはSmarty-2.6.14です。

プロジェクトの作成

 導入(Smartyはダウンロードまで)が無事終わりましたら、次にs2baseコマンドを使ってプロジェクトを作成します。今回作成するプロジェクト名は「codezine」とします。適当なディレクトリに移動し、以下のコマンドを入力します。

s2baseコマンドからプロジェクトの作成
> s2base codezine smarty
[INFO ] s2base  directory : /usr/share/php/S2Base
[INFO ] project directory : codezine
[INFO ] create : codezine/app
[INFO ] create : codezine/app/commands
[INFO ] create : codezine/app/commons
[INFO ] create : codezine/app/commons/dao
[INFO ] create : codezine/app/commons/dicon
[INFO ] create : codezine/app/commons/view
[INFO ] create : codezine/app/modules
[INFO ] create : codezine/app/skeleton
    :
    : (省略)
    :

 ここで、生成されたディレクトリの意味合いを整理しておきます。

生成されたディレクトリの中身
codezine/
    app/      アプリケーション本体格納ディレクトリ
    config/   設定ファイル保存ディレクトリ
    lib/      ライブラリ関連ディレクトリ
    public/   WEB公開ディレクトリ
    test/     テスト用ディレクトリ
    var/      ログ・キャッシュディレクトリ
    vendor/   外部フレームワーク、ライブラリ等との連携モジュール
    build.xml s2baseで使用するphingファイル

 S2Base.PHP5ではモジュール単位の開発をサポートしています。各モジュールは「app/modules」「test/modules」以下に生成され、モジュール共通のファイルなどは「app/commons」以下に配置されます。通常は、「app/modules」以下のファイルを適切に作成していくことになります。

Smartyの配置

 先ほどダウンロードしておいたSmartyを解凍し、「codezine」(プロジェクトディレクトリ)の「lib」に入れます。ここでは、生成されるディレクトリ名を「Smarty-2.6.14」から「Smarty」に変更しています。

Smartyのファイル解凍とリネーム・フォルダ移動
> tar xzf Smarty-2.6.14.tar.gz
> mv Smarty-2.6.14 codezine/lib/Smarty
> ls codezine/lib/Smarty/
BUGS  COPYING.lib  ChangeLog  FAQ  INSTALL  NEWS  QUICK_START  READ
ME RELEASE_NOTES  TODO  demo  libs  misc  unit_test

 結果次のようなディレクトリ構成になりました。

生成されたディレクトリの中身
codezine/
    app/
    config/
    lib/
        Smarty/    解凍したSmartyフォルダ
    public/
    test/
    var/
    vendor/
    build.xml

 次に「codezine」ディレクトリへ移動し、「build.xml」を編集します。「build.xml」はs2baseコマンドで作成したときにデフォルトで生成されるので、それを変更します。変更するのは、デフォルトで<project name="project" default="command" basedir=".">となっている部分のname="project"default="command"smartyに変更するだけです。

build.xml
<?xml version="1.0"?>
<project name="smarty" default="smarty" basedir=".">

    <php expression="ini_set('include_path',
                     'lib'.PATH_SEPARATOR.ini_get('include_path'))" />
    <php expression="require_once('S2Base/S2Base.phing.php')" />
    :
    : (省略)
    :
</project>

 「build.xml」の編集が終わったら、次にphingコマンドを実行してみます。

コンソール上からphingコマンドの実行
> phing
Buildfile: /home/hata/workspace/codezine/build.xml
      [php] Evaluating PHP expression: ini_set('include_path','lib'
.PATH_SEPARATOR.ini_get('include_path'))
      [php] Evaluating PHP expression: require_once('S2Base/S2Base.
phing.php')

smarty > prepare:
      [php] Evaluating PHP expression: require_once('config/environ
ment.inc.php')
      [php] Evaluating PHP expression: require_once('S2Base/S2Base.
cmd.php')

smarty > smarty:
    [phing] Calling Buildfile '/home/nowel/public_html/CodeZine/wor
ks/codezine/vendor/plugins/smarty/build.xml' with target 'command'

project > command:
      [php] Evaluating PHP expression: require_once('vendor/plugins
/smarty/config/environment.inc.php')

[ Command list ]
0 : (exit)
1 : action
2 : command
3 : dao
4 : dicon
5 : entity
6 : goya
7 : interceptor
8 : module
9 : service
choice ? : 0

BUILD FINISHED

 無事にコマンドが実行することができました。最後に、Smartyが使用するキャッシュフォルダを書き込み可能にする必要があるので、「codezine/var」ディレクトリ以下を書き込み可能な権限を与えます。

chmod
> chmod -R 777 codezine/var

 ここまでで、プロジェクトを動かす準備は整いました。後はphingコマンドを利用して、アプリケーションを作成していきます。S2BaseとSmartyの導入が済んだら、次はアプリケーションの作成を行います。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
Ajaxなタブエディタ(データ転送にはJSONを使用)

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

  • このエントリーをはてなブックマークに追加
S2Baseで作るWebアプリケーション連載記事一覧
この記事の著者

ハタ(ハタ)

PHPの魅力に取り付かれた一人。現在はSeasar.PHPとしてSeasar(Java)をPHP5に移植する活動をしている。http://blog.xole.net/(ブログ)

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/737 2007/04/13 13:01

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング