Piece Frameworkによるブログアプリケーションの作成

第8回 データベース設計とデータアクセスコードの実装(1)

この記事を読むのに必要な時間:およそ 8.5 分

PieceORMコンポーネントとMDB2_Driver_pgsqlのインストール

PHPからデータベースにアクセスするには下記の方法が考えられます。

  • PHPにバンドルされている各RDBMS用のエクステンションを直接使う(抽象度: 低)
  • 古くはPEAR::DBに代表されるようなデータベース抽象化ライブラリを使う(抽象度: 中)
  • オブジェクトリレーショナルマッピングフレームワークを使う(抽象度: 高)

抽象度が高くなるにつれて,コードの重複や制御フローの不具合の削減が期待でき,ユーザはより本質的なコードのみを記述できるようになります。今回は,上記の中で最も抽象度の高いオブジェクトリレーショナルマッピングフレームワークのひとつ,Piece_ORMを使ってデータアクセスを実装していきます。

Piece_Unityを使ったアプリケーションでPiece_ORMを使う場合,Piece_ORMの設定をPiece_Unityから行うためのPieceORMコンポーネントを使うとより便利です。Piece_Unityでは,コア機能以外のコードが個別のパッケージとして提供されており,それらはPiece_Unityコンポーネントと呼ばれています。

では,下記のようにPieceORMコンポーネントをインストールしましょう。この時,環境にPiece_ORM, MDB2がインストールされていなければ自動的にインストールされます。

PieceORMコンポーネントのインストール

> pear.bat install piece/piece_unity_component_pieceorm
...
> pear.bat list -a
INSTALLED PACKAGES, CHANNEL __URI:
==================================
(no packages installed)
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.2 stable Cache_Lite 1.7.2 stable Console_Getopt 1.2.3 stable HTML_Template_Flexy 1.2.5 stable MDB2 2.4.1 stable Net_URL 1.0.15 stable PEAR 1.6.2 stable Structures_Graph 1.0.2 stable INSTALLED PACKAGES, CHANNEL PEAR.PIECE-FRAMEWORK.COM: ===================================================== PACKAGE VERSION STATE Piece_Examples_Basics 1.0.0 stable Piece_Flow 1.13.0 stable Piece_ORM 0.8.0 beta Piece_Right 1.7.0 stable Piece_Unity 1.1.0 stable Piece_Unity_Component_Authentication 0.13.0 beta Piece_Unity_Component_Flexy 1.1.0 stable Piece_Unity_Component_NullByteAttackPreventation 1.0.0 stable Piece_Unity_Component_PieceORM 1.1.0 stable Stagehand_FSM 1.9.0 stable INSTALLED PACKAGES, CHANNEL PECL.PHP.NET: ========================================= (no packages installed)

MDB2はそれ単体では抽象化されたAPIを定義しているにすぎませんので,実際に各RDBMSにアクセスするためには各RDBMS用のドライバが必要になります。今回はPostgreSQLを使っていますので,PostgreSQL用のドライバであるMDB2_Driver_pgsqlをインストールします。

MDB2_Driver_pgsqlのインストール

> pear.bat install mdb2_driver_pgsql
...
> pear.bat list -a
INSTALLED PACKAGES, CHANNEL __URI:
==================================
(no packages installed)
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE             VERSION STATE
Archive_Tar         1.3.2   stable
Cache_Lite          1.7.2   stable
Console_Getopt      1.2.3   stable
HTML_Template_Flexy 1.2.5   stable
MDB2                2.4.1   stable
MDB2_Driver_pgsql   1.4.1   stable
Net_URL             1.0.15  stable
PEAR                1.6.2   stable
Structures_Graph    1.0.2   stable
INSTALLED PACKAGES, CHANNEL PEAR.PIECE-FRAMEWORK.COM:
=====================================================
PACKAGE                                          VERSION STATE
Piece_Examples_Basics                            1.0.0   stable
Piece_Flow                                       1.13.0  stable
Piece_ORM                                        0.8.0   beta
Piece_Right                                      1.7.0   stable
Piece_Unity                                      1.1.0   stable
Piece_Unity_Component_Authentication             0.13.0  beta
Piece_Unity_Component_Flexy                      1.1.0   stable
Piece_Unity_Component_NullByteAttackPreventation 1.0.0   stable
Piece_Unity_Component_PieceORM                   1.1.0   stable
Stagehand_FSM                                    1.9.0   stable
INSTALLED PACKAGES, CHANNEL PECL.PHP.NET:
=========================================
(no packages installed)

以上で必要なパッケージのインストールは完了です。

PieceORMコンポーネントの設定

PieceORMコンポーネントを利用するためには,ふたつのプラグイン,ConfiguratorChain及びConfigurator_PieceORMの設定が必要となります。ConfiguratorChainはPiece_Unity自体が提供するプラグインで,Piece_Unityコンポーネントやアプリケーションを設定するプラグイン(コンフィギュレータ)を実行するために使用されます。Configurator_PieceORMは,PieceORMコンポーネントが提供するプラグインで,Piece_ORMを設定するために使用されます。これらのプラグインの設定は下記のようになります。

/path/to/pieceblog/web/webapp/config/piece-unity-config.yaml

...
- name: ConfiguratorChain
  point:
    - name: configurators
      type: extension
      value:
        - Configurator_PieceORM

- name: Configurator_PieceORM
  point:
    - name: configDirectory
      type: configuration
      value: ../webapp/config/orm
    - name: cacheDirectory
      type: configuration
      value: ../webapp/cache/orm
    - name: mapperConfigDirectory
      type: configuration
      value: ../webapp/config/orm/mappers

ConfiguratorChainプラグインの拡張ポイントconfiguratorsは,実際に設定を行うためのプラグインを登録するために使用されます。Piece_Unityはこの拡張ポイントに登録されたプラグインを,自身の実行環境構築後に実行します。上記の場合は,Configurator_PieceORMプラグインが実行されることになります。

Configurator_PieceORMプラグインの設定ポイントについては下記の表をご参照ください。また,設定した各ディレクトリを忘れずに作成しておきましょう。

設定ポイント概要
configDirectoryPiece_ORM設定ファイル(piece-orm-config.yaml)の配置先ディレクトリ
cacheDirectory各種キャッシュの配置先ディレクトリ
mapperConfigDirectoryマッパー定義ファイルの配置先ディレクトリ

著者プロフィール

久保敦啓(くぼあつひろ)

Piece Frameworkのアーキテクト及びプログラマー。PEARのNet_UserAgent_Mobileの開発者でもある。今春に株式会社アイテマンを設立。

URLhttp://iteman.typepad.jp/