ServBayを使ってmacOS上でPHPixieプロジェクトを作成・運用する
PHPixieは、素早いWebアプリケーション開発を目指して設計された、高性能かつ軽量なPHPフレームワークです。HMVC(階層型モデル・ビュー・コントローラ)設計パターンを採用し、シンプルなコード構造と高い処理能力を実現しています。PHPixieは、その簡潔さ・柔軟性・高性能を理由に、多くの開発者に支持されています。
PHPixieの主な特徴とメリット
- 軽量設計: PHPixieのコアは非常にコンパクトで、必要最少限のコンポーネントのみを搭載しているため、起動や動作が高速です。
- 高パフォーマンス: 効率性を重視した設計で、並行リクエストにも強く、高速な処理を必要とするアプリケーションにも最適です。
- 習得しやすい: 明快でシンプルなAPIと充実したドキュメントが用意されており、比較的短時間で使い方をマスターできます。
- 柔軟性: フレームワーク構造が疎結合で、プロジェクトごとにサードパーティライブラリやコンポーネントを自由に選択・統合できます。
- 活発なコミュニティ: 積極的な開発者コミュニティが存在し、豊富な拡張パッケージやサポートリソースを提供しています。
PHPixieは、開発者が高品質で高性能なWebアプリケーションを効率的に構築できるよう支援し、小規模から大規模なエンタープライズ用途まで幅広く活用できます。
ServBayでPHPixieプロジェクトを作成・起動する
この記事では、ServBayが提供するローカルWeb開発環境を活用して、PHPixieプロジェクトの作成と運用手順を紹介します。ServBayに統合されたPHP環境、Composer依存管理ツール、「Webサイト」機能を使い、Webサーバーの設定・ローカルアクセス・データベースやキャッシュ連携まで、簡単なステップで実現できます。
事前準備
- macOS上でServBayがインストール・起動されていること。ServBayにはPHP・Composer・各種データベース(MySQL, PostgreSQL, MongoDB, Redisなど)・Caddyウェブサーバーが統合されています。
- 基本的なコマンドライン操作の知識があること。
PHPixieプロジェクトの作成
推奨Webサイトディレクトリ
ServBayでは、ローカルWebプロジェクトを /Applications/ServBay/www
ディレクトリにまとめて配置することが推奨されています。これにより管理やServBayのアクセス権限管理が容易になります。
- Composerのインストール確認: ServBayには初期状態でComposerが付属しているため、追加インストール不要です。ターミナルで
composer --version
と入力して確認できます。 - プロジェクトディレクトリ作成: ServBay推奨のWebサイトディレクトリ内に新しいフォルダを作成し、PHPixieプロジェクトを格納。そのディレクトリに移動します。bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - ComposerでPHPixieプロジェクト作成: プロジェクトディレクトリ内でComposerコマンドを実行して、PHPixieプロジェクトテンプレートを取得します。bashComposerがPHPixieとその依存パッケージをカレントディレクトリにインストールします。
composer create-project phpixie/project .
1
Webサーバーの設定
ServBayのWebサイト機能を利用して、Caddy WebサーバーがPHPixieプロジェクトを正しく指すように設定します。
ServBayアプリの画面を開きます。
Webサイト(ウェブサイト) 一覧に進みます。
新規Webサイトを追加ボタンをクリック。
サイト設定情報を入力:
- 名前: 例)
My First PHPixie Dev Site
(ServBay内部での識別名) - ドメイン: 例)
servbay-phpixie-test.local
(ブラウザでアクセスするローカル開発用ドメイン) - サイト種別:
PHP
を選択 - PHPバージョン: 任意のバージョン例)
8.3
- ドキュメントルート: プロジェクトの
web
ディレクトリを指定:/Applications/ServBay/www/servbay-phpixie-app/web
なぜ
/web
ディレクトリなのか?PHPixieプロジェクトのエントリーファイルは
web/index.php
です。セキュリティとベストプラクティスの観点から、Webサーバーのドキュメントルートはエントリーファイルを含むweb
ディレクトリに直接指定すべきです。これにより、設定ファイルやvendorディレクトリなど、プロジェクト内の機密ファイルへのWeb経由のアクセスを防げます。- 名前: 例)
設定を保存すると、ServBayがCaddyの設定とローカルhostsファイル(必要に応じて)を自動更新し、
servbay-phpixie-test.local
ドメインがローカルServBayサーバーに向くようになります。
詳細な設定手順は 最初のWebサイト追加 も参照してください。
サンプルコードの追加
プロジェクトの動作確認や、データベース・キャッシュと連携した例を示すため、サンプルコードを追加します。
サンプルコントローラの作成:
src/App/HTTP/Controller/Home.php
ファイルに次のコードを追加します(ファイルやフォルダがない場合は手動で作成してください)。php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // クエリクラスをインポート class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // デフォルトのホームページアクション public function action_index(Request $request) { // assets/templates/app/home.php テンプレートをレンダリング return $this->template->render('app:home'); } // Memcachedサンプルアクション public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'ServBayからのMemcachedの挨拶!', 60); // データを保存(有効期限60秒) $value = $cache->get('key'); // データ取得 return $this->response()->string($value); // 文字列レスポンスを返す } // Redisサンプルアクション public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'ServBayからのRedisの挨拶!'); // データを保存 $value = $redis->get('key'); // データ取得 return $this->response()->string($value); // 文字列レスポンスを返す } // MySQL/PostgreSQL:ユーザー追加サンプル public function action_add_user(Request $request) { // データベースコンポーネントからクエリビルダーを取得 $query = $this->components->database()->query(); // 'users'テーブルに新規ユーザーデータを挿入 $query->insert('users')->data([ 'name' => 'ServBayデモユーザー', 'email' => 'demo-' . uniqid() . '@servbay.test', // 一意のメール ])->execute(); // 挿入実行 return $this->response()->string('ユーザーの追加が成功しました。'); // 成功メッセージを返す } // MySQL/PostgreSQL:ユーザー一覧サンプル public function action_list_users(Request $request) { // データベースコンポーネントからクエリビルダーを取得 $query = $this->components->database()->query(); // 'users'テーブルの全ユーザーを取得 $users = $query->select('*')->from('users')->execute()->fetchAll(); // クエリ実行&全件取得 return $this->response()->json($users); // ユーザーリストをJSONで返す } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67サンプルテンプレートの作成:
assets/templates/app/home.php
ファイルに次のコードを追加します(必要に応じてフォルダを作成してください)。php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>このページは、ServBayで動作しているあなたのPHPixieアプリケーションによって動的に生成されています。</p> <h2>サンプル機能リンク:</h2> <ul> <li><a href="/home/memcached">Memcachedテスト</a></li> <li><a href="/home/redis">Redisテスト</a></li> <li><a href="/home/add_user">データベースにユーザー追加</a></li> <li><a href="/home/list_users">データベースユーザー一覧</a></li> </ul> <p>各種データベース・キャッシュの設定ステップを完了していることを確認してください。</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
サイトへアクセスする
ServBayでWebサイトを設定し、サンプルコードを追加したら、ブラウザで設定したドメインにアクセスできます。
- ブラウザで
https://servbay-phpixie-test.local
を開きます。 - "Welcome to PHPixie on ServBay" という表記と、各種サンプル機能へのリンクが表示されるはずです。
もしアクセスできない場合は、以下を確認してください:
- ServBayが起動しているか
- サイトの設定(ドメイン・タイプ・ドキュメントルート等)が正しいか
- ローカルhostsファイルが
servbay-phpixie-test.local
を正しく解決しているか(ServBayは通常自動設定します) - 利用PHPのバージョンが有効になっているか
データベース・キャッシュ連携サンプル
PHPixieは複数のデータベース・キャッシュシステムに標準対応しています。ServBayではMySQL、PostgreSQL、Redis、Memcachedなどのパッケージが用意されており、PHPixieプロジェクトへの統合が簡単です。
重要: データベース操作を行う前に、ServBayで該当するデータベースサービス(例:MySQLやPostgreSQL)が起動済みであり、本プロジェクト用データベースが作成されていることを確認してください。例として、本ガイドではデータベース名 servbay_phpixie_app
を使用しています。ServBay提供のDB管理ツール(Sequel Ace、Postico、TablePlus等)またはコマンドラインクライアントを使ってデータベース作成可能です。ServBayのデフォルトDBユーザーは root
、パスワードは password
です(環境によって異なる場合あり)。
データベース接続設定
利用するデータベース(MySQLまたはPostgreSQL)に応じて、プロジェクトルート assets/config/database.php
ファイルを編集します。ServBayのデフォルトDBホストは通常 127.0.0.1
です。
MySQL設定例(assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection文字列はDB種別・ServBay設定によって調整
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // ServBayデフォルトユーザー
'password' => 'password', // ServBayデフォルトパスワード(必要に応じて変更)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
PostgreSQL設定例(assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection文字列はDB種別・ServBay設定によって調整
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // ServBayデフォルトユーザー
'password' => 'password', // ServBayデフォルトパスワード(必要に応じて変更)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
データベーステーブル作成(マイグレーションの利用)
PHPixieには、データベースマイグレーション管理CLIツールが付属しています。これはDB構造のバージョン管理方法です。
- ターミナルを開く: プロジェクトルートに移動bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - マイグレーションファイル作成: CLIツールで新規マイグレーションファイルを生成、ここでは
users
テーブル用bashphp pixie generate:migration create_users_table
1assets/migrations
ディレクトリにタイムスタンプ付き新しいPHPファイルが生成されます。 - マイグレーションファイル編集: 生成されたマイグレーションファイル(例:
YYYY_MM_DD_HHMMSS_create_users_table.php
)のup()
とdown()
メソッドを下記のように編集php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // スキーマビルダーで 'users' テーブル作成 $this->schema->create('users', function(Table $table) { $table->increments('id'); // 主キー(自動増分) $table->string('name'); // 名前列 $table->string('email')->unique(); // メール列(ユニーク) $table->timestamps(); // 作成日時・更新日時 }); } public function down() { // スキーマビルダーで 'users' テーブル削除 $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - マイグレーション実行: プロジェクトルートのターミナルで以下コマンドを実行(
users
テーブル作成)bash正常に完了すれば、マイグレーション成功のメッセージが表示されます。DB管理ツールでもphp pixie migrate
1servbay_phpixie_app
データベースにusers
テーブルが生成されていることが確認できます。
リレーショナルDB(MySQL/PostgreSQL)の利用
上述サンプルコントローラ src/App/HTTP/Controller/Home.php
で、action_add_user
および action_list_users
により、PHPixieのDBコンポーネントからMySQL/PostgreSQLと連携できます。
- ユーザー追加:
https://servbay-phpixie-test.local/home/add_user
にアクセスすると、users
テーブルに新たなユーザーが追加されます。 - ユーザー一覧取得:
https://servbay-phpixie-test.local/home/list_users
にアクセスすると、users
テーブルの内容がJSON形式で返されます。
NoSQLデータベース(Memcached/Redis)の設定と利用
ServBayにはMemcached・RedisおよびそのPHP拡張モジュールがプリインストールされています。PHPixieプロジェクトで対応する設定をするだけで利用可能です。
Memcached設定(assets/config/cache.php
):
assets/config/cache.php
を編集または新規作成して、Memcached設定を記述します。
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // ServBay Memcachedデフォルトホスト
'port' => 11211, // ServBay Memcachedデフォルトポート
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Redis設定(assets/config/redis.php
):
assets/config/redis.php
を編集または新規作成して、Redis設定を記述します。
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // ServBay Redisデフォルトホスト
'port' => 6379, // ServBay Redisデフォルトポート
'timeout' => 0,
'database' => 0, // Redisデータベース番号
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Memcached/Redisの利用方法:
上述サンプルコントローラ src/App/HTTP/Controller/Home.php
で、action_memcached
・action_redis
を使ってPHPixieキャッシュコンポーネントの利用例を確認できます(MemcachedまたはRedis使用設定可)。
- Memcachedテスト:
https://servbay-phpixie-test.local/home/memcached
にアクセスすると、Memcachedに値を書き込み・読取を行い、その値を表示します。 - Redisテスト:
https://servbay-phpixie-test.local/home/redis
にアクセスすると、Redisに値を書き込み・読取を行い、その値を表示します。
MemcachedおよびRedisのソフトウェアがServBay上で起動済みであることをご確認ください。
まとめ
上記の手順で、ServBayを活用しmacOSのローカル環境にてPHPixieプロジェクトを作成・設定・起動することができました。Composerによるプロジェクト作成、ServBay「Webサイト」機能によるWebサーバー設定、基本的なデータベースやキャッシュとの連携設定、機能の動作検証方法など、全体の流れを習得できます。
ServBayの統合環境により、PHP開発環境構築の手間を大幅に省けるため、コード開発そのものに集中できるようになります。ぜひこのガイドを参考に、PHPixieで次なるWebプロジェクト制作をスムーズに始めてください!