Composer による依存管理と Packagist によるライブラリの公開          Ooharabucyou      <kawahara@bucyou.net>  2012-09-15 PHP Conference 2012
おしながき• 依存管理とは何か• 使おう Composer• ライブラリを Packagist で公開しよう
自己紹介•@ooharabucyou•川原翔吾•PHP遣い 5年目くらい •おもに Symfony な人•最近: Groovy やら Spring Framework•2008-2011 OpenPNEの開発•2011-     楽天ウェブサー...
依存管理とは• 依存管理 (Dependency Management)• プロジェクトが依存するライブラリを管 理する
依存管理とは • 常にリリース可能     (Relesable) なソフト     ウェアのための一つの要     素 •   参考: 『継続的デリバリー』13章 コンポーネントや     依存を管理する
依存管理とはYour Project                               Framework                               Framework                  requir...
ちゃんと依存管理する利点• 開発環境構築が楽に!• Library バージョンアップもいくばしか 楽に• 同じプロジェクトをチームで開発する場 合、ライブラリのバージョンのズレをな くす
依存管理の方法• svn や git に library 入れる• git submodule や svn:external を使う • svn:external は svn up の度に更新が走って煩わしい。 <-I hate! • 当然 s...
他の言語だと• Ruby - Bundler• node.js - npm• Java - Maven  (僕はGradleが好き)
PHPの場合?• Composer• 採用しているプロダクト • Symfony2, Zend Framework2,   FuelPHP, ...
特徴• PHP5.3.2 以上用• json でシンプルなパッケージ定義• autoload 機能• git, svn, hg, PEAR, PEAR2 上のライブラリを  依存として定義可能• Public Package Repositor...
おてもとに準備するもの• PHP5.3.2 以降• 依存するライブラリを管理している VCS • 多くは Github で管理されているた   め、 git のインストールが必要• (一応 Windows でも動いた)
入手• まずは入手 •   curl -s https://getcomposer.org/installer | php •   インストール要件等のチェック後、composer.phar がダウンロードされます。• Proxy や curl...
プロジェクトを始める• mkdir YOUR_PROJECT_DIR• cd YOUR_PROJECT_DIR• php PATH_TO_COMPOSER init
init コマンド• Project の名前や、依存を定義する composer.json を作成する• init コマンドは対話形式で Public Repository である Packagist から依存 パッケージを検索・選択することが...
Packagist• packagist.org• composer の中央公開レポジトリ• どなたでもパッケージを公開できます• 現在 3,000パッケージ以上が登録されている  • -> PEAR, PEAR2 より多い!!
備考: init 時の指定•   Package name: パッケージ名 (ベンダー名/名前 という形式の必要がある。文字の大小は区別し    ない)•   Description: パッケージの説明•   Author: 作成者•   Mi...
composer.json{    "name": "kawahara/sample20120915",    "require": {         "pimple/pimple": "1.0.0"    },    "minimum-st...
require について• 依存を “パッケージ名” : “バージョン” で 指定する• バージョンは、”1.0.*” のようなワイル ドカードや、”1.0<=,2.0>” のような範 囲指定もできる。
install コマンド• php composer.phar install• composer.json を依存解決し、パッケー  ジのダウンロードを行い、vendor/ に配  置する。• composer.lock というファイルが存在...
install コマンド• install コマンド実行時に composer.lock ファイ ルが存在する場合は、 composer.lock に書きだ されているバージョンをダウンロードする。 • -> チーム開発時に同じバージョンを共有...
update コマンド• php composer.phar update• composer.json の require を更新し、依 存を入手したい場合は、 update コマン ドを使う。• その際、composer.lock も更新さ...
パッケージ入手後• 大抵のパッケージは vender/autoload.php をロードするだ けで composer 同梱のオートローダーが ファイルロードを何とかする。
Packagist 以外から• composer.json に レポジトリ情報を書く ことによって Packagist 以外のレポジト リにあるソースコードに依存を張ること ができる。
Packagist 以外から{    "name": "kawahara/sample20120915",    “repositories”: [         {             “type”: “pear”,          ...
Packagist 以外から{    "name": "kawahara/sample20120915",    “repositories”: [         {             “type”: “svn”,           ...
特集: Packagist に公開簡単な手順を踏むだけで、 Packagistに簡単にパッケージを登録することができます。
手順1. composer.json に公開に必要な情報を  記述します。  •   php composer.phar validate でチェック!2. Github などで composer.json ごと公   開3. Packagis...
公開!tag がバージョンになります。このとき、tag は x.y.z という形式で!Github の場合 サービスフックすると、tag 更新時に自動的に Packagistのバージョンが更新される
http://packagist.org/packages/kawahara/httpgetcontents公開できました!!ちゃんと使えます。(実演は失敗した)
レシピおさらいお手持ちの PHP製ライブラリGithub Repository
詳しくはドキュメント• 更に細かい情報は、全てドキュメントに載って  います。• http://getcomposer.org/• 英語? あぁ、仰らないで。私が (ひどいもんです  が) 日本語化していたりします。• https://gith...
良い依存管理ライフを
Upcoming SlideShare
Loading in …5
×

Composer による依存管理 と Packagist によるライブラリの公開

17,755 views

Published on

Published in: Technology
0 Comments
23 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,755
On SlideShare
0
From Embeds
0
Number of Embeds
7,839
Actions
Shares
0
Downloads
27
Comments
0
Likes
23
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Composer による依存管理 と Packagist によるライブラリの公開

    1. 1. Composer による依存管理と Packagist によるライブラリの公開 Ooharabucyou <kawahara@bucyou.net> 2012-09-15 PHP Conference 2012
    2. 2. おしながき• 依存管理とは何か• 使おう Composer• ライブラリを Packagist で公開しよう
    3. 3. 自己紹介•@ooharabucyou•川原翔吾•PHP遣い 5年目くらい •おもに Symfony な人•最近: Groovy やら Spring Framework•2008-2011 OpenPNEの開発•2011- 楽天ウェブサービス (公開API) の中の人
    4. 4. 依存管理とは• 依存管理 (Dependency Management)• プロジェクトが依存するライブラリを管 理する
    5. 5. 依存管理とは • 常にリリース可能 (Relesable) なソフト ウェアのための一つの要 素 • 参考: 『継続的デリバリー』13章 コンポーネントや 依存を管理する
    6. 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
    7. 7. ちゃんと依存管理する利点• 開発環境構築が楽に!• Library バージョンアップもいくばしか 楽に• 同じプロジェクトをチームで開発する場 合、ライブラリのバージョンのズレをな くす
    8. 8. 依存管理の方法• svn や git に library 入れる• git submodule や svn:external を使う • svn:external は svn up の度に更新が走って煩わしい。 <-I hate! • 当然 svn 利用時は git で管理するソースコードを何とかするのは難 しい。 (Github ならできるかもだけど)• 専用のツールを使う
    9. 9. 他の言語だと• Ruby - Bundler• node.js - npm• Java - Maven (僕はGradleが好き)
    10. 10. PHPの場合?• Composer• 採用しているプロダクト • Symfony2, Zend Framework2, FuelPHP, ...
    11. 11. 特徴• PHP5.3.2 以上用• json でシンプルなパッケージ定義• autoload 機能• git, svn, hg, PEAR, PEAR2 上のライブラリを 依存として定義可能• Public Package Repository もあるよ!
    12. 12. おてもとに準備するもの• PHP5.3.2 以降• 依存するライブラリを管理している VCS • 多くは Github で管理されているた め、 git のインストールが必要• (一応 Windows でも動いた)
    13. 13. 入手• まずは入手 • curl -s https://getcomposer.org/installer | php • インストール要件等のチェック後、composer.phar がダウンロードされます。• Proxy や curl がない等の場合は、 http://getcomposer.org/download/ からも入手可能
    14. 14. プロジェクトを始める• mkdir YOUR_PROJECT_DIR• cd YOUR_PROJECT_DIR• php PATH_TO_COMPOSER init
    15. 15. init コマンド• Project の名前や、依存を定義する composer.json を作成する• init コマンドは対話形式で Public Repository である Packagist から依存 パッケージを検索・選択することができ る。 (でもちょっと重い)
    16. 16. Packagist• packagist.org• composer の中央公開レポジトリ• どなたでもパッケージを公開できます• 現在 3,000パッケージ以上が登録されている • -> PEAR, PEAR2 より多い!!
    17. 17. 備考: init 時の指定• Package name: パッケージ名 (ベンダー名/名前 という形式の必要がある。文字の大小は区別し ない)• Description: パッケージの説明• Author: 作成者• Minimum Stability: 依存パッケージの最小の安定性, stable を指定すると、dev (開発版) はイ ンストールされない * ここ数カ月で増えた項目なので注意
    18. 18. composer.json{ "name": "kawahara/sample20120915", "require": { "pimple/pimple": "1.0.0" }, "minimum-stability": "stable", "authors": [ { "name": "Shogo Kawahara", "email": "kawahara@bucyou.net" } ]}
    19. 19. require について• 依存を “パッケージ名” : “バージョン” で 指定する• バージョンは、”1.0.*” のようなワイル ドカードや、”1.0<=,2.0>” のような範 囲指定もできる。
    20. 20. install コマンド• php composer.phar install• composer.json を依存解決し、パッケー ジのダウンロードを行い、vendor/ に配 置する。• composer.lock というファイルが存在し ない場合は、ダウンロードしたパッケー ジのバージョン情報を書き出す。
    21. 21. install コマンド• install コマンド実行時に composer.lock ファイ ルが存在する場合は、 composer.lock に書きだ されているバージョンをダウンロードする。 • -> チーム開発時に同じバージョンを共有するため • -> プロジェクトであれば composer.lock もコミットして共有する こと!!
    22. 22. update コマンド• php composer.phar update• composer.json の require を更新し、依 存を入手したい場合は、 update コマン ドを使う。• その際、composer.lock も更新される。
    23. 23. パッケージ入手後• 大抵のパッケージは vender/autoload.php をロードするだ けで composer 同梱のオートローダーが ファイルロードを何とかする。
    24. 24. Packagist 以外から• composer.json に レポジトリ情報を書く ことによって Packagist 以外のレポジト リにあるソースコードに依存を張ること ができる。
    25. 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. 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.*” }, ...
    27. 27. 特集: Packagist に公開簡単な手順を踏むだけで、 Packagistに簡単にパッケージを登録することができます。
    28. 28. 手順1. composer.json に公開に必要な情報を 記述します。 • php composer.phar validate でチェック!2. Github などで composer.json ごと公 開3. Packagist に Repository URL を登 録
    29. 29. 公開!tag がバージョンになります。このとき、tag は x.y.z という形式で!Github の場合 サービスフックすると、tag 更新時に自動的に Packagistのバージョンが更新される
    30. 30. http://packagist.org/packages/kawahara/httpgetcontents公開できました!!ちゃんと使えます。(実演は失敗した)
    31. 31. レシピおさらいお手持ちの PHP製ライブラリGithub Repository
    32. 32. 詳しくはドキュメント• 更に細かい情報は、全てドキュメントに載って います。• http://getcomposer.org/• 英語? あぁ、仰らないで。私が (ひどいもんです が) 日本語化していたりします。• https://github.com/kawahara/composer/ tree/japanese-doc-progress/jpdoc• この際はっきり言うと、英語苦手なので誰か手 伝って。特にひどいと思った人は。
    33. 33. 良い依存管理ライフを

    ×