Composerでライブラリをインストールするときに調べたこと(PEARとPECLの違い)

2020年7月27日プログラム知識composer,PHP

Composerって何?!PHPのライブラリをインストールするのにPEARやPECLは古い?
Composerって何?!PHPのライブラリをインストールするのにPEARやPECLは古い?

PHPのライブラリ依存管理ツールの「Composer」について調べました。

Composerの基礎知識

PHPのライブラリをインストールする際に使うライブラリ依存管理ツールのComposerについて調べました。

Composerは、PHPを使った現場で良く使っているのでしっかり理解しました。

あとPEARとPECLについても調べました。

この記事でわかること
  • Composerとは
  • Composerの特徴
  • Composerのインストール方法
  • ComposerとPEARやPECLとの違い

では、まずはComposerについて調べます。

Composerとは

Composerとは、PHP向けのソフトウェアで必要なライブラリの依存関係を管理するパッケージ管理システムです。

node.jsだとnpmなどのパッケージ管理システムがあります。

簡単に説明すると、ライブラリとそれに必要なライブラリをサクッと自動でインストール出来る便利なツールです。

では、Compoerの特徴について紹介します。

ライブラリの依存関係を解決してくれる

Composerを利用する最大の利点であるライブラリの依存関係を解決してくれる点です。

ライブラリの依存関係とは

ライブラリを利用するために必要な環境(ライブラリや環境設定など)の関係性です。

  • 依存関係の例
    • ライブラリAをインストールしようとします。
    • すると、ライブラリAにはライブラリBが必要とエラーとなりインストールに失敗します。
    • このような「ライブラリAはライブラリBに依存している」関係です。

つまりComposerでライブラリをインストールすると依存関係があるライブラリも一緒にインストールしてくれます。

しかもコマンド1発です!

$ composer require ライブラリA

PHP7.4からPEARがデフォルトでインストールされなくなった

PHP7.4からPEARがデフォルトでインストールされなくなりました。なので、これからはComposerを積極的に利用することをおすすめします。

これからはPEARやPECLよりComposerを使う方がよさそうです!

参照:PHP7.4ではPEARがインストールされなくなる

Composerを使った流れ

Composerを使った簡単な流れを紹介します。

ステップ1:composer.jsonを用意

ますはcomposer.jsonというJSONファイルを作成します。

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

composer.jsonとは

composer.jsonには利用するパッケージ(ライブラリ)を定義します。定義したパッケージがComposer によって管理されることになります。

ステップ2:Composerでインストール

composer.jsonで定義したパッケージをComposerでインストールします。

$ composer install

すると、vendorフォルダが出来上がります。

ステップ3:vendorが出来る

vendorというフォルダの中には、composer.jsonで定義したパッケージがダウンロードされ格納されます。

./
├── composer.json
├── composer.lock
└── vendor
    ├── autoload.php
    ├── composer
    └── monolog

ステップ4:autoload.phpを読み込む

vendorフォルダの直下には、autoload.phpというファイルも生成されます。

require_once("vendor/autoload.php");

autoload.phpとは

autoload.phpを読み込むことでcomposer.jsonで定義したパッケージを利用することができます。

Composerのインストール方法

では、Composerをインストールします。

公式のComposerサイトの「Download Composer Latest: v1.10.9」を見ながらやります。

ステップ1:composer-setup.phpを取得

公式composerサイトよりcomposer-setup.phpを取得します。
(自分は/tmpへ移動して/tmpへcomposer-setup.phpを配置しました。)

ここでセキュリティ的な注意です!
ドキュメントルートへcomposer-setup.phpを配置しないよう注意しましょう!

$ cd /tmp
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

一応ちゃんとcomposer-setup.phpを取得できたか確認します。

$ ls -la | grep composer
-rw-rw-r--  1 user user 277509  7月 24 16:40 composer-setup.php

取得したcomposer-setup.phpが壊れていないか確認します。

$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified

実行後に「Installer corrupt」と表示された場合

ハッシュ値が違っているためと思われます。なので、公式のComposerサイトの「Download Composer Latest: v1.10.9」を確認して正しいハッシュ値で実行してみて下さい。

ステップ2:composer-setup.phpをPHPで実行してcomposer.pharを作成

composer-setup.phpをPHPで実行します。

※もしPHPが複数入っている環境だった場合は、対象のPHPでcomposer-setup.phpを実行してください!

$ php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 1.10.9) successfully installed to: /tmp/composer.phar
Use it: php composer.phar

一応composer.pharができていることを確認します。

$ ls -la | grep composer
-rw-rw-r--  1 user user  277509  7月 24 16:40 composer-setup.php
-rwxr-xr-x  1 user user 1980987  7月 24 16:46 composer.phar

composer-setup.phpは不要なので、削除します。

$ php -r "unlink('composer-setup.php');"

一応削除できたか確認します。

$ ls -la | grep composer
-rwxr-xr-x  1 user user 1980987  7月 24 16:46 composer.phar

