4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【メモ】Composerについて学ぶ(Laravelプロジェクト作成編)

Last updated at Posted at 2022-04-14

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

Composerとは

Composerは、PHPでの依存関係管理のためのツールです。 プロジェクトが依存するライブラリを宣言することができ、それらを管理(インストール/更新)します。

依存関係の管理

YumやAptなどとは異なり、Composerはプロジェクト内のvendorディレクトリなどにパッケージまたはライブラリをインストールする。
つまりプロジェクト単位でパッケージやライブラリのインストールができるということ。

デフォルトとしてプロジェクト単位でインストールする仕様になっているが、globalコマンドを使用すると他のプロジェクトでもインストールしたパッケージやライブラリを参照できるようなる?

Composerを使ってプロジェクトで使いたいライブラリを宣言すると、そのライブラリだけでなく、ライブラリが依存しているライブラリをバージョンの整合性を崩さないようにプロジェクトにインストールすることができる。
依存関係を更新する場合もコマンド一つで実施可能。

システム要求

2022/4/13現在の最新バージョン(v2.3.4)のComposerを実行するには、PHP7.2.5が必要。
ComposerはマルチプラットフォームでWindows、Linux、macOSで動作する
パッケージをダウンロードする方法としてzipダウンロードか、gitなどのバージョン管理システムのcloneを使う方法がある。
バージョン管理システムのcloneを使う場合は、例えばgitであればgitをインストールしておく必要がある。

インストール-Windows

Composer-Setup.exe(インストーラー)をダウンロードして実行します。
インストーラーでは毎回最新のComposerバージョンがインストールされ、コマンドラインでどのディレクトリからでもcomposerを呼び出すことができるようにPATHが設定されます。

Composerチュートリアル

以下のフォルダを作成してLaravelプロジェクトを作成してみる。
D:\PHP\Trial\FirstLaravelProject
image.png

Laravelプロジェクトを作成するときのコマンド

composer create-project laravel/laravel プロジェクト名 --prefer-dist "バージョン指定"

create-project

create-projectコマンドを使えば既存のパッケージから新しいプロジェクトを作成できる。
中でやっていることは下記と同じこと。

git clone https://github.com/laravel/laravel
または
laravel/laravelをzipでダウンロードして解凍
cd laravel
composer install

LaravelリポジトリにちゃんとComposer.jsonがあるのでcomposer installができる。
https://github.com/laravel/laravel/blob/9.x/composer.json

--prefer-dist

--prefer-source
git cloneでソースを落とす。デフォルト(オプションの指定なし)ではこちらのコマンドが使われる。
--prefer-dist
zipでダウンロードする。このコマンドのほうが高速にソースをダウンロードできるので、このオプションはよく使われる。
https://laraweb.net/surrounding/3973/

本場のgitでもzipダウンロードかcloneか選べる
image.png

"バージョン指定"

省略すれば最新がダウンロードされる。

Laravelプロジェクト作成

以下のコマンドを実行してLaravelプロジェクトを作成する。

composer create-project laravel/laravel FirstLaravelProject --prefer-dist

実行するとバーッと表示される。
image.png

完了
image.png

プロジェクト名のフォルダが自動作成されるから無駄に階層が一つ深くなってしまった。
今後はプロジェクトフォルダを作らずにやろうと思う。(プロジェクトをまとめて置くフォルダはあった方がよい)
image.png

Composerの重要だと思われるファイル

composer.json

composer.jsonをアプリのディレクトリに配置してcomposer installをしたら、composer.jsonに書かれた情報を基にパッケージやライブラリがvendorディレクトリ配下にまとめてインストールされます。
https://www.engilaboo.com/about-composer/

コマンド実行ディレクトリにcomposer.jsonがないとcomposer installはできない

D:\PHP\Trial>composer install
Composer could not find a composer.json file in D:\PHP\Trial
To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage

0からプロジェクトを作る場合はcomposer initを使って新規プロジェクトを作る。
composer initを使う目的は、フレームワークを使わないようなプロジェクトを作ること。
普通に業務をするときにフレームワークを使わないことはないみたいなので、練習用にフレームワークなしでプロジェクト作ってみるとかそのくらいの用途だそう。

composer.lock

composer installで初めてcomposer.jsonの内容でパッケージやライブラリがダウンロードされたときに、自動で作成されるのがcomposer.lock。
ダウンロードしたパッケージやライブラリのバージョン情報がcomposer.lockに書き込まれる。
composer.lockがcomposer installを実行するディレクトリにあるとcomposer.jsonより優先して参照される。
composer.jsonは記載されている情報を使ってパッケージをバージョンの整合性などを判断しながら集めるため時間がかかるケースがある。それに対してcomposer.lockはすでにバージョンの整合性を判断して問題なかったファイルの情報が載っている為、書いてあるものを素直にダウンロードすればよいので処理が速い。
他の人にcomposer.lockを渡せば同じ環境をすぐに作れるので便利だね!

Composerの学習課題

Composerはまだ知っておいた方がよい情報がありそうだが現時点で使うであろう内容は最低限抑えたのでそのほかはまた別の機会で学ぶ。
・Composerの基本コマンド
・autoload(https://hara-chan.com/it/programming/php-autoload-composer)
・packagist(セントラルリポジトリ)
・composer.jsonの記載内容

参考資料
https://readouble.com/laravel/8.x/ja/installation.html
https://qiita.com/niisan-tokyo/items/8cccec88d45f38171c94
https://ha2pylife.com/laravel-composer/
https://laraweb.net/surrounding/3973/
https://qiita.com/piotzkhider/items/5a6a3d897890dd383f66
https://github.com/laravel/laravel
https://chigusa-web.com/blog/laravel-setup/3/
https://www.engilaboo.com/about-composer/
https://www.webdesignleaves.com/pr/php/php_composer.php
https://qiita.com/shinkuFencer/items/8e109d45861ee56df42a

4
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?