PHPのライブラリ管理ツール Composer のインストール方法と使い方を解説します。
Composerとは
Composerとは、PHPのライブラリ管理ツールです。
ライブラリを一元管理できる
PHPで使用するライブラリをすべてComposerで管理しましょう。現在使用しているライブラリの一覧を確認したり、アップデートしたりという作業が簡単になります。
依存関係を解決
ライブラリAを使うにはライブラリBとライブラリCが必要になる。また、ライブラリBにはライブラリDが必要・・・というような依存関係を自動的に解決してくれます。ライブラリAをインストールすれば、BCDも一緒にインストールしてくれます。あら便利、優しい、好き。
プロジェクトごとに管理できる
昔々、PHPのライブラリ管理にはPEARが使われていました。しかしこれは、システム全体のインクルードディレクトリにライブラリをインストールするものでした。一つのシステムで複数のプロジェクトを開発している場合、それでは都合が悪い場合があります。
Composerはプロジェクトディレクトリ下にライブラリをインストールします。複数のプロジェクトがあったとしても、個別にライブラリを管理することができます。
読み込みが簡単
複数のライブラリを使用している場合、それぞれのライブラリをひとつずつPHPスクリプトに読み込まなければなりません。
Composerでは、オートローディング機能により、たった1行の記述ですべてのライブラリを読み込むことができます。あら便利、優しい、大好き。
Composerのインストール
Homebrewでインストール
Macを使っていてHomebrewを導入済みならば、とても簡単にインストールすることができます。ターミナルで次のコマンドを実行するだけです。
% brew install composer
公式のインストーラを使う
Homebrewが入っていないMacやUNIX/Linuxを使っているならば、公式サイトにアクセスしてください。「Download」リンクをクリックすると、4行のスクリプトがあるので、それを実行します。
ちなみに公式サイトのトップページをリロードすると指揮者のおじさんが服を着替えます。なぜが人種も変わります。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '*****') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup. php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
1行目でインストーラをダウンロードし、2行目で整合性を確認し、3行目で実行し、4行目でインストーラを削除しています。
3行目のphp composer-setup.php
にオプションを指定することもできます。おすすめのオプションは次の通りです。
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
--install-dir
でComposerのインストール先を指定します。パスの通っているディレクトリを指定しましょう。--filename
でファイル名を指定します。初期値はcomposer.phar
なので、シンプルにcomposer
に変更します。インストール先の/usr/local/bin
は一般ユーザの書き込みが禁止されているのでsudo
しました。
Windowsにインストール
Windowsにインストールする場合はComposer-Setup.exe
というインストーラを使います。こちらからダウンロードしてください。
私はマカなので詳しい説明はしません(ドザに冷たい)。
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
Composerの使い方
オートローディング
ComposerでインストールしたライブラリをPHPスクリプトに読み込むには、次のコードをPHPスクリプトに記述します。
require_once 'vendor/autoload.php';
複数のライブラリを使用していても、この1行でOKです。後々になって新しいライブラリを追加しても、このままでOKです。あら便利、優しい、大好き。
よく使うコマンド
Composerはプロジェクトごとにライブラリを管理するので、プロジェクトディレクトリに移動してからコマンドを実行します。
% cd project-name #プロジェクトディレクトリへ移動
% composer <サブコマンド> #コマンドの実行
init
- Composerを使うとき、最初の1回だけ実行します。
- オプションを何も指定しなければ、対話形式で設定が進んでいきます。
- ほぼ何も入力せずreturnでOKです。
composer.json
ファイルが作成されます。これはComposerでインストールしたパッケージ等の情報が書き込まれるファイルです。vendor
ディレクトリが作成されます。この中にインストールするパッケージが格納されます。
% composer init #initを実行
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [masawo/project-name]: #パッケージ名の設定
Description []: #説明
Author [masawo <***@oopsoop.com>, n to skip]: #作成者の設定
Minimum Stability []: #最低安定性 dev|alpha|beta|RC|stable
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no #依存関係を対話的に定義したいか
Would you like to define your dev dependencies (require-dev) interactively [yes]? no #依存関係を対話的に定義したいか
Add PSR-4 autoload mapping? Maps namespace "Masawo\ProjectName" to the entered relative path. [src/, n to skip]: #PSR-4オートロードマッピングを追加するか
{
"name": "masawo/project-name",
"autoload": {
"psr-4": {
"Masawo\\ProjectName\\": "src/"
}
},
"authors": [
{
"name": "masawo",
"email": "***@oopsoop.com"
}
],
"require": {}
}
Do you confirm generation [yes]? #生成を承認するか
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Masawo\ProjectName;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';
require
- パッケージを
composer.json
に追加して、インストールします。 - 下記の例では
composer require <パッケージ名>
を実行しました。指定したパッケージと依存するパッケージがインストールされます。 - パッケージを指定せずに
composer require
を実行した場合は対話形式になります。 - インストールされたパッケージの情報は
composer.lock
ファイルに書き込まれます。
% composer require monolog/monolog
./composer.json has been updated
Running composer update monolog/monolog
Loading composer repositories with package information
Updating dependencies
Lock file operations: 2 installs, 0 updates, 0 removals
- Locking monolog/monolog (3.2.0)
- Locking psr/log (3.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Installing psr/log (3.0.0): Extracting archive
- Installing monolog/monolog (3.2.0): Extracting archive
10 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
Using version ^3.2 for monolog/monolog
バージョンを指定してインストールする場合は次のようにします。
#特定のバージョンを指定
% composer require monolog/monolog:3.1.0
#ワイルドカードで指定
% composer require monolog/monolog:"3.*"
#チルダ(~)はマイナーバージョンが最新のものをあらわす
#下記は2.3.1以上3.0.0未満をあらわす
% composer require monolog/monolog:"~2.3.1"
#ハット(^)はパッチバージョンが最新のものをあらわす
#下記は2.3.1以上2.4.0未満をあらわす
% composer require monolog/monolog:"^2.3.1"
install
composer.json
またはcomposer.lock
に記述されているパッケージをインストールします。- チーム開発で、リモートリポジトリから受け取った
composer.json
などを元にパッケージをインストールする場合に使います。個人開発ならばrequire
を使えば済むのでinstall
はあまり使わないのではないでしょうか。
% composer install
update
- パッケージを最新のバージョンに更新します。
- パッケージ名を指定しなければすべてのパッケージを、指定すればそのパッケージを更新します。
composer.lock
ファイルを更新します。
#すべてのパッケージを更新
% composer update
#特定のパッケージを更新
% composer update <パッケージ名>
remove
- パッケージを削除します。
% composer remove <パッケージ名>
self-update
- Composer自体をアップデートします。
- Homebrewでインストールした場合は、このコマンドを使わずにHomebrewでアップデートしましょう。
% composer self-update
search
- パッケージを検索します。
- ComposerのメインリポジトリはPackagistです。このリポジトリから検索されます。ウェブブラウザで検索したければ、このサイトで検索できます。
% composer search <キーワード>
show
- パッケージの情報を表示します。
- パッケージ名を指定しなければ、インストール済みのすべてのパッケージ名と簡単な説明が表示されます。
- パッケージ名を指定すると、そのパッケージの詳細な情報を表示します。
#インストール済みパッケージの一覧を表示
% composer show
#特定のパッケージの情報を表示
% composer show <パッケージ名>
list
composer
コマンドで使えるオプションとサブコマンドの一覧を表示します。- サブコマンドなしで単に
composer
を実行しても同じものが表示されます。
% composer list
help
- サブコマンドの使い方を表示します。
% composer help <サブコマンド名>
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
コメント