この記事にはプロモーションが含まれています。

【PHP】composer.lockファイルとは?composer.jsonとの違いを解説

【PHP】composer.lockファイルとは?composer.jsonとの違いを解説

ケケンタ

Composerを使うときにcomposer.lockファイルって出てくるけど、これってどんなファイルなの?
composer.jsonとどう違うの?

今回はこのような疑問にお答えするため、

Composerを使用するときに登場する
composer.lockファイルとcomposer.jsonファイルの違い

を解説します。

この記事でわかること
  • composer.lockファイルとcomposer.jsonファイルの違い
  • composer.lockファイルとcomposer.jsonファイルの役割
  • 後からパッケージを追加したり更新(修正)したりする方法
目次

kindle日替わりセールバナー

————

WordPressのスキルを伸ばしたい方おすすめの書籍



Composerとは?

Composerとは、PHPのパッケージライブラリを管理するためのツールです。

パッケージライブラリは、簡単に言うと便利な機能(関数やクラスなど)がすでに実装されている機能のまとまりのことです。

例えば、Goutteというパッケージライブラリを使用すると、スクレイピング(Web上から情報を自動収集する技術)を比較的簡単に実装することが可能です。

Composerの基本的な使用方法

この記事での詳しい解説は割愛させていただきますが、Composerを使用するときの大まかな流れは以下の通りです。

Composerを使用するときの流れ
  • composer.jsonファイルを新規作成する
  • composer.jsonファイルにインストールしたいパッケージ名:バージョンを記載する
  • ターミナルでcomposer installコマンドを実行する
  • パッケージがインストールされる&composer.lockファイルが生成される

上記の流れにあるとおり

Composerを使用する中で、composer.lockファイルとcomposer.jsonファイルの2つが登場します。

この記事で解説するのが、

「この2つのファイルはそれぞれどのような役割を持つのか?」

「何が違うのか?」

という点です。

Composerの使用方法を知りたい方は以下の記事をご覧ください。

composer.jsonとcomposer.lockの違い

それでは、この記事の本題である

composer.jsonとcomposer.lockの違い

について解説をしていきます。

ケケンタ

この2つのファイルの違いを理解するためには、それぞれのファイルの役割を知ることが大切です!

composer.jsonの役割

プロジェクト立ち上げ時に、インストールしたいパッケージをComposerへ伝えることがcomposer.jsonの役割です。

composer.jsonにインストールしたいパッケージ情報を記述しておき、composer installコマンドを実行することで、記述したパッケージや依存関係にあるパッケージが自動的にインストールされます。

composer.lockの役割

チーム開発のとき、チームメンバーが効率的に同じパッケージをインストールできるようにすることcomposer.lockファイルの役割です。

前述したとおり、初めてcomposer installコマンドを実行すると、Composerはcomposer.jsonファイルを参照し、そこに記述されているパッケージとその依存パッケージをインストールします。

それと同時に、「どんなパッケージをインストールしたのか」という情報がcomposer.lockファイルに記録されます。

そして、ここが重要なポイントですが、

composer.lockファイルがある状態でcomposer installコマンドを実行すると、Composerは.jsonではなく、.lockを参照してパッケージをインストールします。

composer installコマンド実行時の動き
composer installコマンド実行時の動き
ケケンタ

つまり、チームメンバー間で同じcomposer.lockファイルを共有してcomposer installコマンドを実行すれば、全員が簡単に同じパッケージをインストールできるということです。

裏を返すと、composer.lockファイルがあるときは、composer installコマンドを実行してもcomposer.jsonファイルに記述されている内容は参照されないということでもあります。
※この辺りについては、次章で詳しくお伝えします。

以上が、composer.jsonとcomposer.lockファイルの違いです。

パッケージを更新(修正)・追加する方法

前述のとおり、

composer.lockファイルがあるときは、composer installコマンドを実行してもcomposer.jsonファイルに記述されている内容は参照されません。

つまり、あとから

ケケンタ

パッケージの情報を変えたいな……
パッケージを追加したいな……

となったときにcomposer.jsonファイルを編集してcomposer installコマンドを実行しても、パッケージに変更が加わらないということです。

パッケージを「更新(修正)」または「追加」したいときは、以下のようにまた違うコマンドを使用します。

【方法】パッケージ情報を「更新(修正)」する
  • composer.jsonを編集する
  • composer updateまたはcomposer update パッケージ名コマンドを実行する

「composer update」と「composer update パッケージ名」の違い

  • composer update…… composer.jsonに記述されている全パッケージに対して更新が実行される
  • composer update パッケージ名…… composer.jsonに記述されている、指定したパッケージのみ更新が実行される
【方法】パッケージを「追加」する
  • composer require パッケージ名コマンドを実行する

パッケージのバージョンを指定したいとき

composer require パッケージ名:バージョン番号コマンドを実行する
(例)composer require hoge/huge:3.1.0

ケケンタ

Composerであとからパッケージを更新(修正)したり追加したりするときは、updaterequireコマンドを使うということを覚えておきましょう!

composer.lockファイルを上手く活用してチーム開発を効率化しよう

以上がcomposer.lockファイルとcomposer.jsonファイルの違いでした。

このように、2つのファイルの役割には明確な違いがあります。

特にcomposer.lockファイルは、チーム開発をする上で上手に活用できるとパッケージを安全かつ効率的にインストールできます。

ケケンタ

いまはまだ個人でしか開発していないという方も、composer.lockファイルとcomposer.jsonファイルの違いをしっかり整理しておくことでComposerへの理解も深まるかと思います。

この記事が少しでもお役に立ったなら何よりです!

Composerのcomposer.lockファイルとは?composer.jsonとの違いを解説のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次