SHOEISHA iD

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

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

PHPパッケージ管理ツール「Composer」入門

Composerのプロジェクトを公開して使う

PHPパッケージ管理ツール「Composer」入門 第3回

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

 本連載では、Composerを使ったパッケージ管理を紹介します。前回は、ライブラリを作成する方法を通じて、composer.jsonの記述方法を紹介しましたが、今回は、作成したライブラリを社内向けなど限られたプライベート上に公開し利用する方法や、Packagistサイトにも公開する方法を紹介します。

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

対象読者

 PHPで開発を行っている方を対象としています。

必要な環境

 この記事では、PHP 5.5を使用し、Windows 8.1、Linux(CentOS6.3)、Mac OSX(10.9)の環境で確認を行っています。ただし、Composer自身はPHP5.3.2以上からサポートしています。

公開するライブラリを作成する

 公開するためのライブラリを作成するには、基本的には作成したソースコードをバージョン管理などに登録し、外部より参照可能にすることと基本的には変わりません。しかしながら、インストール対象となるファイルは管理しているファイルがすべて対象です。そのため、プロジェクトを公開するためのリポジトリ管理の際に以下のことに気をつけます。

  • vendorフォルダ以下を登録しない
  • composer.lockを登録しない

 これらは開発時には必要になりますが、登録した状態で公開してしまうと利用者の環境にもコピーされてしまいます。ただし、利用者からはAutoload機能により使えるものではないので、これらは登録する必要はありません。

 また、参考までにGitHubを用いてリポジトリを作成する場合には「Add .gitignore」ボタンから「Composer」を選択すると、vendorフォルダなどは最初から除外されるようになっていますので、その設定を利用することをお勧めします。

図1 GitHubでのリポジトリ作成
図1 GitHubでのリポジトリ作成

 続いて、composer.jsonを作成します。

リスト1 サンプルのcomposer.json
{
    "name" : "coltware/xtable",
    "type" : "library",
    "description" : "create table ddl from xml",
    "keywords" : ["database" , "xml" ],
    "homepage" : "https://github.com/coltware/xtable",
    "license" : "MIT",
    "authors" : [
        {
            "name": "coltware",
            "homepage": "https://github.com/coltware/xtable",
            "role": "Author"
        }
    ],

    "require": {
        "php" : ">=5.3.0"
    },
    "autoload" : {
        "psr-4" : {
            "coltware\\xtable\\" : "src/main"
        }
    },
    "archive" :{
        "exclude" :[
            "/vendor",
            "/composer.lock",
            "/*.iml",
            "/sample",
            "/.*"
        ]
    }
}

 リスト1は、本記事用に実際にGitHubに公開したcomposer.jsonです。指定の意味は、前回や前々回などの記述を参考にしてください。また、ここで新たな追加としては"archive"という指定があります。この指定は、実際のリポジトリからアーカイブファイルを作成するときに、そのリポジトリから除外するファイルやフォルダ一覧になります。

 実際に開発を行っているフォルダ配下で、以下のようなarchiveコマンドを実行すると指定した除外リストをのぞいたアーカイブが作成できます。

リスト2 アーカイブの作成方法
$composer archive --format=zip

 筆者は公開するためのリポジトリ(ローカルのSubversion)と公開するためのリポジトリ(Github)を分けているため、これらのリポジトリ間でファイルをコピーする際にこのコマンドを利用して、関係ないファイルを除外するようにしています。

 社内利用などの場合には複数のリポジトリを持つことはないと思いますので、リリース手順としてタグやブランチとして利用する場合などに利用できるテクニックです。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
プライベート用のリポジトリを利用する

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

  • このエントリーをはてなブックマークに追加
PHPパッケージ管理ツール「Composer」入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7991 2014/09/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング