本稿では PHP アプリケーションのパッケージ・ライブラリの依存関係を管理するツール「Composer」の概要について解説します。
Composerとは?
PHP で WEB アプリケーションを作成する際、PHP の関数だけでコーディングする場合は少ないのではないでしょうか。 たいていの場合は、コーディングを楽にしてくれるフレームワークやライブラリを利用して開発しているはずです。 例えば、ZendFramework や Symfony などのフレームワークを利用したり、PEAR などのライブラリを利用するでしょう。
Composer は、PHP のプロジェクトが必要とするライブラリやパッケージを管理する「ライブラリ依存管理ツール」です。 その PHP プロジェクトで必要なパッケージ(ライブラリ)は何かを列挙すると、それらを自動的にインストールしてくれる機能を持ちます。
Composer が優れている点は、パッケージの依存関係を解決してくれる点です。 例えば、プロジェクトには A というパッケージが必要だったとしましょう。 しかし A を利用するためには B というライブラリが必要だとします。 手作業でライブラリを収集する場合は、このような依存関係を全て自らで解決しないといけませんが、Composer では利用するパッケージとして A を宣言すれば、自動的に B も含めてパッケージをインストールしてくれます。
まずは流れを掴みましょう
具体的な例が無いとイメージが沸かないと思いますので、インストールだの何だのの前に、まずは簡単な利用例を示したいと思います。 (Composerが何のツールかもわからずにインストールするのは怖いですよね) これから、新しい PHP プロジェクトを作成するとします。 その新しいプロジェクトでは、ログライブラリ monolog を利用するため、monolog をインストール(ダウンロード)します。
まずは PHP アプリケーションを作成するディレクトリに composer.json という JSON ファイルを作成します。 composer.json には、次のように記述します。
{
"require": {
"monolog/monolog": "1.0.*"
}
}
composer.json は、アプリケーションで利用するパッケージ(ライブラリ)を列挙します。 ここに列挙したパッケージが、Composer による管理の対象になります。
それでは、composer.json に列挙したパッケージをインストール(ダウンロード)してみます。 composer install コマンドを実行します。
$ composer install
すると、vendor というフォルダが作成されました。 この vendor というフォルダの中を表示してみると、プロジェクトで必要とする monolog がダウンロードされたことがわかります。
$ ls -l vendor
-rw-r--r-- 1 OSCA staff 183 9 23 15:45 autoload.php
drwxr-xr-x 10 OSCA staff 340 9 23 15:45 composer
drwxr-xr-x 3 OSCA staff 102 9 23 15:45 monolog
vendor フォルダの直下には、autoload.php というファイルも生成されました。 この PHP ファイルには、 composer.json で列挙したライブラリを読み込む処理が書かれていますので、実際にコーディングを始める際には、つぎのように vendor/autoload.php を読み込めば、全てのライブラリが利用できるようになります。
require_once("vendor/autoload.php");
どうでしょうか? Composer の便利さが伝わったでしょうか? それでは、Composer を導入してみましょう。
Composer のインストール
Composer は、Windows, Mac, Linux でそれぞれインストール方法が異なります。
Windows にインストールする場合
Windows 向けには、公式サイトで実行ファイル(.exe)が提供されています。 別稿にインストール手順をまとめましたので、そちらを参考にしてください。
Mac にインストールする場合
Mac にインストールするには、Homebrew を利用するのが便利でしょう。 別稿にインストール手順をまとめましたので、そちらを参考にしてください。
Linux にインストールする場合
Linux にインストールする場合には、自身で composer.phar ファイルを生成する必要がありますが、それも難しい手順ではありません。 こちらも別稿を参考にしてください。 CentOS を例に解説していますが、ほとんどのディストリビューションで手順は変わりません。