Ubuntu 14.04にComposerをインストールして使用する方法

前書き

Composerは、PHPの一般的な依存関係管理ツールであり、主にプロジェクトの依存関係のインストールと更新を容易にするために作成されています。 特定のプロジェクトが依存する他のパッケージをチェックし、プロジェクトの要件に応じて適切なバージョンを使用してそれらをインストールします。

このチュートリアルでは、Ubuntu 14.04サーバーにComposerをインストールして開始する方法を示します。

前提条件

このチュートリアルでは、次のものが必要です。

  • Ubuntu 14.04を実行しているサーバー

  • sudo permissionを使用した通常のユーザーとしてのサーバーへのアクセス

[[step-1 -—- installing-the-dependencies]] ==ステップ1—依存関係のインストール

Composerをダウンロードしてインストールする前に、サーバーにすべての依存関係がインストールされていることを確認する必要があります。

まず、次を実行してパッケージマネージャーキャッシュを更新します。

sudo apt-get update

それでは、依存関係をインストールしましょう。 Composerをダウンロードするにはcurlが必要であり、インストールして実行するにはphp5-cliが必要です。 gitは、Composerがプロジェクトの依存関係をダウンロードするために使用します。 すべては、次のコマンドでインストールできます。

sudo apt-get install curl php5-cli git

これで、次の手順に進むことができます。

[[step-2 -—- downloading-and-installing-composer]] ==ステップ2—Composerのダウンロードとインストール

Composerのインストールは本当に簡単で、1つのコマンドで実行できます。

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

これにより、Composerが/usr/local/binの下のcomposerという名前のシステム全体のコマンドとしてダウンロードおよびインストールされます。 出力は次のようになります。

Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

インストールをテストするには、次を実行します。

composer

そして、次のような出力が得られるはずです。

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00

Usage:
 command [options] [arguments]

Options:
 --help (-h)           Display this help message
 --quiet (-q)          Do not output any message
 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
 --version (-V)        Display this application version
 --ansi                Force ANSI output
 --no-ansi             Disable ANSI output
 --no-interaction (-n) Do not ask any interactive question
 --profile             Display timing and memory usage information
 --working-dir (-d)    If specified, use the given directory as working directory.

. . .

これは、Composerがシステムに正常にインストールされたことを意味します。

[.note]#このサーバーでホストする可能性のあるプロジェクトごとに個別のComposer実行可能ファイルを使用する場合は、プロジェクトごとにローカルにインストールするだけです。 この方法は、システムユーザーがシステム全体にソフトウェアをインストールする権限を持っていない場合にも役立ちます。 この場合、インストールはcurl -sS https://getcomposer.org/installer | phpで実行できます。これにより、現在のディレクトリにcomposer.pharファイルが生成され、php composer.phar [command]
で実行できます。

[[step-3 -—- generate-the-composer-json-file]] ==ステップ3—composer.jsonファイルの生成

プロジェクトでComposerを使用するには、composer.jsonファイルが必要です。 composer.jsonファイルは基本的に、プロジェクトにダウンロードする必要のある依存関係と、各パッケージのインストールが許可されているバージョンをComposerに通知します。 これは、プロジェクトの一貫性を維持し、下位互換性の問題を引き起こす可能性のある不安定なバージョンのインストールを避けるために非常に重要です。

このファイルを手動で作成する必要はありません。そうすると、構文エラーが発生しやすくなります。 requireコマンドを使用してプロジェクトに依存関係を追加すると、Composerはcomposer.jsonファイルを自動生成します。 このファイルを手動で編集する必要なく、同様の方法で依存関係を追加することもできます。

Composerを使用してパッケージをプロジェクトの依存関係としてインストールするプロセスには、通常、次の手順が含まれます。

  • アプリケーションに必要なライブラリの種類を特定する

  • Composerの公式リポジトリであるPackagist.orgで適切なオープンソースライブラリを調査する

  • 依存したいパッケージを選択してください

  • composer requireを実行して、依存関係をcomposer.jsonファイルに含め、パッケージをインストールします

シンプルなデモアプリケーションを使用して、これが実際にどのように機能するかを確認します。

このアプリケーションの目的は、特定の文をURLに適した文字列(slug)に変換することです。 これは通常、ページタイトルをURLパスに変換するために使用されます(このチュートリアルのURLの最後の部分など)。

プロジェクトのディレクトリを作成することから始めましょう。 これをslugifyと呼びます。

cd ~
mkdir slugify
cd slugify

Packagistでパッケージを検索する

次に、slugsの生成に役立つパッケージをPackagist.orgで検索します。 Packagistで「スラッグ」という用語を検索すると、次のような結果が得られます。

Packagist Search: easy-slug/easy-slug

リスト内の各パッケージの右側に2つの数字が表示されます。 上部の数字はパッケージがインストールされた回数を表し、下部の数字はパッケージがGitHubでスターを付けられた回数を示します。 これらの番号に基づいて検索結果を並べ替えることができます(検索バーの右側にある2つのアイコンを探します)。 一般的に言って、インストール数とスター数が多いパッケージは、非常に多くの人が使用しているため、より安定する傾向があります。 また、パッケージの説明で関連性を確認することも重要です-それが本当にあなたが探しているものですか?

必要なのは、単純な文字列からスラグへのコンバータです。 検索結果から、パッケージcocur/slugifyは、適切な数のインストールとスターがあり、適切に一致しているようです。 (パッケージは、スクリーンショットが示すよりもページの少し下にあります。)

