WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Composerのインストールと使用方法

      2015/07/23

Composerとは

PHPは利用者が多い言語なので、いろいろなパッケージ(ある機能を実現するために実装されたコードのかたまり)やライブラリを公開されています。
Composerはパッケージを管理するためのツールです。

composerには大きくわけて以下のふたつの機能があります。

  • 複数のパッケージやライブラリを依存関係を解消してインストール・アップデート
  • インストールしたパッケージ・ライブラリのオートロード

他言語ではRubyのbundlerやNode.jsのnpmが同類に相当します。
なお、公式ドキュメント(の和訳)ではComposerが単なるパッケージ管理ツールではないことが明記され、依存関係解消機能をもっていることが強調されています。

ComposerはPHPの依存管理ツールです。 Composerはあなたのプロジェクトが必要とする依存ライブラリを定義できるようにして、インストールを行います。

Composerはパッケージ管理ツールではありません。そう、Composerは「複数」のパッケージやライブラリを扱います。

Composer ドキュメント日本語訳

Composerのインストール

Composerのインストール方法はプロジェクトごとにインストールするか、システム全体で使えるようにグローバルにインストールするかに大別されます。

個人的には後者のグローバルにインストールする方が使い勝手がいいと思っているので、ここではその手順を記載します。

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

composer.pharの移動先にパスが通っているか注意してください。
これでインストールは完了し、システムのどこからでもcomposerコマンドが使えるようになります。

Composerの使い方

パッケージのインストール

Composerでインストールするパッケージは、composer.jsonというファイルに所定の書式で記載しておく必要があります。
composer.jsonはプロジェクトのルートに配置します。

$ cd /path/to/project
$ vim composer.json
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

ここではドキュメントで紹介されている例をそのまま使います。
パッケージ名とパッケージバージョンが記載されていることがわかると思いますが、フォーマットの詳細などはドキュメントをご覧ください。

Composer ドキュメント日本語訳

下記コマンドでインストールを行えます。

$ composer install

コマンド実行後、vendorというディレクトリができて、そこにごっそりパッケージがインストールされていることがわかります。

$ tree vendor

インストールするパッケージはComposerのメインリポジトリであるPackagistから選択することができます。
また、composer:repositoriesというものを使えばGithubやPEARなどからも選択することも可能です。

Packagist

パッケージのオートロード

Composerはパッケージのオートロード機能も備えています。

プロジェクトのルートに以下のようなtest.phpというファイルを作ってみましょう。

<?php
require 'vendor/autoload.php';

$logger = new Monolog\Logger('test');
$logger->addInfo('info');

上記ファイルでは`require ‘vendor/autoload.php’;`でComposerのオートロードファイルを読み込んでいます。
このファイルは、ダウンロードしたライブラリ内のすべてのクラスのオートローディングします。

test.phpを実行すると、特にMonologクラス自体の定義ファイルをrequireしなくても、Monologが使用できていることがわかります。

$ php test.php
[2015-05-26 20:20:11] test.INFO: info [] []

composer.jsonにautoloadフィールドを追加することで、ユーザ定義のクラスもオートロードの対象とすることができます(※別途記載予定)。

参考資料

 - PHP , , ,