ステップ3:Composerの動作確認

composer.pharの動作確認をします。

$ ./composer.phar -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.9 2020-07-16 12:57:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
(以下略)

ステップ4:Composerコマンドをどこからでも利用できるように

/usr/local/binフォルダへcomposer.pharを移動させて、どこからでも実行できるようにします。
(/usr配下へファイルを配置するにはrootユーザーの権限が必要となります)

/usr/local/binフォルダとは

一般的には自作のスクリプトなどを配置しておくことディレクトリです。
参照:「/bin」「/usr/bin」「/usr/local/bin」ディレクトリの使い分け

$ sudo mv composer.phar /usr/local/bin/composer
$ ls -la /usr/local/bin/ | grep composer
-rwxr-xr-x  1 user user 1980987  7月 24 16:46 composer

動作確認をします。

$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.9 2020-07-16 12:57:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message

ComposerがPEARとPECLの違う点について

Composerについてある程度理解できました。

そこで昔からあるPHPのライブラリをインストールする際に使っていたPEARやPECLとComposerは何が違うのか気になったので調べます。

PEARとPECLとComposerの違いが気になる人だけ読んで欲しい内容になります。

参考:[PHP]pecl,phpize,extensionという単語を見て頭痛がするあなたへの処方箋

PHPでライブラリをインストールする方法

PHPでライブラリをインストールする方法は、大きく分けると「Composer」「PECL」「PEAR」があります。

ツールライブラリの種類配布先
ComposerPHPで書かれたライブラリPackagist (https://packagist.org/)
PECLC言語で書かれたライブラリPECL (https://pecl.php.net/)
PEARPHPで書かれたライブラリPEAR (https://pear.php.net/)
PHPでライブラリをインストールする方法

PECLについて

PECL(ピクル/ペクル:PHP Extension Community Library)とは、PHPで利用できる拡張ライブラリ(パッケージ)を提供しているサービスです。

PECL is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.
PECLはPHP拡張機能のリポジトリであり、既知のすべての拡張機能のディレクトリと、PHP拡張機能のダウンロードと開発のためのホスティング機能を提供します。

The packaging and distribution system used by PECL is shared with its sister, PEAR.
PECLが使用するパッケージングおよび配布システムは、姉妹のPEARと共有されています。

https://pecl.php.net/

簡単に言うと、PHPエクステンションを配布するWebサイトおよびツールの名前であり、コマンド名でもあります。

PECLの特徴と補足知識

PECLで提供されるライブラリは、C言語で書かれています。

なので高速に動作します。

ただPECLのライブラリは、PHP内部の処理に依存することがあるのでPHPのアップデート時に注意が必要です。

PECLコマンドは内部的にPEARライブラリを使っています。

PEARについて

PEAR(PHP Extension and Application Repository)とは、PHPで利用する事ができるライブラリ(パッケージ)を提供しているサービスです。

PEAR is a framework and distribution system for reusable PHP components.
PEARは、再利用可能なPHPコンポーネント用のフレームワークおよび配布システムです。

https://pear.php.net/

PEARの特徴と補足知識

PEARが提供しているライブラリは、PECLと違いPHPで書かれています。

なのでPECLより速度は劣ります。

PEARのインストールには、–with-pearで明示的にPEARを有効にしなければなりません。

ただし、このオプションは非推奨であり、将来削除される可能性があります。

まとめ【Composerって何?!PHPのライブラリをインストールするのにPEARやPECLは古い?】

PHPのライブラリをインストールで利用するComposerについて解説しました。

  • Composerは、パッケージ管理
  • Composerでライブラリをインストールするとライブラリ依存関係も解説される

簡単にPEARとPECLについても解説しました。

  • PHPのパッケージ管理には「PEAR」と「PECL」がある
  • PHP7.4からPEARがデフォルトでインストールされなくなった

これからはPEARやPECLよりComposerを使う方がよさそうです!

Composerを使った例

Composerを使ってCakePHP4系をインストールし環境構築した手順を紹介しています。
参照:CakePHP4.xをComposerでインストールしてNginxを設定する

最後まで読んでもらいありがとうございます。

読んで欲しい記事

PHPの環境構築は「ググってとりあえず動けばOK」という感じだったので

  • PHP-fpmとは
  • FastCGIとは
  • PHPのCGI版とは
  • PHP-fpmとNginxの連携について

などPHP-fpmの仕組みを理解するために調べてまとめました。

プログラミングスクール受講メリット

・メンターにすぐ聞けるので分からないところでつまづかない
・受講生同士で学び合いモチベーション維持しやすい
・就学後に就職支援や進路サポートを受けることが出来る

ユート
ユート

Webプログラマ兼ブロガー | プログラミング基礎知識を発信|Webプログラマ歴は10年以上|JavaScript,PHP.HTML | 「人生の時間は有限。悪いことをしている時間はない」
プロフィール

2020年7月27日プログラム知識composer,PHP

Posted by ユート