baserCMS用のLaravel Valetカスタムドライバを書いた
こんにちは、ナカエです。
先日発表されたMac用の簡易PHP開発環境構築ツール Laravel Valet 。
Vagrant環境構築ツールであるLaravel Homesteadに比べセットアップの手間が少なく、サーバの設定や/etc/hostsなどの煩わしい管理を最低限に抑えられます。
また、仮想マシンを利用しないので高速に動作するのもHomesteadに対する優位の一つでしょう。
多人数でのWebアプリケーション開発にはHomestead、個人での開発や単純なWebサイトの開発(ただしMacに限る)であればValetといった感じでしょうか。
ValetはLaravel専用というわけではなく、決まった形式のカスタムドライバを用意すれば、好きなPHPのFWやCMSをその環境で動かすことができます。
baserCMS用のドライバを作った
というわけで試しにbaserCMS用のカスタムドライバを書きました。
大まかな利用手順は下記の通りです。
- Homebrewをインストール
- PHP5.6をインストール ※baserCMSはPHP7で動かないので注意
- Composerをグローバルインストール
- Valetをインストール
- Valetで管理するディレクトリを登録
- ドライバファイルを所定のディレクトリに追加
- baserCMSをクローン
- ブラウザで http://basercms.dev にアクセス
すでにValetを利用中であれば、リポジトリのドライバのphpファイルを~/.valet/Drivers/BaserCMSValetDriver.phpとして配置するだけでOKです。
詳しい手順はリポジトリやそれぞれのツールのドキュメントを参照してください。
カスタムドライバの概要
"ドライバ"と聞くと低レイヤーの印象があるかもしれませんが、ただのPHPファイルです。カスタムドライバの作成は、3つのメソッドを実装するだけなので割とお手軽でした。
- プロジェクトごとに利用すべきドライバを判定するための serves()
- 指定されたURLが静的ファイルかどうかを判定する isStaticFile()
- フロントコントローラ(FWやCMSのエントリポイントとなるファイル)のパスを返す frontControllerPath()
サブディレクトリごとに利用するドライバを明示的に設定するものかと思っていましたが、 server()メソッドによる判定により、~/.valet/Driversディレクトリに配置されているドライバの中から適切なものを選んでくれるようですね。なるほどこれは楽ちんです。
今回のBaserCMSValetDriverはプロジェクトにlib/Baserディレクトリが存在する際に利用されるようになっています。
また、有名どころのFWやCMSは、本家のリポジトリにドライバがマージ済みの物も多いです。今回もCakePHP用のドライバが参考になりました。
https://github.com/laravel/valet/tree/master/cli/drivers
感想
初回のValetの構築は少し手間がかかりますが、一度valet parkコマンドを走らせてしまえば、次回からは登録されたディレクトリ内にプロジェクト用のサブディレクトリを作成するだけで環境構築が済みます。この省力化が最大の魅力です。
もちろん、VagrantやDockerによる仮想化を用いて開発環境を統一して開発している場合は代替にはならないでしょう。
しかし、普段のWeb制作、開発でMAMPなどMacローカルなPHP環境を利用している方にとっては良い選択肢なのではないでしょうか。