Composer による依存管理 と Packagist によるライブラリの公開
- 5. 依存管理とは
• 常にリリース可能
(Relesable) なソフト
ウェアのための一つの要
素
• 参考: 『継続的デリバリー』13章 コンポーネントや
依存を管理する
- 6. 依存管理とは
Your Project
Framework
Framework
require
Framework
Framework
Framework
Component 2.1.0
Component 2.1.0
require Component 2.1.0
Component 2.1.0
Component 2.1.0
Library Foo-1.0.0 Library Bar-1.*
require
- 8. 依存管理の方法
• svn や git に library 入れる
• git submodule や svn:external を使う
• svn:external は svn up の度に更新が走って煩わしい。 <-I hate!
• 当然 svn 利用時は git で管理するソースコードを何とかするのは難
しい。 (Github ならできるかもだけど)
• 専用のツールを使う
- 11. 特徴
• PHP5.3.2 以上用
• json でシンプルなパッケージ定義
• autoload 機能
• git, svn, hg, PEAR, PEAR2 上のライブラリを
依存として定義可能
• Public Package Repository もあるよ!
- 13. 入手
• まずは入手
• curl -s https://getcomposer.org/installer | php
• インストール要件等のチェック後、composer.phar がダウンロードされます。
• Proxy や curl がない等の場合は、
http://getcomposer.org/download/
からも入手可能
- 15. init コマンド
• Project の名前や、依存を定義する
composer.json を作成する
• init コマンドは対話形式で Public
Repository である Packagist から依存
パッケージを検索・選択することができ
る。 (でもちょっと重い)
- 17. 備考: init 時の指定
• Package name: パッケージ名 (ベンダー名/名前 という形式の必要がある。文字の大小は区別し
ない)
• Description: パッケージの説明
• Author: 作成者
• Minimum Stability: 依存パッケージの最小の安定性, stable を指定すると、dev (開発版) はイ
ンストールされない * ここ数カ月で増えた項目なので注意
- 18. composer.json
{
"name": "kawahara/sample20120915",
"require": {
"pimple/pimple": "1.0.0"
},
"minimum-stability": "stable",
"authors": [
{
"name": "Shogo Kawahara",
"email": "[email protected]"
}
]
}
- 19. require について
• 依存を “パッケージ名” : “バージョン” で
指定する
• バージョンは、”1.0.*” のようなワイル
ドカードや、”1.0<=,2.0>” のような範
囲指定もできる。
- 20. install コマンド
• php composer.phar install
• composer.json を依存解決し、パッケー
ジのダウンロードを行い、vendor/ に配
置する。
• composer.lock というファイルが存在し
ない場合は、ダウンロードしたパッケー
ジのバージョン情報を書き出す。
- 21. install コマンド
• install コマンド実行時に composer.lock ファイ
ルが存在する場合は、 composer.lock に書きだ
されているバージョンをダウンロードする。
• -> チーム開発時に同じバージョンを共有するため
• -> プロジェクトであれば composer.lock もコミットして共有する
こと!!
- 22. update コマンド
• php composer.phar update
• composer.json の require を更新し、依
存を入手したい場合は、 update コマン
ドを使う。
• その際、composer.lock も更新される。
- 25. Packagist 以外から
{
"name": "kawahara/sample20120915",
“repositories”: [
{
“type”: “pear”,
“url” : “http://pear2.php.net”
}
],
"require": {
"pimple/pimple": "1.0.0",
“pear-pear2/PEAR2_HTTP_Request”: “*”
},
...
- 26. Packagist 以外から
{
"name": "kawahara/sample20120915",
“repositories”: [
{
“type”: “svn”,
“url”: “http://smarty-php.googlecode.com/svn/”,
“vender-alias: “smarty”
}
],
"require": {
"pimple/pimple": "1.0.0",
“smarty”: “3.1.*”
},
...
- 32. 詳しくはドキュメント
• 更に細かい情報は、全てドキュメントに載って
います。
• http://getcomposer.org/
• 英語? あぁ、仰らないで。私が (ひどいもんです
が) 日本語化していたりします。
• https://github.com/kawahara/composer/
tree/japanese-doc-progress/jpdoc
• この際はっきり言うと、英語苦手なので誰か手
伝って。特にひどいと思った人は。