こんにちはー!むちょこです。
「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版と考えていただくとわかりやすいかと思います。
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を導入したいプロジェクトのディレクトリに移動してから下記ページの「Command-line installation」に記載されているコマンドを実行するとインストールができます。
https://getcomposer.org/download/
Windows環境
Windowsへのインストールは、下記ページにインストーラーが用意されていますのでダウンロードして実行してください。
https://getcomposer.org/download/
インストールできたことを確認
$ php composer.phar
上のコマンドを実行して、下記のような表示が出てきたら成功です。
composerコマンドで実行できるようにする
このままだとインストールしたディレクトリを毎回指定しないと実行できないので、「composer」だけで実行されるように場所を移動します
(CentOSの場合です。他の環境では違う可能性がありますので、もし動かなかったら環境ごとの設定を調べてみてください)。
$ sudo mv composer.phar /usr/local/bin/composer
これでどこからでも「composer」コマンドで実行できるようになりました。
Composerの使い方
Composerの基本的な使い方をご紹介します。
依存パッケージの追加
プロジェクトに必要なパッケージを追加する場合は、composer requireコマンドを使います。
$ composer require パッケージ名:バージョン
たとえばsymfony/monolog-bundleの2.0バージョンを追加したいときは、下記のように書いて実行します。
$ composer require symfony/monolog-bundle:2.0
パッケージのインストール
プロジェクトに要求されるパッケージをインストールするためには、composer installを実行します。
$ composer install
基本的にはcomposer.lockを元にインストールしますが、もしもこのコマンドが失敗してしまうときはcomposer.lockを削除し、composer.jsonがある状態で再度実行すると成功することがあります。よかったらお試しください:)
パッケージの更新
依存関係に配慮しつつ、パッケージを最新のバージョンに更新するためにはcomposer updateを実行します。
$ composer update パッケージ名
パッケージ名を書かずに実行してすべてのパッケージを更新することも可能ですが、各パッケージが依存するバージョンに矛盾が生じて失敗してしまうことも多いのでオススメしません。
パッケージの削除
不要になったパッケージを削除するためには、composer removeを使います。
$ composer remove パッケージ名
たとえば先ほど入れたsymfony/monolog-bundleを削除したい場合は、下記のようなコマンドを実行します。
$ composer remove symfony/monolog-bundle