PHP composer パッケージ管理の使い方

  • -

    シェア
  • ---

    LINEで送る
  • -

    はてなブックマーク
    ブックマーク
  • -

    pocket
  • -

    rss
他言語サイト
us us

phpのcomposerはパッケージを管理するコマンドツールです。

パッケージはphpで用意されている、いろいろな機能の拡張プログラムです。このパッケージを必要に応じてインストールすることで、効率的に目的の機能を実装したプログラムを構築することができます。

そのcomposerコマンドの使い方をご紹介します。

phpのパッケージとは何か?

phpはいろいろな機能を追加することができます。それらの機能がパッケージという単位でGitHubなどで公開されています。そのパッケージを管理するツールがcomposerです。

Pythonのpip、Rubyのgemと同じようなものと考えればよいでしょう。

プログラムパッケージ管理
PHPcomposer
Pythonpip
Rubygem

composerのコマンドを使って、パッケージの追加・アップデート・削除などの処理を行います。また最近では、laravelなどのフレームワークもcomposerを使って簡単にインストールすることができます。

phpを扱う場合にはcomposerは必ず使うものと思っていいです。

composerは、OSS (Open Source Software)です。composerでインストールするパッケージもOSSです。OSSは無償で使えます。でもすべてがフリーウェアではないことに注意が必要です。
OSSにもライセンスがあります。ただ、

  • 『お金はいりません』
  • 『プログラムの改修を認めます』
  • 『プログラムの再配布を認めます』

などを許可しているだけです。(くわしいライセンスは設定ファイルに書きます)
決して、すべて『フリー』ではないことに注意です。(何をしてもかまわないという考えはやめましょう。)

composerのインストール方法

composerは、phpに標準でついていません。別途インストールする必要があります。

詳しくは『composerをインストールする方法』にあります

composerを利用したパッケージのインストール方法

インストール方法には、

  • OSの実行ユーザ環境にインストール
  • 特定のphpプロジェクトだけにインストール(指定ディレクトリに限定)

の2つの方法があります。

OSの実行ユーザ環境にインストール

OSの実行ユーザにインストールする場合、複数のphpプロジェクトで同じパッケージを使うことができます。静的コードチェックツールなど、複数のプロジェクトで共通で使えるパッケージをインストールします。

composer global require package_name

パッケージのインストールにはrequireコマンドを使います。これにglobalを付けます。これでOSの実行ユーザ環境にインストールします。

OSの実行ユーザ環境にインストールする場合、compoerのホームディレクトリは次の場所になります。

windowsC:\Users\{user_name}\AppData\Roaming\Composer
mac, Linux~/.composer

このホームディレクトリにcomposer.jsonファイルとvendorディレクトリが作成されます。

composer.jsonは、composerで管理するパッケージ情報が書かれた設定ファイルです。
また、composerによってインストールされたパッケージがvendorディレクトリに追加されます。

phpプロジェクトにインストール

phpプロジェクトだけで使うパッケージをインストールします。

たとえばLaravelフレームワークなどです。Webフレームワークは、プロジェクトごとにバージョンが異なるので、特定のプロジェクトにインストールする必要があります。

phpプロジェクトにインストールするには次の手順を行います。

Step1.  プロジェクトのホームディレクトリに移動

phpプロジェクトのホームディレクトリへ移動します。

Step2. composerの初期処理を実行

すでにphpプロジェクトにcomposerがある場合は不要です。次のステップへ進んでください。

composer init

を実行して、phpプロジェクトのcomposerでパッケージ管理ができるようにします。

コマンドプロンプトでいろいろと入力を求められますが、あとで設定ファイルで編集できるのですべてEnterでいいです。

すると、プロジェクトのホームディレクトリにcomposer.jsonファイルが生成されます。プロジェクトのホームディレクトリがcomposerのホームディレクトリにもなります。

ファイル名
{
    "name": "***/***",
    "authors": [
        {
            "name": "***",
            "email": "***@***"
        }
    ],
    "require": {}
}

(***は適当に作られます)

phpプロジェクトのホームディレクトリでcomposerコマンドを実行すると、phpプロジェクト内だけでパッケージの追加などが行えます。

Step3. パッケージの追加

composerを使ってインストールします。下のコマンドを実行するだけです。

composer require pagekage_name

OSのユーザ環境にインストールするコマンドからglobalをはずしたものと同じです。

composer.json と composer.lock ファイルの違い

composer.json, composer.lockファイルは、パッケージの依存関係を記述した点では同じです。しかし、決定的に違うところがあります。

まず、composer.jsonは設定ファイルです。直接編集してもかまいません。一方、composer.lockは結果ファイルです。composerでパッケージの依存関係に変更があるようなコマンドを実行すると作成されます。直接編集してはいけません。

