Skip to content
Latchkey

Composerとは何か - PHPの依存関係マネージャーを解説

ComposerはPHPの依存関係マネージャーです。プロジェクトに必要なライブラリを解決してインストールし、それらがそのまま動くようにautoloaderを生成します。

Composerは、モダンでlockfile駆動の依存関係管理とオートローディングをもたらすことで、PHP開発を変革しました。要件をcomposer.jsonに宣言すると、Composerがバージョンを解決し、Packagistからパッケージをインストールし、コードがそれらを使えるようにautoloaderを組み立てます。

Composerとは

Composerはプロジェクト単位のPHP依存関係マネージャーです。composer.jsonを読み取り、互換性のあるパッケージバージョンのセットを解決し、それらをvendor/以下にインストールし、正確なバージョンをcomposer.lockに記録します。デフォルトではPackagistレジストリからパッケージを取得し、PSR-4のautoloaderを生成します。

動作の仕組み

composer.jsonには必要なパッケージと制約がリストされます。「composer install」はcomposer.lock(存在する場合)を読み取り、まさにそれらのバージョンをインストールします。「composer update」は再解決してlockfileを書き換えます。生成されたvendor/autoload.phpにより、手動のrequire文なしにコードが必要に応じてクラスを読み込めるようになります。

使用例

パッケージをrequireし、その後lockfileからインストールします。

Common Composer commands
# add a dependency
composer require guzzlehttp/guzzle

# install exactly from the lockfile (use in CI)
composer install --no-interaction --prefer-dist

CI/CDでの役割

CIでは「composer install」がロックされた依存関係セットを復元し、「--no-interaction」を使うことでログをクリーンに保てます。vendor/ディレクトリやComposerのcacheを実行間でcacheすることで、パッケージの再ダウンロードを回避できます。composer.lockをコミットすることで、開発者がテストしたのと同じバージョンをCIがインストールするようになり、buildの再現性が保たれます。

代替手段

Composer以前、PHPはPEARに依存していましたが、アプリケーションの依存関係についてはComposerがほぼこれを置き換えました。主流の競合マネージャーは存在せず、Composerが事実上の標準であり、Packagistがその中央レジストリとなっています。

重要なポイント

  • ComposerはPHPの依存関係を管理し、autoloaderを生成します。
  • composer.jsonが要件を宣言し、composer.lockが解決されたセットを固定します。
  • CIでは「composer install」をcacheと組み合わせて使い、再現可能で高速なbuildを実現します。

関連ガイド