SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PHPパッケージ管理ツール「Composer」入門

Composerを使ってPHPのパッケージを簡単インストール

PHPパッケージ管理ツール「Composer」入門 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

使い方の流れ

 Composerの使い方は主に以下のような手順になります。

  1. プロジェクトのフォルダを作成
  2. 使いたいパッケージの定義ファイル(composer.json)を作成
  3. composer installのコマンド実行
  4. PHPのコーディング(autoloaderファイルの読み込み)

 まず、Composerはフォルダ配下にあるcomposer.jsonファイルを通じてパッケージを管理しますので、そのためのフォルダの作成と、composer.jsonファイルを作成します。すでに使いたいパッケージがComposerに対応している場合には、そのパッケージのインストール方法としてcomposer.jsonの記述例があります。

 その説明に従って記述するだけです。また、Composerに対応しているライブラリはpackgistで検索することができます。

リスト3 作成したcomposer.jsonファイル
{
  "require": {
    "guzzlehttp/guzzle": "4.0.*@dev"
  }
}

 今回はcomposer.jsonの細かい中身は気にせず流れを確認します。次回以降でcomposer.jsonの記述ルールを説明します。

リスト4 installの実行結果
composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing guzzlehttp/streams (1.1.0)
    Downloading: 100%

  - Installing guzzlehttp/guzzle (dev-master b2edcf2)
    Cloning b2edcf2dc1b37623f648f181d729ecac0ce0c930

Writing lock file
Generating autoload files

 また、Windows環境でインストール時に「Install Shell Menus」にチェックした場合には、コンテキストメニューからコマンドを実行できます。

 実行が終了すると、composer.lockファイルと、vendorフォルダが作成され、そこに必要なライブラリのソースが展開されます。composer.lockファイルにはダウンロードされたパッケージ情報などが格納されて管理されています。従って、vendorフォルダでダウンロードされたファイルを含めてバージョン管理などする場合には、このcomposer.lockファイルも併せて管理する必要があります。

 また、展開されたファイルのオートローディングを提供するためのファイルとして、vendor/autoload.phpが作成されます。

図4 Composerで作成されるフォルダ構造
図4 Composerで作成されるフォルダ構造

 実際にインストールしたパッケージを使うにはコード5の(1)のようにautoload.phpをrequire_onceするのみで非常に簡単です。

リスト5 実際のコード
<?php
require_once("vendor/autoload.php"); //(1)

$client = new GuzzleHttp\Client();
$res = $client->get('http://rss.rssad.jp/rss/codezine/new/20/index.xml');
echo $res->getStatusCode();
echo $res->getHeader('content-type');
echo $res->getBody();

パッケージの追加と削除

 続いて、先ほど記述したcomposer.jsonから新たに必要になったパッケージがある場合の方法です。まず、同様に追加したいパッケージを同様にcomposer.jsonに追記します。今回はpear/archive_tarというパッケージを追加してみます。

リスト6 パッケージの追加のためのcomposer.json
{
  "require": {
    "guzzlehttp/guzzle": "4.0.*@dev",
    "pear/archive_tar" : "1.3.*"
  }
}

 記述が終了しましたら、updateコマンドを以下のように実行します。これで、新たなパッケージが追加されます。

リスト7 パッケージの追加のためのupdateコマンド実行結果
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing pear/archive_tar (1.3.11)
    Loading from cache

Writing lock file

 実際にどのようなパッケージが導入されたのか確認してみます。確認する方法はshowコマンドです。また、インストールされたパッケージ一覧を参照するためには引数に"-i"を指定します。

リスト8 インストールされているパッケージ一覧を参照する
$ composer show -i
guzzlehttp/guzzle  dev-master b2edcf2 Guzzle is a PHP HTTP client library and framework for building RESTful web service clients
guzzlehttp/streams 1.1.0              Provides a simple abstraction over streams of data (Guzzle 4+)
pear/archive_tar   1.3.11             Tar file management class

 続いて、必要なくなったパッケージがある場合には同様に、composer.jsonから削除します。先ほど追加したpear/archive_tarが必要なくなった場合には、追記前の状態にcomposer.jsonを戻し、再度、updateコマンドを実行します。

リスト9 パッケージ削除のためのupdateコマンドの実行結果
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing pear/archive_tar (1.3.11)
Writing lock file
Generating autoload files

 このようにcomposer.jsonを更新していくことでプロジェクトのパッケージ管理が行えます。

次のページ
その他のオプション

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PHPパッケージ管理ツール「Composer」入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7827 2014/07/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング