Debian 11でComposerをインストールして使用する方法
以下の文を日本語で自然な言い方に言い換えてください。一つのオプションで構いません。
「Introduction」
Composerは、主にプロジェクトの依存関係のインストールと更新を容易にするために作成されたPHPの人気のある依存関係管理ツールです。Composerは、特定のプロジェクトが依存している他のパッケージをチェックし、プロジェクトの要件に基づいて適切なバージョンを使用してそれらをインストールします。また、Composerは、SymfonyやLaravelなどの人気のあるPHPフレームワークをベースにした新しいプロジェクトのブートストラップにもよく使用されます。
このガイドでは、Debian 11 サーバー上に Composer をインストールして使用します。
前提条件
(Zentei joken)
このチュートリアルを実行するには、Debian 11 サーバーが1つ必要です。また、非ルートのsudo権限を持ったユーザーとファイアウォールも有効にする必要があります。Debian 11 イニシャルサーバーセットアップガイドに従ってこれを行うことができます。
ステップ1 – 依存関係のインストール
Debian 11システム内にすでに含まれる可能性のある依存関係に加えて、ComposerはコマンドラインでPHPスクリプトを実行するためにphp-cliが必要であり、圧縮アーカイブを展開するためにunzipが必要です。
パッケージマネージャーキャッシュを更新することから始めましょう。
(Pakkeji manējā kyasshu o kōshin suru koto kara hajimemashou.)
- sudo apt update
次に、依存関係をインストールします。Composerをダウンロードするためにcurlが必要であり、インストールおよび実行するためにphp-cliが必要です。このチュートリアルで使用するライブラリの機能を提供するために、php-mbstringパッケージも必要です。プロジェクトの依存関係をダウンロードするためにComposerはgitを使用し、zippedパッケージを展開するためにunzipが必要です。すべてのコマンドは次のようにインストールできます。
- sudo apt install curl php-cli php-mbstring git unzip
すべての依存関係がインストールされたら、Composerをインストールすることができます。
ステップ2 – Composerのダウンロードとインストール
ComposerはPHPで書かれたインストーラーを提供しています。それをダウンロードし、破損していないことを確認した後、インストールに使用します。
最初に、自分がホームディレクトリにいることを確認してください。
- cd ~
それでは、curlを使用してインストーラーを取得してください。
- curl -sS https://getcomposer.org/installer -o composer-setup.php
次に、Composerパブリックキー/署名ページで見つかった最新のインストーラーのSHA-384ハッシュとインストーラーが一致しているかを確認してください。確認手順を容易にするために、以下のコマンドを使用してプログラムで最新のハッシュをComposerページから取得し、シェル変数に保存することができます。
- HASH=`curl -sS https://composer.github.io/installer.sig`
得られた値を出力するには、実行してください。
- echo $HASH
55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
次に、Composerのダウンロードページに記載されているPHPコードを実行して、インストールスクリプトが安全に実行できることを確認してください。
- php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘$HASH‘) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
あなたの出力は次のとおりです。
Installer verified
もし「インストーラーが破損しています」というメッセージが表示された場合、インストールスクリプトを再度ダウンロードし、正しいハッシュを利用して検証してください。その後、再びインストーラーを検証するコマンドを実行してください。検証が完了したインストーラーがあれば、作業を継続できます。
Composerをシステム全体で利用するために、以下のコマンドを使用してComposerをダウンロードし、/usr/local/binの下にcomposerというシステム全体のコマンドとしてインストールしてください。
- sudo php composer-setup.php –install-dir=/usr/local/bin –filename=composer
あなたの出力結果は以下の通りです。
All settings correct for using Composer Downloading… Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
このコマンドを実行して、インストールが正常に行われたか確認してください。
- composer
その後、出力は以下のように、Composerのバージョンと引数を表示します。
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.3.10 2022-07-13 15:48:23 Usage: command [options] [arguments] Options: -h, –help Display help for the given command. When no command is given display help for the list command -q, –quiet Do not output any message -V, –version Display this application version –ansi|–no-ansi Force (or disable –no-ansi) ANSI output -n, –no-interaction Do not ask any interactive question –profile Display timing and memory usage information –no-plugins Whether to disable plugins. –no-scripts Skips the execution of all scripts defined in composer.json file. -d, –working-dir=WORKING-DIR If specified, use the given directory as working directory. –no-cache Prevent use of the cache -v|vv|vvv, –verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .
システム上でComposerが正常にインストールされ、システム全体で利用可能であることが確認されます。
Note
これを行うには、コマンド「php composer-setup.php」を使用します。これにより、現在のディレクトリにcomposer.pharというファイルが生成されます。このファイルは「./composer.phar」というコマンドで実行することができます。
Composerをインストールしたので、次のステップではComposerを使用してPHPの依存関係を管理する方法を学びます。
ステップ3- PHPプロジェクトでComposerを使用する。
PHPプロジェクトはしばしば外部ライブラリに依存しており、これらの依存関係とそのバージョンを管理することは難しい場合があります。Composerは、依存関係を追跡し、他の人がそれらをインストールしやすくすることで、この問題を解決します。
あなたのプロジェクトでComposerを使用するためには、composer.jsonファイルが必要です。composer.jsonファイルは、Composerにプロジェクトのためにダウンロードする必要のある依存関係と各パッケージの許可されるインストールバージョンを指定します。これはプロジェクトを一貫させ、後方互換性の問題を引き起こす可能性のある不安定なバージョンのインストールを避けるために非常に重要です。
このファイルを手動で作成する必要はありません。手動で作成するとエラーが発生し、構文エラーが発生する可能性があるためです。Composerは、composer requireコマンドを使用してプロジェクトに依存関係を追加すると、自動的にcomposer.jsonファイルを生成します。同じ方法で追加の依存関係を追加することもできますので、このファイルに手動で編集する必要はありません。
Composerを使用してプロジェクトの依存関係としてパッケージをインストールするプロセスは、以下の手順を含みます。
- Identify what kind of library the application needs.
- Research a suitable open-source library on Packagist.org, the official package repository for Composer.
- Choose the package you want to depend on.
- Run composer require to include the dependency in the composer.json file and install the package.
デモアプリを使用して、これを試すことができます。
このアプリケーションの目的は、与えられた文章をURLに適した文字列に変換することです。この文字列はスラッグと呼ばれ、ページタイトルをURLのパスに変換するために一般的に使用されます。たとえば、このチュートリアルのURLの最後の部分として使用されます。
まずは、ホームディレクトリに移動してください。 (Mazu wa, hoomudeirekutori ni idō shite kudasai.)
- cd ~
その後、ディレクトリを作成してください。それをスラグ化と呼んでください。
- mkdir slugify
作成が完了したら、ディレクトリに移動してください。
- cd slugify
さあ、Packagist.orgでスラッグを生成するのに役立つパッケージを探す時期です。Packagistで「スラッグ」という用語を検索すると、以下に似た結果が得られます。
リスト内の各パッケージの右側には2つの数字があります。下向きの矢印のアイコンの隣の数字は、そのパッケージがインストールされた回数を示しており、星のアイコンの数字はGitHubでのスター数を示しています。これらの数字に基づいて、検索結果を並び替えることもできます。一般的に、より多くのインストールとスターを持つパッケージは、多くの人々が使用しているため、より安定しています。また、必要なものかどうかを確認するために、パッケージの説明も重要です。
このチュートリアルでは、文字列をスラッグに変換する必要があります。検索結果から見る限り、cocur/slugifyというパッケージが適切であり、インストール数と星の数も適度にあるようです。
Packagistにあるパッケージには、ベンダー名とパッケージ名があります。各パッケージは、GitHubがリポジトリで使用している形式と同じ形式のユニークな識別子(名前空間)を持っており、vendor/packageの形式で表されます。インストールしたいライブラリは、cocur/slugifyという名前空間を使用しています。プロジェクトでパッケージを要求するためには、この名前空間が必要です。
必要なパッケージを知ったら、依存関係として含めるためにcomposer requireを実行し、またプロジェクトのcomposer.jsonファイルも生成してください。
- composer require cocur/slugify
コンポーザーが依存関係をダウンロードすると、あなたの出力は以下のように返ります。
Using version ^4.1 for cocur/slugify ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals – Locking cocur/slugify (v4.1.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals – Downloading cocur/slugify (v4.1.0) – Installing cocur/slugify (v4.1.0): Extracting archive Generating autoload files
この出力からわかるように、Composerはパッケージの使用するバージョンを自動的に決定します。プロジェクトのディレクトリを確認すると、composer.jsonとcomposer.lockという二つの新しいファイルとvendorディレクトリが含まれています。
- ls -l
total 12 -rw-r–r– 1 sammy sammy 59 Aug 2 22:19 composer.json -rw-r–r– 1 sammy sammy 3462 Aug 2 22:19 composer.lock drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor
composer.lock ファイルは、インストールされた各パッケージのバージョン情報を保存するために使用されます。また、他の人がプロジェクトをクローンし、その依存関係をインストールする場合には、同じバージョンが使用されることを保証します。vendor ディレクトリは、プロジェクトの依存関係が配置される場所です。vendor フォルダはバージョン管理にコミットする必要はありませんが、composer.json と composer.lock ファイルを含める必要があります。
Note
次に、バージョンの制約を確認してください。composer.jsonファイルの内容をチェックすると、以下のようなものがあるはずです。
- cat composer.json
{ “require”: { “cocur/slugify”: “^4.1” } }
composer.jsonのバージョン番号の前に特別な文字^があることに気づくかもしれません。Composerは、必要なパッケージのバージョンを定義するためのいくつかの異なる制約と形式をサポートしており、柔軟性を提供しつつプロジェクトを安定させることができます。自動生成されたcomposer.jsonファイルで使用されるキャレット(^)演算子は、セマンティックバージョニングに従い、最大の相互運用性を確保するための推奨される演算子です。この場合、4.1を最低互換バージョンとし、5.0未満の将来のいかなるバージョンへの更新も許可します。
一般的に言えば、composer.jsonファイルでバージョン制約を手動で編集する必要はありません。しかし、いくつかの状況では制約を手動で編集する必要が生じることがあります。例えば、必要なライブラリの大規模な新バージョンがリリースされた際にバージョンアップしたい場合や、使用したいライブラリがセマンティックバージョニングに従っていない場合などです。
Composerバージョン制約の動作をより理解するためのいくつかの例を以下に示します。
Constraint | Meaning | Example Versions Allowed |
---|---|---|
^1.0 | >= 1.0 < 2.0 | 1.0, 1.2.3, 1.9.9 |
^1.1.0 | >= 1.1.0 < 2.0 | 1.1.0, 1.5.6, 1.9.9 |
~1.0 | >= 1.0 < 2.0.0 | 1.0, 1.4.1, 1.9.9 |
~1.0.0 | >= 1.0.0 < 1.1 | 1.0.0, 1.0.4, 1.0.9 |
1.2.1 | 1.2.1 | 1.2.1 |
1.* | >= 1.0 < 2.0 | 1.0.0, 1.4.5, 1.9.9 |
1.2.* | >= 1.2 < 1.3 | 1.2.0, 1.2.3, 1.2.9 |
Composerのバージョン制約についてより詳しく知りたい場合は、公式のドキュメントを参照してください。
次に、Composerを使って依存関係を自動的にロードする方法を学びます。
ステップ4:オートロードスクリプトを含める
PHP自体はクラスを自動的にロードしないので、Composerは自動ロードを実現するためにプロジェクトに含めることができるオートロードスクリプトを提供しています。これは依存関係を扱う際に役立ちます。
PHPのスクリプトでクラスのインスタンス化を行う前に、必要な唯一のことは、vendor/autoload.phpファイルを含めることです。このファイルは、最初の依存関係を追加する際にComposerによって自動的に生成されます。
アプリケーションでそれをテストすることができます。test.phpというファイルを作成し、お好みのテキストエディタで開いてください。ここでは、nanoを使用しています。
- nano test.php
以下のコードを追加して、vendor/autoload.phpファイルを読み込み、cocur/slugifyの依存関係をロードし、スラッグを作成します。
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
ファイルを保存してエディターを終了してください。もしnanoを使っている場合は、CTRL + X を押してから Y と ENTER を押せば実行できます。
今、スクリプトを実行してください。
- php test.php
これにより、以下の出力が生成されます。
hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
新しいバージョンが出た際には、依存関係を更新する必要がありますので、最後のステップでその処理方法を学びます。
ステップ5:プロジェクトの依存関係を更新します。
最新バージョンにプロジェクトの依存関係を更新したい場合は、アップデートコマンドを実行してください。
- composer update
以下の日本語でのネイティブなパラフレーズをご提供いたします(1つのオプションのみ):
これにより、プロジェクトで要件として追加したライブラリの新しいバージョンが検索されます。もし新しいバージョンが見つかり、composer.jsonファイルで定義されたバージョン制約と互換性がある場合、Composerは以前にインストールされたバージョンを置き換えます。これらの変更を反映するため、composer.lockファイルも更新されます。
以下のように、特定のライブラリを指定して更新することもできます。
- composer update vendor/package vendor2/package2
依存関係を更新した後は、composer.jsonとcomposer.lockファイルに変更内容を反映させることを忘れずに行ってください。そうすることで、プロジェクトに取り組んでいる誰でも同じパッケージバージョンにアクセスできるようになります。
結論
コンポーザーは、どのPHP開発者も必ず備えているべき強力なツールです。このチュートリアルでは、Debian 11にコンポーザーをインストールし、プロジェクトで使用しました。依存関係のインストールと更新方法を学びました。
プロジェクトの依存関係を管理するための信頼性のある方法を提供するだけでなく、Composerはコミュニティによって作成されたPHPパッケージを共有し、発見する新しい基準を確立します。