Packagistのパッケージにはvendor名とpackage名があることに気付くでしょう。 各パッケージには、Githubがリポジトリに使用するのと同じ形式の一意の識別子(名前空間)があります:vendor/package。 インストールするライブラリは、名前空間cocur/slugifyThe namespace is what we need in order to require the package in our project.を使用します

パッケージを要求する

インストールするパッケージが正確にわかったので、composer requireを実行してそれを依存関係として含め、プロジェクトのcomposer.jsonファイルを生成することもできます。

composer require cocur/slugify
OutputUsing version ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v1.3)
    Downloading: 100%

Writing lock file
Generating autoload files

出力からわかるように、Composerは使用するパッケージのバージョンを自動的に決定しました。 ここでプロジェクトのディレクトリを確認すると、composer.jsoncomposer.lockの2つの新しいファイルと、vendorディレクトリが含まれています。

ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy   59 Sep  9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep  9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep  9 16:22 vendor

composer.lockファイルは、各パッケージのどのバージョンがインストールされているかに関する情報を格納するために使用され、他の誰かがプロジェクトのクローンを作成してその依存関係をインストールする場合は、同じバージョンが使用されるようにします。 vendorディレクトリは、プロジェクトの依存関係が配置されている場所です。 vendorフォルダーはnotをバージョン管理にコミットする必要があります-composer.jsonファイルとcomposer.lockファイルのみを含める必要があります。

[.note]#すでにcomposer.jsonファイルが含まれているプロジェクトをインストールする場合、プロジェクトの依存関係をダウンロードするには、composer installを実行する必要があります。

バージョンの制約について

composer.jsonファイルの内容を確認すると、次のように表示されます。

cat composer.json

composer.json

{
    "require": {
        "cocur/slugify": "^1.3"
    }
}

composer.jsonのバージョン番号の前に特殊文字^があることに気付くかもしれません。 Composerは、プロジェクトの安定性を保ちながら柔軟性を提供するために、必要なパッケージバージョンを定義するためのいくつかの異なる制約と形式をサポートしています。 自動生成されたcomposer.jsonファイルで使用されるキャレット(^)演算子は、semantic versioningに続く、相互運用性を最大化するための推奨演算子です。 この場合、互換性のある最小バージョンとして1.3を定義し、2.0未満の将来のバージョンへの更新を許可します。

一般的に、composer.jsonファイルのバージョン制約を改ざんする必要はありません。 ただし、状況によっては、制約を手動で編集する必要がある場合があります。たとえば、必要なライブラリのメジャーな新しいバージョンがリリースされてアップグレードする場合、または使用するライブラリがセマンティックバージョニングに従っていない場合です。

Composerバージョンの制約がどのように機能するかをよりよく理解するための例をいくつか示します。

拘束 意味 許可されるバージョンの例

^1.0

> = 1.0 <2.0

1.0, 1.2.3, 1.9.9

^ 1.1.0

> = 1.1.0 <2.0

1.1.0, 1.5.6, 1.9.9

~1.0

> = 1.0 <2.0.0

1.0, 1.4.1, 1.9.9

〜1.0.0

> = 1.0.0 <1.1

1.0.0, 1.0.4, 1.0.9

1.2.1

1.2.1

1.2.1

1.*

> = 1.0 <2.0

1.0.0, 1.4.5, 1.9.9

1.2.*

> = 1.2 <1.3

1.2.0, 1.2.3, 1.2.9

Composerのバージョン制約の詳細については、official documentationを確認してください。

[[step-4 -—- include-the-autoload-script]] ==ステップ4—Autoloadスクリプトを含める

Composerは、自動ロードを無料で取得するためにプロジェクトに含めることができる自動ロードスクリプトも提供します。 これにより、依存関係を操作し、独自の名前空間を定義することがはるかに簡単になります。

クラスをインスタンス化する前に、PHPスクリプトにvendor/autoload.phpファイルを含めるだけです。

slugifyのサンプルアプリケーションに戻りましょう。 cocur/slugifyライブラリを使用するtest.phpスクリプトを作成します。

vim test.php

test.php

slugify('Hello World, this is a long sentence and I need to make a slug from it!');

次のコマンドラインでスクリプトを実行できます:

php test.php

これにより、出力hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-itが生成​​されます。

[[step-5 -—- updating-the-project-dependencies]] ==ステップ5—プロジェクトの依存関係を更新する

プロジェクトの依存関係を更新するときはいつでも、updateコマンドを実行する必要があります。

composer update

これにより、プロジェクトで必要なライブラリの新しいバージョンがチェックされます。 新しいバージョンが見つかり、composer.jsonファイルで定義されているバージョン制約と互換性がある場合、インストールされている以前のバージョンが置き換えられます。 composer.lockファイルは、これらの変更を反映するように更新されます。

次を実行して、1つ以上の特定のライブラリを更新することもできます。

composer update vendor/package vendor2/package2

結論

Composerは、すべてのPHP開発者がユーティリティベルトに持つべき強力なツールです。

プロジェクトの依存関係を管理する簡単で信頼できる方法を提供するだけでなく、コミュニティによって作成されたPHPパッケージを共有および検出するための新しい事実上の標準も確立します。

このチュートリアルでは、Ubuntu 14.04でComposerを使用するための基本事項を説明しました。

Related