パッケージ管理ツールを使うとプロジェクトで使われているライブラリの依存関係を管理しやすくなり、依存しているライブラリのインストールも簡単になります。CakePHPもComposerを使ってインストールができるようサポートしており、開発環境ではZend Studioなどでの標準サポートされているなど、PHPでの開発では必須知識といえるほどの広がりを見せています。
本連載では、Composerの導入方法とその使い方から、利用者自身が作成したコードをComposerを使ってパッケージ管理する方法までを紹介します。
対象読者
PHPで開発を行っている方を対象としています。
必要な環境
この記事では、PHP 5.5を使用し、Windows 8.1、Linux(CentOS6.3)、Mac OS X(10.9)の環境で確認を行っています。ただし、Composer自身はPHP5.3.2以上からサポートしています。
Composerを使うメリット
今までPEARなどのパッケージ管理がありましたが、それらに代わりComposerが広まりつつある理由はなんでしょうか? 筆者が思うには、大きく分けて2つの理由があると思います。
(1)パッケージ管理される範囲
PEARでは通常、インストールしたパッケージはOS全体に反映していました。そのため、そのOS上で動作するすべてのプログラムに対してすべて適用する場合には非常に都合がよい方法でした。もちろん、PEARであってもインストールするフォルダをプロジェクトごとに設定してインストールすればできないことはないのですが、非常に手間がかかってしまいます。しかし、Composerではプロジェクト単位が基本になります。
もちろん、一長一短はあるのですがPHPで構成されたプロジェクトが1つのディレクトリ内で完結できるメリットがあります。従って、複数のプロジェクトで同じライブラリを使っていても異なるバージョンを利用できますし、他のプロジェクトでインストールされたライブラリに影響されることもありません。また、PHPというプログラム特性上、root権限などがなくても手軽に使える必要があるというニーズもあることと思います。
(2)クラスオートローディング機能を利用できる
クラスオートローディング機能とはPHP5.3から本格的に利用され始めた機能で、requireやincludeを記述することなく、クラスが使われているとそれに応じたファイルを自動的に読みこむ機能です。
Composerを使って導入したパッケージのクラスを利用する際には、requireやincludeなどを記述せずにプログラムが記述できます。特にライブラリ内にある、直接プログラマが記述しないクラスを使う際には非常に便利な機能です。
1つ目は管理体系の話であり、プログラマにとっては一度導入されればあまり違いがなく開発を進められると思いますが、この2つ目の利点はプログラマに対して直接メリットがあり、開発効率をあげることができます。このように、管理面とプログラマの効率面の2つの側面でメリットが得られる優れたパッケージ管理と言えると思います。
インストール
続いて、OSごとのComposerのインストール方法を紹介します。
Windows環境の場合
Windowsの場合にはインストーラーが用意されています。ComposerのダウンロードページからComposer-Setup.exeをダウンロードし、ファイルを実行するだけで終了します。
インストールする際には、コマンドを実行せずにコンテキストメニューからComposerコマンドを実行できるようにするための指定ができます(図2)。また、最後にPHPのパスを指定(図3)する必要があります。
また、コマンドラインを使ってもインストールすることができます。例えば、XAMPPでインストールしたフォルダ(c:\xampp\php)にインストールしたい場合には、以下のように直接ファイルを配置し、バッチファイルを作成します。
> cd c:\xampp\php > php -r "readfile('https://getcomposer.org/installer');" | php > echo @php "%~dp0composer.phar" %*>composer.bat
Linux/Mac環境の場合
LinuxもしくはMacの場合にはコンソール上でインストールができます。リスト2(インストール手順)のように、(1)プログラムの本体であるcomposer.pharをダウンロードします。次にcomposerコマンドとして機能するように、ダウンロードしたファイルを/usr/local/binなどサーチパスが通った場所にcomposerコマンドとして配置します(2)。
$ curl -sS https://getcomposer.org/installer | php //(1) #!/usr/bin/env php All settings correct for using Composer Downloading... Composer successfully installed to: /Users/phpuser/tmp/composer.phar Use it: php composer.phar $ sudo -s mv composer.phar /usr/local/bin/composer //(2)