Fork me on GitHub

役立ちぬ開発史、それはただのブログ

覚えておくといい、ブログの時代は終わる。いつかその内、きっとたぶん…

「Composer 再入門」から学び直す、Composerの使い方

| Comments

少し前に、「Composer 再入門」を見ました。普段当たり前のように使っているComposerですが、大学の周りの人はまず知りません。また、一時期話題になったSpikaが最初出たときも、Composerは使われてませんでした。意外と知られてないもんなんだなあっと思うことがたまにあります。なので、コレを機にちょっとComposerについてまとめてみました。使うとすごく便利なので、使わないにしても知っておいて損はないです。むしろ、覚えときましょう。

Composerについて

enter image description here

Composerは、PHPの依存パッケージ管理ライブラリです。Rubyでいうところのbundler、node.jsでいうところのnpmみたいなものですね。もともとはPHPのフレームワークの一つであるsymfony2の機能でしたが、現在はデファクトスタンダードとみなされています。

従来は、プロジェクトでライブラリが必要になると、一つ一つをlibディレクトリなどにダウンロードしてコピーして、頑張ってrequire_onceしていました。なので、使うライブラリが多くなればなるほどコードも増え、requireonce地獄になり、アップデートなどのライブラリ管理が難しかったのです。しかし、Composerを使えば`requireonce 'vendor/autoload.php';`を書くだけで済みます。とても簡単にライブラリを管理できるのです。

Composerのインストール

インストールするには、PHPのバージョンが5.3.2以上であることが前提条件です。

  • ローカルインストール
1
curl -sS https://getcomposer.org/installer | php

インストール先を指定する場合、以下のコマンド内のinstall-dirをインストール先のパスに変えれば大丈夫です。

1
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
  • グローバルインストール
1
2
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Composerでライブラリのインストール方法

Composerをインストールした場所、composer.pharがあるところで

1
2
3
php composer.phar
または
./composer.phar

と打ち込むと色々なcomposerのコマンドを教えてくれます。

composer.jsonを作成し、以下のように必要なライブラリのpackage nameとversionを書きます。今回は、例としてmonologにしました。

1
2
3
4
5
{
    "require": {
        "monolog/monolog": "1.5.*"
    }
}

以下のコマンドを打つと、monologのversion 1.5.* 以降を自動でインストールしてくれます。

1
php composer.phar install

インストールすると、composer.lockとvenderディレクトリが作られます。composer.lockは、インストールしたVersionが記録されます。ライブラリは、venderディレクトリの中にインストールされます。以下の様なディレクトリ構造ができているはずです。

  • composer.json
  • composer.lock
  • composer.phar
  • vender
    • autoload.php
    • composer
    • monolog

このvenderの中にあるautoload.phpを以下のようにrequireすれば、インストールしたライブラリを読み込むことができます。

1
require_once 'vendor/autoload.php';

以上が、Composerを使ったライブラリのインストール方法です。

Composerの知っておきたい小技

  • Gitで管理

大抵の場合は、composer.jsoncomposer.lockだけをGitで管理します。なので、venderディレクトリとcomposer.pharを入れないように.gitignoreに書きましょう。


Gitで管理

  • composer.json
  • composer.lock

Gitに入れない

  • composer.phar
  • vender
    • autoload.php
    • composer
    • monolog

composer.lockも入れない人もいたりと様々なので、その辺は臨機応変に対処しましょう。

  • ライブラリの更新

composer.jsonにライブラリを追加したときや、バージョンをチェックして新しいものがあったときは、以下のコマンドを使いましょう。

1
php composer.phar update

新しいものをインストールして、composer.lockを更新します。

  • ライブラリの追加

composer.jsonに直に追記しても大丈夫なのですが、実は書かなくてもライブラリを追加できる方法があります。

1
php composer.phar require パッケージ名 バージョン

これはcomposer.jsonにを追加するコマンドですが、composer.jsonがなければ自動生成し、composer.phar installまで行ってくれます。

  • デバックログ

ライブラリをインストールする際に、-v or -vv or -vvvのオプションを使うとデバックログが出力されます。

1
php composer.phar install -vvv
  • ライブラリを検索

packageを探す場合

1
php composer.phar search キーワード

packageの詳細を見る場合

1
php composer.phar show パッケージ

また、packagistというサイトで探すこともできます。

  • スケルトンプロジェクト

Composerを使えば、既存のアプリケーションパッケージから新しいプロジェクトを作ることができます。以下のコマンドは、symfonyのブログにある例です。他のフレームワークも同様にプロジェクトを作れます。

1
php composer.phar create-project symfony/framework-standard-edition path/to/install

おわりに

「Composer 再入門」をベースに、Composerについてまとめました。公式ドキュメントには、今回使ってないコマンドがまだまだありますが、基本的なComposerの使い方については紹介できていると思います。既にComposerを知っている方々にとっては聞き飽きた話ですが、知らない人やこれから使う人に向けて要点を振り返りました。

参考先:

PHPでライブラリの依存管理をするツール「Composer」の使い方
Composerを活用したモダンな開発手法をPHPカンファレンス2013で発表してきた。 #phpcon2013
「Composer 再入門」を発表してきました( #KOF2013 )
[PHP]ComposerのCLIで利用できるコマンドの説明

Comments