また、composer.jsonは、composerでインストールしたパッケージが書かれます。しかし、そのパッケージがさらにどのパッケージに依存しているかは管理しません。

それに対し、composer.lockはインストールしたパッケージのすべての情報が書かれています。そして、依存するパッケージのさらに依存しているパッケージの情報まで書かれます。

  • composer.json: すべてのパッケージの依存関係の検査が未完了の状態のファイル
  • composer.lock: パッケージの依存関係の検査が完了済みのファイル

とも言えます。

このようなことから、composer installを実行するとき、composer.lockの有無でパッケージのインストールのスピードが違います。

composer.lockがない場合、composer.jsonから、すべてのパッケージの依存関係の検査をして、composer.lockを作成してからパッケージのインストールが始まります。

composer.lockファイルがあれば、依存関係の検査が完了した状態からパッケージのインストールが始まるので作業が早く終わります。

composer.lockは、すべてのパッケージのバージョンが全く同じの、PHPプロジェクトのコピー作成や、本番環境の構築などで使います。

composerのコマンド

composerのサブコマンドにはいろいろな操作があります。ここでは、代表的なものを紹介します。

init

composer init

composerによるパッケージ管理の初期化処理です。基本的には最初に1回だけ実行します。

composerのホームディレクトリにcomposer.jsonファイルを作成します。composer.jsonは環境に追加されているパッケージとそのバージョン、また、開発環境用のパッケージなど、パッケージに関する設定が記述されています。

composer.jsonがある状態で実行するとcomposer.jsonの内容が上書きされてしまいます。

require

composer [global] require package_name

パッケージの追加、アップデートに使用します。composer.jsonファイルにパッケージを追加したり、既存パッケージのバージョンを更新します。

また、composer.json, composer.lockを更新します。composer.lockは、パッケージのインストール情報が記載されています。このファイルを共有化することで同じphp環境を簡単に構築することができます。

install

composer install

composer.lockが存在する場合はそれを使って、ない場合はcomposer.jsonからcomposer.lockを新たに作成してphp環境を構築します。

開発現場では同じ環境をいくつも作成する場面が出てきます。そのときに使います。

  • 開発環境から本番環境を構築する
  • 開発サーバからローカルの仮想環境を構築する
  • 負荷分散のために同じ環境のサーバを複数個構築する etc...

update

composer update ["package_name"]

現在のインストール状況を無視して(composer.lockの内容を無視して)、パッケージのリソースをcomposer.jsonファイルから再構築します。そして、composer.lockを再生成します。

パッケージのバージョンを変更するなど、composer.jsonファイルを直接編集したときに使います。

開発時には頻繁に使いますが、運用時で利用する場面は、アプリケーションのバージョンアップ作業以外ないでしょう。

show

composer show [package_name]

インストールされているパッケージ情報を表示します。

パッケージ名を省略した場合、パッケージリストを表示します。パッケージ名を指定した場合は、そのパッケージの詳細情報を表示します。

self-update

composer self-update

composerコマンドのアップデートを実行します。

create-project

composer create-project package_name path ver

Webフレームワーク(Laravel)など、composerを利用したプロジェクト作成を行うことができます。これを利用することで簡単に速く環境が構築できます。

dump-autoload

composer dump-autoload

クラスのオートロード機能で使われるクラスマップを再構築します。パッケージのバージョン管理に変更はありません。

クラスのオートロードを利用した環境で使います。クラスを追加、削除するなどした場合にこのコマンドでクラスマップを更新します。

詳しくは『php composer: autoload機能を活用しよう!』にまとめました。

validate

composer validate

composer.jsonの構文チェックを行います。composer.jsonを直接編集した後に実行して、編集内容にエラーがないか確かめるのに使います。

composer.jsonの編集後は必ず実行するように決めておいたほうが良いです。

まとめ

composerの使い方はこれだけではありません。ほかにもテスト用パッケージの設定方法、開発環境、本番環境のコマンドの使い分けなど大事な要素はたくさんあります。とりあえず最低限の使い方だけを紹介しました。

そのほかの詳しい使い方は追々追記していく予定です。

 

最近Webカテゴリでよく読まれている記事です。
post-cta-image
blog image

ドメイン取得の意味が分からない人へ。王道の方法を紹介します。

ドメインの登録業者を選ぶのに悩む必要はないです。サイトを簡単に早く公開するには全くいらないことで、むしろ邪魔です。『お名前.com』というサービスは必ず耳にします。そのお名前.comのメリットとデメリットと一緒に、ドメインの意味が分からない人が一番失敗しないドメインの取得方法を紹介します。

tadtadya.com

_

SNSでも記事を配信しています。
コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この記事を気に入ったらぜひシェアも!!