SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PHPカンファレンス実行委員プレゼンツ PHPの最前線

PHPパッケージ管理ツール「Composer」の処理の仕組みを見てみよう!

PHPカンファレンス実行委員プレゼンツ PHPの最前線 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

パッケージ管理を理解する上で必要な登場人物の整理

 まずは、Composerによるパッケージ管理を理解する上で欠かせない概念を整理します。最も重要なのが、パッケージリポジトリです。

パッケージ

 パッケージは、ライブラリやプロジェクトといったひとかたまりの単位をまとめるものです。名称や依存パッケージなどの情報を持ちます。1つのcomposer.jsonで定義される範囲が、1つのパッケージに相当します。

 開発作業を進めるプロジェクト自身に相当するパッケージは、特別に「ルートパッケージ」と呼びます。すなわち、composer installなどのコマンドで直接的に利用されるcomposer.jsonが示すパッケージです。

 ルートパッケージでは、パッケージの名称やバージョン情報の指定が必須ではありません。逆に、composer.jsonで指定できる設定項目の中には、ルートパッケージでのみ利用可能な内容も存在します。

 ルートパッケージにて依存として列挙されたパッケージ群もまた、それぞれcomposer.jsonによって構成が定義されている訳です。それらを辿っていき、整合性をとるのがComposerの大きな仕事の1つと言えます。

リポジトリ

 利用可能なパッケージやそのバージョンのリストを提供するのが、リポジトリです。大まかに言えば、「パッケージ名の一覧」「パッケージの各バージョンごとのcomposer.json」の集合があるような存在です。

 また、ここでは、パッケージ本体(バイナリやソースコード)の管理は行われません。その代わりに、それぞれのパッケージごとに本体の取得方法が記載されています。この情報を参考に、Composerが実際のファイルを取得しvendorディレクトリに展開していくことになります。

 リポジトリには、3つのタイプが存在します。それぞれパッケージリストの提供方法が異なります。

  1. composer:パッケージリストや、単体のパッケージの存在有無を確認する方法を提供するサービスを利用する
  2. vcs:Gitのベアリポジトリなど、VCSを利用してパッケージをホストしているoriginサーバーを列挙しておく。社内公開しているパッケージの利用などに使われる
  3. packagecomposer.json内に、パッケージのリストを明示的に列挙しておく。モノレポ構成の実現などに使われる

 composerタイプのリポジトリは、独立したパッケージ管理提供の主体といえます。一方で、vcsタイプやpackageタイプは、ルートパッケージ内で自身に関わるパッケージに関する情報を管理する方法といえるでしょう。

 Composerのリポジトリは、デフォルトではPackagistです。これはcomposerタイプのリポジトリで、問い合わせ先となるサービスURLがhttps://packagist.org/となる設定です。

 その他のリポジトリを利用するには、ルートパッケージのcomposer.jsonrepositoriesフィールドに追記していくことになります。また、repositoriesフィールドに"packagist.org": falseを設定することで、Packagistの無効化も可能です。

 composerタイプの典型的な利用例はPackagistですが、その用途は必ずしもそれだけに限ったものではありません。例えば、非公開のパッケージを管理するためのSaaSであるPrivate Packagistや、Satisによる自作リポジトリの生成・利用が考えられます。

次のページ
パッケージ取得の流れ

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PHPカンファレンス実行委員プレゼンツ PHPの最前線連載記事一覧

もっと読む

この記事の著者

金城 秀樹(キンジョウ ヒデキ)

 ずっとPHPにお世話になり続けているWeb系プログラマー。趣味は積ん読とNBA観戦。最近は、本を読んだ感想を話すPodcast「readlinefm」もやっています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20455 2024/11/13 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング