本稿では、XOOPSでパッケージ管理ツールComposerを使う方法について紹介します。「Composerなんて知らん!」というXOOPSerにもできるかぎりわかりやすく紹介していきます。
セクション1ではComposerが何かまだ知らない方のために簡単にComposerの紹介をします。セクション2では、ComposerをまだMacにインストールしていない方向けにインストール方法を解説します。セクション3では、XOOPSにComposerを組み込む手順について解説します。
1. Composerって何?
ComposerはPHPの外部ライブラリを管理してくれるツールです。packagistというウェブサービスにてホスティングされているライブラリをコマンド一発でインストールすることができます。まるでiPhoneのAppStoreのようです。もちろんiPhoneのような画面はありませんが。
外部ライブラリの管理で複雑なのは依存関係の管理です。「このライブラリはPHP5.3.2以上じゃないと動かない」「このライブラリはPEARのあのライブラリに依存していてる」などなど、手動で管理するとなかなかの手間です。Composerはこうした依存関係も含めて管理してくれます。
外部ライブラリなどの依存関係を管理することを、パッケージ管理と呼びます。ComposerはPHPでパッケージ管理のデファクトスタンダードになっています。多くのライブラリがComposerで簡単にインストールできる形で提供されています。なので、Composerを使えるようにしておくと、外部ライブラリの利用がより手軽になります。
2. まずは下準備!ComposerをMacで使えるようにしよう!
お使いのMacで使えるようにするところから始めましょう。Composerはコマンドツールなので、お使いのMacの ~/bin
や /usr/local/bin
などにインストールすることになります。ここでは、/usr/local/binにインストールする方法を紹介します。コマンドに慣れてない人もついてきてください。コマンドは噛み付いたりしませんから :)
ターミナルを立ち上げましょう:
composer.phar
をダウンロードします:
curl -s http://getcomposer.org/installer | php
うまくダウンロードできれば composer.phar
ができているはずです。ls
コマンドで確認してみましょう:
ためにし、composer.phar
を叩いてみてもいいでしょう:
./composer.phar --version
最後に、composer.phar
を /usr/local/bin
ディレクトリに移動します:
sudo mv composer.phar /usr/local/bin/composer
ここでパスワードを聞かれたら、あなたのMacアカウントのパスワードを入れてください。
which composer
とやって/usr/local/bin/composer
と出ればインストール成功です。ためしに、composer
とだけ入力してコマンドを実行すれば、Composerのヘルプ情報が表示されます。
3. XOOPS Cube で Composer を組み込んでみよう!
XOOPS CubeでComoserを組み込むには次の3つのステップを行います。
- バンドル定義ファイル composer.json を作る
- Composerでライブラリをインストールする
- XOOPS側でComposerのライブラリを読み込むようにする
ステップ2では、PHPのクールなマイクロフレームワーク Silex を組み込む手順を例にとって説明します。
3.1 バンドル定義ファイル composer.json を作ろう!
必要なライブラリの情報は composer.json
という名前のファイルに書きます。拡張子が .json
なのでJSON形式で書きます。「PHPのなのにiniじゃないのか!」というツッコミはなしでおねがいします^^b
ひとまず、xoops_trust_path
に移動します:
cd /Applications/MAMP/htdocs/xoopscube/xoops_trust_path
# これは MAMP で環境を構築した場合の例です
からっぽの composer.json
を作ります:
touch composer.json
CotEditorで composer.json
を開きます:
open -a CotEditor composer.json
内容はこのようにします:
{
"minimum-stability": "dev",
"require": {
"silex/silex": "1.0.*"
}
}
この定義ファイルのより高度な書式についてはDocumentationを御覧ください。
保存すれば定義ファイルの出来上がりです。
3.2 Composerでライブラリをインストールしよう!
さて、定義ファイルの準備ができたので、外部ライブラリをインストールしてみましょう。
インストールは簡単です。composer.json があるディレクトリで次のコマンドを叩くだけです:
composer install
このような感じで、依存関係にあるパッケージも含めて、ツラツラとダウンロード&インストールしてくれます。
どうでしょう?随分簡単にインストールできるのではないでしょうか。
ちなみに、ここで確認しておきたいのが、vendor
ディレクトリができているかどうかです。composerでインストールしたパッケージは全部この vendor
ディレクトリに配置されます。中身を覗いてみると、たった今インストールしたパッケージの名前が目に付くと思います。
3.3 XOOPSがComposerのライブラリを読み込めるようにしよう!
ここまでで、外部ライブラリのインストールが完了しました。インストールしたと言っても、ダウンロードしてきて配置したに過ぎません。ライブラリをXOOPSで利用するには、XOOPS側でComposerのライブラリを読み込むようにする必要があります。
Composerでインストールしたライブラリは vendor/autoload.php
を require_once
すればすぐに利用できるようになります。(中にはautload.phpに対応していないライブラリもある)
そこで、XOOPSとしては一番最初に読み込まれる mainfile.php
に思い切って xoops_trust_path/vendor/autoload.php
を require_once
してしまします。
<?php
// …略
// Default is 'No'. Choose 'No' if you are unsure.
define('XOOPS_DB_PCONNECT', 0);
define('XOOPS_GROUP_ADMIN', '1');
define('XOOPS_GROUP_USERS', '2');
define('XOOPS_GROUP_ANONYMOUS', '3');
require_once XOOPS_TRUST_PATH.'/vendor/autoload.php'; // <-- ここに追加
// You can select two special module process excuting mode with defining following constants
//
// define('_LEGACY_PREVENT_LOAD_CORE_', 1);
// Module process will not load any XOOPS Cube classes.
// You cannot use any XOOPS Cube functions and classes.
// …略
余談
「mainfile.phpに書くのやだよっ!」という方は
require_once XOOPS_TRUST_PATH.'/vendor/autoload.php';
だけを書いたプリロードを作るという方法もありですね。プロジェクトによってはmainfile.phpを自由に変更できない場合がありますからね。
さて、これで、XOOPS側からComposerのライブラリを利用できるようになったはずです。
確認のために、mainfile.php
のとなりに composer_test.php
を作って、ライブラリが利用可能かチェックしてみるといいでしょう。
<?php
require_once 'mainfile.php';
// Silex\Applicationクラスが使える状態か確認っ
var_dump(class_exists('Silex\Application')); // true なら使える! false ならなにか手順にミスがあるかも...
まとめ
Composerとは何か?というところから入って、XOOPS CubeでComposerのライブラリを使う方法までひと通り解説しました。
Composerはとても手軽に外部ライブラリが使えるようになるツールです。XOOPS Cubeのプロジェクトでもcommonなどにとりあえず放り込んでしまいがちなライブラリをComposerで管理するようになるといいですね。是非試してみて下さい!