PHPで必須!composerを理解しよう

「composerってなんとなく実行しているけど、何をやっているかわからない。。。」
「composerのメリットってなんだろう?別に使わなくてもいいんじゃないの?」

こんな思いをお持ちではないでしょうか。

そこで今回は、PHPで必須のcomposerを解説しました。

composerの利用例も解説しているので、ぜひ参考にしてみてくださいね。

composerの役割

 

パッケージとはなにか?

そもそもパッケージとはなんでしょうか?

パッケージというのは、開発する際に便利な仕組みや関数をまとめたプログラムのことです。

パッケージというものは、システム開発において流用されることを前提として作られています。

Laravelで使われているパッケージを確認する

では、ここで具体的にパッケージがどのようなものか見ていきます。

例えば、WEBフレームワークとして有名なLaravel のソースコードのcomposer.jsonというファイルを一部を見てみると、

 

ここで「guzzlehttp/guzzle」という文字列に注目です。

Laravelは「guzzlehttp/guzzle」というパッケージを利用して作られていることがわかります。

 

もし、guzzlehttpのプログラムがパッケージとして無ければ、guzzlehttpで書かれている内容を開発者自ら開発する必要がありました。

しかし、パッケージという仕組みによって、開発者自らそれらを開発する必要はなくなります。

 

composerはこういったパッケージ群を管理するためのツールなのです。

composerを使うなら、3つのファイルを理解すべし

composerは次の3つのファイルについて理解しておけば、まず開発に困りません。

composer.pharは、composerの実行ファイル

composer.pharはcomposerにおける実行ファイルです。

自分のPHPのプロジェクトにcomposerをインストールすると、自動的にcomposer.pharというファイルが生成されます。

このファイルを実行することで、composerのコマンドを実行できるようになります。

composer.jsonにはcomposerの設定を書く

composerをインストールすると、composer.jsonというファイルも生成されます。

これはcomposerの設定を記述するためのファイルです。

パッケージの依存関係を記録するcomposer.lock

composer.lockはcomposer installを実行したときに作られるファイルです。

composer install実行時のパッケージの依存関係を自動に書き込まれるようになっています。

実際に開発を進める上では、編集することはほとんどありません。

composerでよく使うコマンド

開発でよく利用するcomposerのコマンドを2つ、紹介していきます。

composer install

開発で一番利用するコマンド、composer install

実行するコマンドはこのようになります。

composerのリファレンスには、

If there is a composer.lock file in the current directory, it will use the exact versions from there instead of resolving them. This ensures that everyone using the library will get the same versions of the dependencies.

If there is no composer.lock file, Composer will create one after dependency resolution.

とあります。

要約すると、

composer.lockがあればcomposer.lockを基にパッケージをインストールします。

composer.lockがなければ、composer.jsonを基にパッケージをインストールする。

という仕様になっています。

composer update

開発で次に実行するコマンドは、composer updateです。

実行するコマンドは次のようになります。

composerのリファレンスにこのようにあります。

In order to get the latest versions of the dependencies and to update the composer.lock file, you should use the update command. This command is also aliased as upgrade as it does the same as upgrade does if you are thinking of apt-get or similar package managers.

要約すると、composer.lockの依存関係を更新する(update) する、ということです。

composer のメリット

composerを使うためのメリットを解説していきます。

composerを使うメリット

composerを使うメリットは3つです。

パッケージ管理の手間が省ける

パッケージを利用することでプログラムを便利に書くことができます。

PHPのパッケージは、gihubなどでオープンソースになっており、世界の開発者が開発したソースコードを利用しながら開発をすすめることができます。

しかし、一方で利用するパッケージが増えてくると、それらを管理するのも大変ものです。

composerを使えば、そういった管理の手間から解放されます。

環境構築が簡単にできる

composerを利用することでLaravelや、CakePHPなどの有名なWEBフレームワークの環境をコマンド、一つでセットアップすることができます。

例えば、Laravelの場合は次のようなコマンドを実行すると、Laravelのソースコードが生成されます。

開発環境ごとにパッケージをインストールできる

開発を進めていると、

「開発時はAというパッケージは必要だけど、本番環境にはAというパッケージは必要ないんだよなー」

ということが場面がよくあります。

そこでrequire-devです。

composer.jsonには、require-devと書かれている箇所があります。

require-dev開発環境でしか利用しないパッケージを書いていおくと、開発環境にだけパッケージをインストールすることができるようになります。

まとめ

いかがでしたか?

今回は、composerについて解説しました。

これで、composerを便利に使って開発が進められるようになります。

ぜひ、参考にしてみてくださいね。