ServBayを使ってmacOSでPHPixieプロジェクトを作成・実行する
PHPixieは軽量かつ高パフォーマンスなPHPフレームワークで、迅速なWebアプリケーション開発のために設計されています。HMVC(階層型モデル・ビュー・コントローラー)パターンを採用し、シンプルなコード構造と高い処理効率を実現します。PHPixieは、そのシンプルさ・柔軟性・高速性が多くの開発者に支持されています。
PHPixieの主な特徴とメリット
- 軽量: PHPixieのコアは非常にコンパクトで、アプリケーション構築に必要な最小限のコンポーネントだけが含まれており、起動や動作が高速です。
- 高パフォーマンス: フレームワーク設計の重点は効率性にあり、高い同時リクエスト処理能力を持ち、パフォーマンス重視のアプリケーションに最適です。
- 習得が簡単: 明快で簡潔なAPIと充実したドキュメントが提供されており、短期間で使いこなすことができます。
- 柔軟性: フレームワークの構造は疎結合で、サードパーティライブラリやコンポーネントをプロジェクト要件に応じて自由に選択、統合できます。
- 活発なコミュニティサポート: 積極的な開発者コミュニティが存在し、豊富なサードパーティ拡張やサポートリソースを提供しています。
PHPixieは、開発者が高機能かつ高品質なWebアプリケーションを効率良く構築するのに役立ちます。小規模なプロジェクトから大規模な企業用途まで、幅広い開発シーンに適用可能です。
ServBayを使ったPHPixieプロジェクトの作成と実行
本ガイドでは、ServBayによって提供されるローカルWeb開発環境を利用し、PHPixieプロジェクトを作成・実行する方法を解説します。ServBay内蔵のPHP環境、Composer依存管理ツール、“Webサイト”機能を活用してウェブサーバーを設定し、簡単な手順でプロジェクトのローカルアクセスやデータベース/キャッシュ連携が行えます。
前提条件
- macOSにServBayをインストールし、起動していること。ServBayにはPHP、Composer、各種データベース(MySQL, PostgreSQL, MongoDB, Redis等)、Caddy Webサーバーが統合されています。
- 基本的なコマンドライン操作の知識があること。
PHPixieプロジェクトの作成
推奨のウェブサイト配置パス
ServBayではローカルのウェブサイトプロジェクトを /Applications/ServBay/www
ディレクトリにまとめて配置することを推奨しています。こうすることで管理やServBayの権限管理が容易です。
- Composerのインストール確認: ServBayには予めComposerが同梱されています。追加インストールは不要です。ターミナルを開いて
composer --version
でバージョン確認できます。 - プロジェクトディレクトリの作成: ServBay推奨のウェブサイトルートディレクトリで新たに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
ウェブサーバーの設定
ServBayのWebサイト機能を使ってCaddy Webサーバーを設定し、PHPixieプロジェクトを正しく起動できるようにします。
ServBayアプリケーションを開きます。
Webサイト (Websites) 一覧へ移動します。
新規ウェブサイトの追加をクリックします。
サイト設定情報を入力します:
- 名前: 例
My First PHPixie Dev Site
(ServBayでの内部識別用) - ドメイン名: 例
servbay-phpixie-test.local
(ブラウザでアクセスするローカル開発ドメイン) - ウェブサイト種別:
PHP
を選択 - PHPバージョン: 使用したいPHPバージョン(例
8.3
)を選択 - ウェブルートディレクトリ: プロジェクトの
web
ディレクトリを指定/Applications/ServBay/www/servbay-phpixie-app/web
なぜ
/web
ディレクトリを指定するのか?PHPixieプロジェクトのエントリーファイルは
web/index.php
です。セキュリティとベストプラクティスの観点から、ウェブサーバーのルートはプロジェクト直下ではなく、このweb
ディレクトリを直接指すべきです。これにより設定ファイルやvendorディレクトリなど、重要なファイルへのウェブ経由の直接アクセスを防げます。- 名前: 例
設定を保存します。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; // 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', 'Hello Memcached from ServBay!', 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', 'Hello Redis from ServBay!'); // データ保存 $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 Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // 一意のメールアドレス ])->execute(); // 挿入実行 return $this->response()->string('User added successfully.'); // 成功メッセージ返却 } // 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>This page is being generated dynamically by your PHPixie application running on ServBay.</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サイト設定とサンプルコードを追加したら、Webブラウザで設定したドメイン名にアクセスできます。
- ブラウザで
https://servbay-phpixie-test.local
にアクセス - "Welcome to PHPixie on ServBay" というページや各種サンプル機能リンクが表示されていれば成功です
うまく表示されない場合は次の点を確認してください。
- ServBayが起動しているか
- サイトの設定(特にドメイン名・Webサイト種別・Webルート)が正しいか
- ローカルのhostsファイルが
servbay-phpixie-test.local
を正しく解決しているか(通常ServBayが自動処理します) - PHPのバージョンが有効になっているか
データベース/キャッシュ統合サンプル
PHPixieは多様なデータベース・キャッシュシステムへの対応機能を標準で持っています。ServBayはMySQL、PostgreSQL、Redis、Memcached等を内蔵しており、PHPixieプロジェクトへの統合も簡単です。
重要: データベースを使う際は、必ずServBayで該当するDBサービス(例:MySQLやPostgreSQL)を起動し、このプロジェクト用のデータベースを作成してください。本ガイドではデータベース名を例として servbay_phpixie_app
としています。ServBay同梱のDB管理ツール(Sequel Ace, Postico, TablePlus等)やCLIクライアントで作成できます。デフォルト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 - マイグレーションファイル作成: PHPixieのCLIを使い新規マイグレーションを生成。ここでは
users
テーブル作成用です。bashphp pixie generate:migration create_users_table
1assets/migrations
ディレクトリ配下にタイムスタンプ付きの新しいマイグレーションファイルが生成されます。 - マイグレーションファイル編集: 生成された
assets/migrations/
配下の該当ファイル(例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() { // schemaビルダーで 'users' テーブル作成 $this->schema->create('users', function(Table $table) { $table->increments('id'); // 自動増分主キー $table->string('name'); // 名前カラム $table->string('email')->unique(); // メールアドレス(ユニーク) $table->timestamps(); // created_at / updated_at }); } public function down() { // schemaビルダーで '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
テーブルができているか確認してください。
RDB(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
で全ユーザーをJSON形式で取得できます。
NoSQLデータベース(Memcached/Redis)の設定と利用
ServBayはMemcached/Redisおよび各種PHP拡張も同梱しています。PHPixie側で設定するだけですぐに利用できます。
Memcached設定例 (assets/config/cache.php
):
assets/config/cache.php
を編集または新規作成し、下記設定を追加します。
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
を編集または新規作成し、下記設定を追加します。
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // ServBayのRedis標準アドレス
'port' => 6379, // ServBayのRedis標準ポート
'timeout' => 0,
'database' => 0, // Redis DBインデックス
],
];
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
メソッドで、それぞれのキャッシュコンポーネント利用例を示しています(設定に応じてMemcachedまたはRedisが使われます)。
- Memcachedテスト:
https://servbay-phpixie-test.local/home/memcached
でMemcachedへキー・バリューを書き込み&読み出しした結果が表示されます。 - Redisテスト:
https://servbay-phpixie-test.local/home/redis
でRedisへ書き込み&読み出しした値が表示されます。
いずれも、ServBayで該当のパッケージ(Memcached/Redis)が起動していることをご確認ください。
まとめ
以上の手順で、ServBayを活用してmacOSローカル環境上にPHPixieプロジェクトを構築・設定・実行できました。Composerによるプロジェクト生成、ServBayのWebサイト機能によるウェブサーバー設定、基本的なデータベースやキャッシュの統合、および連携確認方法を学べます。
ServBayの統合開発環境により、PHP開発環境構築の手間が大きく軽減され、コーディングに集中できます。このガイドが、PHPixieで新たなWebプロジェクトを素早く始める一助となれば幸いです!