Composerって何?!PHPのライブラリをインストールするのにPEARやPECLは古い?
どうも、UT(@ut_1029)です。今回はPHPのライブラリを使う際に利用する「Composer」について調べました。
これまでPHPのライブラリをインストールする際に利用していたPEARやPECLとComposerって何が違うのかも合わせて調べました。
- Composerって何?利点は?
- ComposerってPEARやPECLと何が違うの?
- Composerの使い方は?
Composerについて
PHPでプログラミングしていると、Composerという言葉をよく耳にします。
例えば「Composerでライブラリ入れてね」など開発現場で言われます。そんな時に「分かりました」っと一つ返事できるようにComposerについて理解しておきましょう!
※PHP7.4からPEARがデフォルトでインストールされなくなりました。なので、これからはComposerを積極的に利用することをおすすめします。詳しくは「PHP7.4ではPEARがインストールされなくなる」で解説されています。
Composerって何?
Composerとは、PHP向けのソフトウェアで必要なライブラリの依存関係を管理するパッケージ管理システムです。よく似たツールでnode.jsのパッケージ管理システムのnpmなどがあります。
Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
https://getcomposer.org/doc/00-intro.md
Composerは、PHPでの依存関係管理のためのツールです。プロジェクトが依存するライブラリを宣言することができ、ライブラリを管理(インストール/更新)します。
ざっくり説明すると、ライブラリ(パッケージ)とそれに必要なライブラリをサクッと自動でインストール出来る便利なツールです。
まとまったライブラリのこと。
ライブラリを利用するために必要な環境(ライブラリや環境設定など)の関係性。
使うメリットは?
Compoerを使うメリットについて紹介します。
ライブラリの依存関係を解決してくれる
Composerを利用する最大の利点であるライブラリの依存関係を解決してくれる点です。
依存関係の一例として、ライブラリAをインストールするとします。すると、ライブラリAをインストールするにはライブラリBが必要だとエラーで失敗したとします。
つまりライブラリAはライブラリBに依存していると言えます。この場合ライブラリBを先にインストールしてライブラリAをインストールする必要があります。
Composerを利用するとライブラリAをインストールすると、自動でライブラリBもインストールしてくれます。しかもコマンド一発(超便利)
$ composer require ライブラリA
PHP7.4からPEARがデフォルトでインストールされなくなった
PHP7.4からPEARがデフォルトでインストールされなくなりました。なので、これからはComposerを積極的に利用することをおすすめします。
詳しくは「PHP7.4ではPEARがインストールされなくなる」で解説されています。
Composerを使った流れ
Composerを使った簡単な流れを紹介します。詳しくは「PHPのライブラリ管理ツール「Composer」入門」で解説されています。
composer.jsonを用意
ますはcomposer.jsonというJSONファイルを作成します。
{
"require": {
"monolog/monolog": "1.0.*"
}
}
composer.jsonには、利用するパッケージ(ライブラリ)を定義します。列挙したパッケージがComposer によって管理されることになります。
composer.jsonの詳しい書き方については「composer 導入をまじめに考える」で紹介されています。
Composerでインストール
composer.jsonで定義したパッケージをComposerでインストールします。
$ composer install
すると、vendorフォルダが出来上がります。
vendor
vendorというフォルダの中には、composer.jsonで定義したパッケージがダウンロードされ格納されます。
./
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
└── monolog
autoload.php
vendorフォルダの直下には、autoload.phpというファイルも生成されます。このautoload.phpを読み込むことでcomposer.jsonで定義したパッケージを利用することができます。
require_once("vendor/autoload.php");
Composerを使ってみる
それでは実際にComposerを使ってみましょう!
Composerをインストールする
まずはComposerをインストールします。公式のComposerサイトの「Download Composer Latest: v1.10.9」を見ながらやります。
PHPがインストールされていることを前提に進めます。またPHPが複数インストールされている場合は、対象のPHPにてcomposer-setup.phpを実行しましょう!
あと一応ドキュメントルートへcomposer-setup.phpを配置しないよう注意しましょう!セキュリティ的に危ないので!
composer-setup.phpを取得
公式composerサイトよりcomposer-setup.phpを取得します。
(自分は/tmpへ移動して/tmpへ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」を確認して正しいハッシュ値で実行してみて下さい。
composer-setup.phpをPHPで実行してcomposer.pharを作成
$ 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
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
(以下略)
Composerコマンドをどこからでも利用できるように
/usr/local/binフォルダへcomposer.pharを移動させて、どこからでも実行できるようにします。
(/usr配下へファイルを配置するにはrootユーザーの権限が必要となります)
一般的には自作のスクリプトなどを配置しておくことディレクトリです。またLinuxディストリビューションをインストールしたばかりのときは、このディレクトリは空であることも多い。
$ 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を使ってPHPフレームワークの環境を構築
ToDo:CakePHPとLarabelを予定…
ComposerがPEARとPECLの違う点について
PHPを使って開発する人の中に、ComposerってPEARやPECLと何が違うの?と思っている人もいると思います。なので、CompoerはPEARやPECLと何が違うのかについて調べました。
- PEARは、PHPをインストールしてもデフォルトで用意されなくなった。(PHP 7.4以降)
- PEARを用意するオプションが非推奨となった。
- PEARライブラリは、更新頻度が低下している。
詳しい内容は「[PHP]pecl,phpize,extensionという単語を見て頭痛がするあなたへの処方箋」で解説されていました。
PHPでライブラリをインストールする方法
PHPでライブラリをインストールする方法は、大きく分けると以下のようなものがあります。
ツール | ライブラリの種類 | 配布先 |
Composer | PHPで書かれたライブラリ | Packagist (https://packagist.org/) |
PECL | C言語で書かれたライブラリ | PECL (https://pecl.php.net/) |
PEAR | PHPで書かれたライブラリ | PEAR (https://pear.php.net/) |
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.
https://pecl.php.net/
PECLが使用するパッケージングおよび配布システムは、姉妹のPEARと共有されています。
PECLの公式サイトに書かれている文章だと分かりにくいですが、簡単に言うと、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.
https://pear.php.net/
PEARは、再利用可能なPHPコンポーネント用のフレームワークおよび配布システムです。
PEARの特徴と補足知識
PEARが提供しているライブラリは、PECLと違いPHPで書かれています。なのでPECLより速度は劣ります。
PEARのインストールには、–with-pearで明示的にPEARを有効にしなければなりません。ただし、このオプションは非推奨であり、将来削除される可能性があります。
まとめ
今回はPHPのライブラリをインストール際によく利用されるComposerやPEAR、PECLについて解説しました。これからは、PEARやPECLよりComposerを利用することをおすすめします。
またPHPやphp-fpmの環境について仕組みを理解するために解説した「PHP-fpmの環境設定するにあたって理解出来るように仕組みについて調べてみた!」も是非ご覧ください。
- プログラミング入門講座
- プログラミング技術講座
- JavaScriptのサンプルコード
- 初心者向け
- Ajax
- 要素の移動・変形
- canvas
- ゲーム
- slick.js
- matter.js
- Sortable
- Chart.js
- PHPのサンプルコード
- 初心者向け
- TCPDF
- Twitter API
- WordPress
ディスカッション
コメント一覧
まだ、コメントがありません