はじめに#
Composerは、PHPの依存関係管理ツールです。プロジェクトが依存するライブラリを宣言すると、Composerがそれらのライブラリのインストールとアップデートを管理します。
依存関係管理#
Composerは、YumやAptのようなパッケージマネージャとは**異なります**。「パッケージ」またはライブラリを扱いますが、プロジェクトごとに管理し、プロジェクト内のディレクトリ(例:vendor)にインストールします。デフォルトでは、グローバルには何もインストールしません。したがって、依存関係マネージャです。globalコマンドを使用することで、便宜上「グローバル」プロジェクトをサポートしています。
この考え方は新しいものではなく、ComposerはNode.jsのnpmやRubyのbundlerから強く影響を受けています。
例えば
- 複数のライブラリに依存するプロジェクトがあるとします。
- これらのライブラリの中には、他のライブラリに依存するものもあります。
Composer
- 依存するライブラリを宣言できます。
- インストール可能なパッケージのバージョンを特定し、それらをインストールします(プロジェクトにダウンロードします)。
- 1つのコマンドで全ての依存関係を更新できます。
依存関係の宣言の詳細については、基本的な使用方法の章を参照してください。
システム要件#
最新バージョンのComposerは、実行にPHP 7.2.5以降が必要です。長期サポート版 (2.2.x) は、レガシーなPHPバージョンを使用している場合に備え、PHP 5.3.2+へのサポートを提供しています。いくつかの重要なPHP設定とコンパイルフラグも必要ですが、インストーラを使用すると、非互換性に関する警告が表示されます。
Composerは、効果的に動作するためにいくつかのサポートアプリケーションを必要とし、パッケージ依存関係の処理プロセスをより効率的にします。ファイルの解凍には、7z(または7zz)、gzip、tar、unrar、unzip、xzなどのツールを使用します。バージョン管理システムに関しては、ComposerはFossil、Git、Mercurial、Perforce、Subversionとシームレスに統合し、アプリケーションの円滑な動作とライブラリリポジトリの管理を保証します。Composerを使用する前に、これらの依存関係がシステムに正しくインストールされていることを確認してください。
Composerはマルチプラットフォームであり、Windows、Linux、macOSで同等の動作をするよう努めています。
インストール - Linux / Unix / macOS#
Composer実行ファイルのダウンロード#
Composerは、コマンドラインから直接実行できる便利なインストーラを提供しています。このファイルをダウンロードするか、GitHubで確認して、インストーラの内部動作の詳細を知ることができます。ソースコードはプレーンなPHPです。
簡単に言うと、Composerをインストールする方法は2つあります。プロジェクトの一部としてローカルにインストールするか、システム全体で実行可能なファイルとしてグローバルにインストールするかです。
ローカルインストール#
Composerをローカルにインストールするには、プロジェクトディレクトリでインストーラを実行します。ダウンロードページを参照して手順を確認してください。
インストーラはいくつかのPHP設定をチェックし、作業ディレクトリにcomposer.pharをダウンロードします。このファイルはComposerバイナリです。PHAR(PHPアーカイブ)であり、コマンドラインなどで実行できるPHPのアーカイブ形式です。
Composerを実行するには、php composer.pharを実行します。
--install-dirオプションを使用してComposerを特定のディレクトリにインストールし、--filenameオプションを使用して名前を変更することもできます。ダウンロードページの手順に従ってインストーラを実行する際に、以下のパラメータを追加します。
php composer-setup.php --install-dir=bin --filename=composer
Composerを実行するには、php bin/composerを実行します。
グローバルインストール#
Composer PHARは好きな場所に配置できます。PATHに含まれるディレクトリに配置すれば、グローバルにアクセスできます。Unixシステムでは、実行可能にして、phpインタプリタを使わずに呼び出すこともできます。
ダウンロードページの手順に従ってインストーラを実行した後、以下のコマンドを実行してcomposer.pharをPATHに含まれるディレクトリに移動できます。
mv composer.phar /usr/local/bin/composer
ルート権限を必要とせずに、ユーザー専用にインストールしたい場合は、一部のLinuxディストリビューションでデフォルトで使用可能な~/.local/binを使用できます。
注記: 権限が原因で上記の操作に失敗する場合は、
sudoを使用して再度実行する必要があるかもしれません。注記: 一部のmacOSバージョンでは、
/usrディレクトリがデフォルトで存在しません。「/usr/local/bin/composer: No such file or directory」というエラーが発生する場合は、先にディレクトリを手動で作成する必要があります:mkdir -p /usr/local/bin。注記: PATHの変更方法については、Wikipediaの記事を参照するか、お好みの検索エンジンを使用してください。
php composer.pharではなくcomposerを実行してComposerを実行します。
インストール - Windows#
インストーラの使用#
これは、Composerをマシンに設定する最も簡単な方法です。
Composer-Setup.exeをダウンロードして実行します。最新のComposerバージョンがインストールされ、PATHが設定されるため、コマンドラインの任意のディレクトリからcomposerを呼び出すことができます。
注記: 現在のターミナルを閉じます。新しいターミナルで使用方法をテストしてください。これは、PATHはターミナルの起動時にのみロードされるため重要です。
手動インストール#
PATH上のディレクトリに変更し、ダウンロードページの手順に従ってインストーラを実行してcomposer.pharをダウンロードします。
composer.pharと一緒に新しいcomposer.batファイルを作成します。
cmd.exeを使用
C:\bin> echo @php "%~dp0composer.phar" %*>composer.bat
PowerShellを使用
PS C:\bin> Set-Content composer.bat '@php "%~dp0composer.phar" %*'
まだ追加されていない場合は、PATH環境変数にディレクトリを追加します。PATH環境変数の変更方法については、この記事を参照するか、お好みの検索エンジンを使用してください。
現在のターミナルを閉じます。新しいターミナルで使用方法をテストしてください。
C:\Users\username>composer -V
Composer version 2.4.0 2022-08-16 16:10:48
Dockerイメージ#
Composerはいくつかの場所でDockerコンテナとして公開されています。composer/docker READMEのリストを参照してください。
使用例
docker pull composer/composer
docker run --rm -it -v "$(pwd):/app" composer/composer install
既存のDockerfileにComposerを追加するには、事前にビルドされたサイズの小さいイメージからバイナリファイルをコピーするだけです。
# Latest release
COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
# Specific release
COPY --from=composer/composer:2-bin /composer /usr/bin/composer
詳細な使用方法については、イメージの説明を参照してください。
注記: Docker固有の問題は、composer/dockerリポジトリで報告してください。
注記: 上記のイメージ名として、composer/composerの代わりにcomposerを使用することもできます。これは短く、Docker公式イメージですが、直接私たちによって公開されているわけではないため、通常は数日遅れて新しいリリースを受け取ります。**重要:** 短縮エイリアスのイメージにはバイナリのみの等価物がありません。そのため、COPY --fromアプローチにはcomposer/composerを使用する方が適しています。
Composerの使い方#
Composerをインストールしたので、使用準備ができました!次の章で簡単なデモを行います。
基本的な使用方法 →
タイプミスを見つけましたか?このドキュメントに問題がありますか? フォークして編集してください!