今回は、PHPのライブラリ管理ツールのcomposerについての話です。
PHPで複数のライブラリを利用するときは、依存関係について意識しなければなりません。依存関係を気にせず適用にライブラリをインストールしてしまうと、プログラムが正常に動かなくなります。必要なライブラリを自分で収集するのがめんどくさいと思っている人は、composerを利用するのがおすすめです。
そこで今回は、composerの最も基本的な使い方である
について解説します。
目次
composer installの基本
composerとは、PHPのライブラリを利用する際に考慮すべき依存関係を管理するためのツールです。composer installとは、composerの機能(コマンド)の1つで、指定のファイルを作成した後に以下のように実行することで、ファイル内に記述されたライブラリをインストールする機能を持っています。
1 |
composer install |
ここでは、コマンド「composer install」の基本的な使い方について説明してきます。
- composer.jsonを作成する
- composer installを実行する
- インストールしたライブラリの動作確認
composer.jsonを作成する
まずは、composer.jsonを作成します。composer.jsonは、インストールするライブラリに関する情報がJSON形式で記載されたファイルです。JSONは、以下のように変数名と値をコロンで対応付けられたシンプルな構造となっています。
1 2 3 4 5 6 7 |
{ "変数名" : "値", "変数名" : "値", "変数名" : { "変数名" : "値" } } |
composer.jsonでは、インストールしたいライブラリを以下のように記述します。
1 2 3 4 5 |
{ "require": { "ベンダー名/ライブラリ名": "ライブラリのバージョン" } } |
例えば、年月日や時間を取り扱うライブラリ「Carbon」をインストールしたい場合は、以下のように記述します。
1 2 3 4 5 |
{ "require": { "nesbot/carbon" : "2.42.0" } } |
バージョンを指定する場合は、「メジャーバージョン」「マイナーバージョン」「パッチバージョン」の数字をドットで結びつけて記述します。加えて、以下に示す記号を利用することで、インストールするバージョンに制限をつけることができます。
記述方法 | 記述例 | インストールされるバージョン | 特徴 |
ワイルドカード(*)で指定 | 1.1.* | 1.1.0以上1.2.0未満 | 指定した範囲の中で最新のバージョンがインストールされる |
ハット(^)で指定 | ^1.1.4 | 1.1.4以上1.2.0未満 | 指定した範囲の中でパッチバージョンが最新のものがインストールされる |
チルダ(~)で指定 | ~1.1.4 | 1.1.4以上2.0.0未満 | 指定した範囲の中でマイナーバージョンが最新のものがインストールされる |
どのバージョンをインストールすれば分からない場合は、ライブラリを提供している公式サイトに目を通してみましょう。たいていの公式サイトでは、composerを利用したライブラリのインストール方法を記載しているため、その手順に従ってインストールすれば失敗することはありません。
composer installを実行する
composer.jsonを作成したら、以下のコマンドを叩きます。
1 |
composer install |
インストールが終わると、composer.jsonが置かれているディレクトリに、以下のファイル・ディレクトリが生成されます。
- vendor ディレクトリ
- composer.lock ファイル
vendorディレクトリには、先程叩いたコマンドによってインストールされたライブラリプログラムが、composer.lockには、インストールされたライブラリに関する詳細情報が記載されています。composer.lockは、他の開発者に渡してcomposer installを実行することで、同じ環境を構築することができるため、チームで開発するために重要なファイルです。
先程例に挙げたCarbonライブラリをcomposer installでインストールすると、Carbonに紐付くライブラリを検索して自動的にまとめてインストールされ、vendorディレクトリとcomposer.lockが作成されます。
インストールしたライブラリの動作確認
Carbonがインストールされているかを確認するために、Carbonが提供している機能を利用して、簡単な動作確認を行います。以下のサンプルコードを記述して任意のファイル名で保存してください。
1 2 3 4 5 6 7 8 9 10 |
<?php // composerを利用してインストールしたライブラリを利用する場合は // vendorディレクトリに存在するautoload.phpを読み込む require 'vendor/autoload.php'; use Carbon\Carbon; // 今日の日付を返す機能を呼び出してみる echo Carbon::today(); |
ブラウザで確認すると、年月日が出力されていることが分かります。
PHPで日時を扱うならCarbonを!設定と使い方を解説 PHPで開発するならautoloadは必須!必要性と設定方法を解説composer installのオプション
コマンド「composer install」では、オプションを指定することでさまざまな操作を実行できます。ここでは、各オプションの機能について解説します。
数が多いため、ここではよく利用する以下の5つのオプションについて、詳しく説明します。
- –prefer-source
- –prefer-dist
- –dry-run
- –dev
- –no-dev
–prefer-source / –prefer-dist
–prefer-sourceオプションと–prefer-distオプションは、インストールしたいライブラリについてどの種類をダウンロードするかを指定します。違いは以下の通りです。
オプション | 機能 |
–prefer-source | 開発版をダウンロード |
–prefer-dist | 安定版をダウンロード |
特に指定がなければ、自動的に–prefer-distが指定された上で実行されます。
–dry-run
–dry-runオプションを付与して実行すると、実行結果をシミュレーションしてくれます。ライブラリをインストールすると結果はどうなるかを事前に確認したい場合に便利です。
–dev / –no-dev
–devオプションと–no-devオプションは、開発環境のみに適用するライブラリをインストールするか否かを指定します。例えば、単体テストに関する機能を提供するライブラリ(phpunit)は、本番環境で提供する必要はないため、開発環境のみに適用するのが適切です。
composer.json内で、以下のように記述することで、開発環境のみに適用するライブラリを指定することができます。
1 2 3 4 5 6 7 8 9 |
{ "require": { "nesbot/carbon" : "2.42.0" }, "require-dev": { "phpunit/phpunit" : "3.*" } } |
その他のオプション
その他のオプションの機能については、以下の通りです。
オプション | 機能 |
–no-autoloader | autoloader.phpを作成しない |
–no-scripts | composer.json内で定義されたスクリプトを実行しない |
–no-progress | インストールの進捗を表示しない |
–optimize-autoloader | 最適化されたautoloader.phpを作成する |
–classmap-authoritative | クラスマップのみをautoloader.phpに取り込む |
–apcu-autoloader | APCu(PHPによって生成されたページをキャッシュする機能)によって、クラスをキャッシュする |
–apcu-autoloader-prefix | APCuキャッシュにカスタムプレフィックスを使用する |
–ignore-platform-reqs | ライブラリのインストール要件を考慮せずに強制的にインストールする |
まとめ
いかがでしたか?
今回は、
について解説しました。
composer.jsonの書き方さえ理解すれば、使い方はそれほど難しくありません。何回も繰り返して使えば、composer installの使い方にも慣れることでしょう。