Composer入門

こんにちはー!むちょこです。

「Composerって一体なんなの???」という質問をいただいたので、Composerをまだよく知らない方向けに、その有用性と使い方をまとめてみました!

Composerとは

Composerは、プロジェクトに必要なパッケージを一覧で見ることができたり、それらを一括インストール・更新できるツールです。わぁ便利!

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

https://getcomposer.org/doc/00-intro.md

Node.jsのnpmやRubyのbundlerに触れたことがある方は、あれらのPHP版と考えていただくとわかりやすいかと思います。

公式サイト

https://getcomposer.org/

Composerを使う3つの理由

1. パッケージ同士の依存関係を自動解決!

とあるパッケージをインストールしたいと思ったとき、そのパッケージが他のパッケージに依存していないかどうかを一つ一つ確認していくのは手間ですよね。

「このパッケージが依存しているパッケージが依存しているパッケージは……。バージョンは大丈夫かな……」などと延々と確認していくことを想像すると発狂しそうです。

Composerはこういった面倒な依存関係の確認を自動で行い、追加したいパッケージに必要なパッケージのインストールまでしてくれます。もしも依存関係に矛盾が生じた場合はエラーで教えてくれるので、間違いなく依存関係がすっきり解決した状態の環境を作ることができます。

2. 他の人との共有がスムーズ!

Composerを使っている場合、インストールした各パッケージのファイルを共有する必要はありません。代わりにcomposer.lockファイル(場合によってはcomposer.json)を共有するだけで、相手は同じパッケージの同じバージョンを揃えることが可能になります。

依存パッケージに変更があったときも、プロジェクトメンバーに逐一変更内容を周知しなくとも変更後のcomposer.lockを共有するだけで済みます。

3. autoload機能が便利!

Composerを使うと、もれなくautoloaderが使えるようになります。

autoloaderとは、その名のとおり自動でファイルをロードしてくれる機能で、これを使えばもうrequireやincludeでファイルを都度呼び出す必要はありません。

一度使ったらautoloaderなしの開発など考えられなくなるほどの超便利機能ですが、自作するのは手間なので素直にComposerのautoloaderを使う方がほとんどです。

Composerのインストール方法

ComposerのインストールにはPHP 5.3.2以降が必要です。予めご準備ください。

Linux環境

Linuxでは、Composerを導入したいプロジェクトのディレクトリに移動してから以下のコマンドを実行するとインストールができます。

コマンド
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

Windows環境

Windowsへのインストールは、インストーラーが用意されていますのでこちらからダウンロードして実行してください。

https://getcomposer.org/download/

Composerの使い方

Composerの基本的な使い方をご紹介します。

依存パッケージの追加

プロジェクトに必要なパッケージを追加する場合は、composer requireコマンドを使います。

composer requireの使い方
$ composer require パッケージ名:バージョン

たとえばsymfony/monolog-bundleの2.0バージョンを追加したいときは、下記のように書いて実行します。

composer requireの使用例
$ composer require symfony/monolog-bundle:2.0

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

プロジェクトに要求されるパッケージをインストールするためには、composer installを実行します。

composer installの使い方
$ composer install

基本的にはcomposer.lockを元にインストールしますが、もしもこのコマンドが失敗してしまうときはcomposer.lockを削除し、composer.jsonがある状態で再度実行すると成功することがあります。よかったらお試しください:)

パッケージの更新

依存関係に配慮しつつ、パッケージを最新のバージョンに更新するためにはcomposer updateを実行します。

composer updateの使い方
$ composer update パッケージ名

パッケージ名を書かずに実行してすべてのパッケージを更新することも可能ですが、各パッケージが依存するバージョンに矛盾が生じて失敗してしまうことも多いのでオススメしません。

パッケージの削除

不要になったパッケージを削除するためには、composer removeを使います。

composer removeの使い方
$ composer remove パッケージ名

たとえば先ほど入れたsymfony/monolog-bundleを削除したい場合は、下記のようなコマンドを実行します。

composer removeの使用例
$ composer remove symfony/monolog-bundle