composerに入門してみた【ubuntu18.04】
composerとは
composerはライブラリ・パッケージ管理ツール。よく勘違いしがちだが、パッケージリポジトリではない。(自分も最初はそう思っていた)
ちなみにcomposerがデフォルトで対応しているのは、packagistというパッケージライブラリ。
なぜcomposerを使うのか?
モダンなPHPを書くにあたってもはやcomposerはデファクトスタンダードとなっている。
なぜcomposerはそこまで利用されるのか。自分が考える理由としては以下が挙げられる。
- root権限なしでも扱える
- ローカルインストール可能
- オートローダー機能
root権限なしでも扱えるとはどういうことか。
通常何かをインストールする場合、yumやaptなどのOS付属のコマンドをroot権限ありで実行しなくてはならない。自分たちで管理しているサーバーであればそれで問題ないが、例えばインストールする環境がレンタルサーバーなどの場合、一般的にサーバー利用者にはroot権限はないため、yumやaptを叩くことはできない。
composerなしで何かをインストールするには、自分でダウンロードしたライブラリをFTPツールでサーバーにアップロードし、インストール作業を自力で行わなければならない。依存も解決し、バージョンアップなども行うことを考えると、あまりにも保守コストがかさんでしまうため少々現実的ではない。
composerであればroot権限なしでも実行できるので、レンタルサーバーであってもライブラリをインストールできる。もちろん依存解決はcomposerが勝手にやってくれるので、導入・保守コストも抑えられる。
また、composerはローカルインストールが可能なので、グローバル空間を汚すことなく導入できる。もしもcomposerを消すことにしても簡単に消すことが可能になる。
例えばmac内などに保存する場合は特に空間を汚さないようにするメリットが活きる。
composerはさらにオートローダーとして動かすこともできる。そもそもはライブラリの名前解決のための機能だが、自分で設定ファイルを書き換えればパッケージ外のソースコードにも適用できる。
composerのインストール
composerの公式サイトで用意されているインストール用のphp(composer-setup.php)を使えばすぐできる。
ダウンロードからインストールまでをまとめてくれたサイトがあるのでただコピペして実行すれば完了する。
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer
rm composer-setup.php
参考: 塩焼きブログ Ubuntu 18.04にComposerをインストールする
composerの基本的な使い方
基本的な流れとしては以下の2ステップ。
1. composer.jsonを編集
2. composerコマンドで実行
例えばライブラリをインストールする場合
1. composer.jsonにインストールしたいライブラリ情報を記載する
{
"name": "enutake/enutake-composer",
"require": {
"abraham/twitteroauth": "^1.0"
}
}
2. コマンドでインストール
$ composer install
たったこれだけでライブラリを導入できるのは楽ですね。
composerのよく使うコマンド
ライブラリのインストール
$ composer require ライブラリ名
これだけでcomposer.jsonへの記述+インストールまで全部行ってくれる。
ライブラリ開発環境・本番環境切り分けインストール
$ composer require ライブラリ名 --dev
$ composer require ライブラリ名 --no-dev
本番環境にはいらないライブラリも多々あるので、開発用ライブラリだとわかるように–devオプションをつけておく。例えばテスティングツールなど。
本番環境では–no-devオプションをつければ開発用ライブラリはインストールされずに済む。
ライブラリの確認
$ composer show
何がインストールされているのか一覧にしてくれる。
ライブラリの削除
$ composer remove ライブラリ名
composerからのライブラリ削除をする。完全削除のようなので本番環境で利用する際は注意。
オートロードの反映
$ composer dumpautoload
composer.jsonにオートロードの設定を書いた後にこのコマンドを実行すると反映される。