LoginSignup
2
1

More than 1 year has passed since last update.

Composerについて(概要からインストール方法まで)

Last updated at Posted at 2022-09-01

Composerとは

PHP向けのソフトウェアパッケージ・ライブラリの依存関係を管理する、パッケージ管理システム

そもそもパッケージて何

システム開発を行う際に、便利な仕組みや関数をまとめたもの
標準のphpのみでの開発は難しいので、大体パッケージを利用しているのが常

もしパッケージがなければ、ここに書かれている内容を全て開発者自身がコードを書かなければいけないので、
私たちは常にパッケージの恩赦を受けながら開発している(と思う)

Composerはこのようなパッケージを管理するためのツール

Composerのメリットて何

・使用しているパッケージをファイルで管理できる

「パッケージ管理」なので、上記で説明したパッケージをファイルで管理できる
パッケージを取得したあとに、パッケージにバグや脆弱性が発覚し作成者がパッケージを更新することがある

手動でダウンロードしてきたパッケージだと、定期的にアップデート情報を確認して、
再ダウンロードするという作業が必要になるが、Composerで取得したものであるなら、updateコマンドを実行するだけで、
使用しているすべてのパッケージの更新を確認し、更新がある場合は再取得してソースコードを最新の状態に保ってくれる

また、プロジェクトに必要なパッケージと参照しているURLがファイルがcomposer.lockというファイルに記録されるので、
このファイルをGit管理などして、チーム内で共有すれば、
ローカルの環境をチーム内で統一しやすくなるという利点もある

・パッケージの依存関係を解消してくれる

そもそも依存管理システムとは、
そのPHPプロジェクトで必要なパッケージは何かを列挙すると、それらを自動的にインストールしてくれるものである

例えば、Aというパッケージが必要なとき、Bというライブラリが必要だという事例が多々存在する。
手作業でそれらのライブラリを収集する場合は、特に手間と時間がかかる。
Composerでは利用するパッケージとしてAを記述すれば、自動的にBも含めてインストールしてくれるという感じ

・オートローダーが存在する

→オートロードとは
 文字通り自動でロードする仕組み
 PHPではrequire_onceなどの記述によって、使用したいファイルを明示的にする必要があるが、
 これを自動的に読み込んでくれる仕組み

Composerでは、PHPのオートローダーが内蔵されており、Composerで取得したファイルだけでなく、
パッケージ管理外のファイルも対象に含んでくれる
このオートロード機能だけを使用するといったことも可能

Composerにおいての重要なファイル

composer.json

Composerの設定を記述する為のファイル
Composerをインストールして、composer installしたら、このcomposer.jsonを基に、パッケージなどを
venderディレクトリ配下にまとめてインストールする

package.json
{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^7.4|^8.0",
        "aws/aws-sdk-php-laravel": "~3.0",
        "doctrine/inflector": "^1.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel-doctrine/migrations": "^2.3",
        "laravel-doctrine/orm": "^1.7",
        ...

composer.lock

composer installしたときに生成されるのがこのファイル。
composer insatall時に参照されたパッケージのバージョン情報や、URLが記載される。

composer.lock
"packages": [
        {
            "name": "asm89/stack-cors",
            "version": "v2.0.3",
            "source": {
                "type": "git",
                "url": "https://github.com/asm89/stack-cors.git",
                "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714",
                "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714",
                "shasum": ""
            },
            "require": {
                "php": "^7.0|^8.0",
                "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0",
                "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0"
            },
            "require-dev": {
                "phpunit/phpunit": "^6|^7|^8|^9",
                "squizlabs/php_codesniffer": "^3.5"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "2.0-dev"
                }
            },

2回目以降にcomposer installした際は、このcomposer.lockが参照される
ディレクトリ内にcomposer.lockがある場合、composer installしても、単にcomposer.lockを参照してライブラリをインストールするので、何かが書き換わることはない。(アップデートしたいときはcomposer update

なので、前述したように、このファイルをチーム内で共有し、ローカルに落としてcomposer installするだけで、
チームでバージョン等を統一した状態で開発に必要なパッケージをインストールする事が可能

まとめると

コマンド composer.lock 動作
composer install あり composer.lockを元にインストール
composer install なし composer.jsonを元にインストール・composer.lock生成
composer update あり composer.jsonを元にアップデート・composer.lock更新
composer update なし composer.jsonを元にアップデート・composer.lock生成

インストール方法

windows

ComposerのダウンロードページからComposer-Setup.exeをダウンロードし、ファイルを実行する
その際に、PHPのパスを指定する必要がある
スクリーンショット 2022-09-01 100048.png

また、コマンドラインで直接インストールすることも可能

XAMPPでインストールしたディレクトリにインストールする場合は、
cd c:\xampp\phpでPHPがインストールされている場所に移動し、
php -r "readfile('https://getcomposer.org/installer');" | phpで直接composerのファイルを配置
echo @php "%~dp0composer.phar" %*>composer.batでバッチファイル(複数のコマンド列をあらかじめ記述してあるファイル、ここではComposerの機能を実現させる為のコマンド列)を作成することでインストールが完了する

 cd c:\xampp\php
> php -r "readfile('https://getcomposer.org/installer');" | php
> echo @php "%~dp0composer.phar" %*>composer.bat

Linux/Mac

コンソール上でインストールすることが可能
curl -sS https://getcomposer.org/installer | phpでComposer本体をダウンロード
sudo -s mv composer.phar /usr/local/bin/composerでcomposerコマンドを使用することができるように、ダウンロードしたファイルを/user/local/binなどのサーチパス(コマンドを実行する際に参照するディレクトリ)が通った場所に配置する

$ curl -sS https://getcomposer.org/installer | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /Users/phpuser/tmp/composer.phar
Use it: php composer.phar
$ sudo -s mv composer.phar /usr/local/bin/composer

まとめ

Composerってありがたい
(何か間違えあれば指摘お願い致します)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1