Composerとは何か?
PHPでアプリケーションを開発していると、「他の人が作った便利なライブラリを使いたい」という場面が必ず出てきます。そのときに活躍するのが Composer(コンポーザー)です。
ComposerはPHPの依存関係管理ツールで、Node.jsでいうnpm、RustでいうCargoに相当します。必要なライブラリを一元管理し、バージョンの競合を防いでくれる、現代のPHP開発には欠かせないツールです。
Composerのインストール
macOS / Linux
ターミナルで以下のコマンドを実行します。
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
インストールが完了したら、バージョンを確認しましょう。
composer --version
# Composer version 2.x.x ...
Windows
Composer公式サイトからインストーラー(Composer-Setup.exe)をダウンロードして実行するのが最も簡単です。
プロジェクトの初期化
新しいPHPプロジェクトを始めるときは、まず composer init を実行します。
mkdir my-php-app
cd my-php-app
composer init
対話形式でプロジェクト名や説明を入力すると、composer.json ファイルが生成されます。
{
"name": "yourname/my-php-app",
"description": "A sample PHP application",
"require": {}
}
この composer.json がプロジェクトの依存関係を管理する設定ファイルです。
パッケージのインストール
require でパッケージを追加する
たとえば、人気のHTTPクライアントライブラリ guzzlehttp/guzzle をインストールしてみましょう。
composer require guzzlehttp/guzzle
コマンドを実行すると、composer.json が更新され、vendor/ ディレクトリにパッケージがダウンロードされます。
{
"require": {
"guzzlehttp/guzzle": "^7.0"
}
}
また、composer.lock というファイルも生成されます。これはインストールされた正確なバージョンを記録するファイルで、チーム開発で全員が同じ環境を再現するために重要です。
開発用パッケージの追加
テストツールなど、本番環境では不要なパッケージは --dev オプションを付けます。
composer require --dev phpunit/phpunit
composer.json では require-dev セクションに追記されます。
オートロードを活用する
Composerの強力な機能のひとつがPSR-4オートロードです。require 文をいちいち書かなくても、クラスを自動で読み込んでくれます。
composer.json にオートロードを設定する
{
"require": {},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
設定を反映するには、以下のコマンドを実行します。
composer dump-autoload
クラスを作成して使ってみる
src/Greeting.php を作成します。
<?php
namespace App;
class Greeting
{
public function hello(string $name): string
{
return "こんにちは、{$name}さん!";
}
}
index.php からオートロードを使ってクラスを呼び出します。
<?php
require __DIR__ . '/vendor/autoload.php';
use App\Greeting;
$greeting = new Greeting();
echo $greeting->hello('田中'); // こんにちは、田中さん!
vendor/autoload.php を一度読み込むだけで、src/ 以下のすべてのクラスが自動的に利用可能になります。
バージョン指定の書き方
composer.json のバージョン指定にはいくつかの記法があります。
| 記法 | 意味 |
|---|---|
^7.0 | 7.0以上8.0未満(後方互換を保った最新版) |
~7.2 | 7.2以上7.x未満(マイナーバージョン固定) |
7.0.1 | 7.0.1 完全固定 |
* | 任意のバージョン(非推奨) |
通常は ^(キャレット)を使うのがベストプラクティスです。
よく使うComposerコマンド一覧
# パッケージのインストール(composer.lockに基づく)
composer install
# パッケージのアップデート
composer update
# 特定パッケージのみアップデート
composer update guzzlehttp/guzzle
# パッケージの削除
composer remove guzzlehttp/guzzle
# インストール済みパッケージの一覧表示
composer show
# オートロードファイルの再生成
composer dump-autoload
# セキュリティ脆弱性チェック
composer audit
まとめ
Composerを使いこなすことで、PHP開発の生産性は大きく向上します。
composer.jsonで依存関係を宣言するcomposer.lockで環境を再現可能にする- PSR-4オートロードでクラスの管理を自動化する
LaravelやSymfonyなどのモダンなPHPフレームワークもComposerを前提に設計されています。ぜひ基本をしっかり押さえて、快適なPHP開発ライフを送りましょう!