Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Composer

3,795 views

Published on

Published in: Technology
  • Be the first to comment

Composer

  1. 1. Dependency Management tool ComposerShogo Kawahara <kawahara@bucyou.net>
  2. 2. こんにちは
  3. 3. だれやねん
  4. 4. だれやねん• @ooharabucyou ¦ かわはら しょうご
  5. 5. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)
  6. 6. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)• 最近は Rakuten という会社で Symfony2 ・Java Spring Framework・Groovy と戯れる日々
  7. 7. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)• 最近は Rakuten という会社で Symfony2 ・Java Spring Framework・Groovy と戯れる日々• 外向きのAPIをうぉうんする人
  8. 8. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)• 最近は Rakuten という会社で Symfony2 ・Java Spring Framework・Groovy と戯れる日々• 外向きのAPIをうぉうんする人• PHP歴は 5年くらい?
  9. 9. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)• 最近は Rakuten という会社で Symfony2 ・Java Spring Framework・Groovy と戯れる日々• 外向きのAPIをうぉうんする人• PHP歴は 5年くらい?• 23歳児
  10. 10. だれやねん• @ooharabucyou ¦ かわはら しょうご• ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア ルバイト)• 最近は Rakuten という会社で Symfony2 ・Java Spring Framework・Groovy と戯れる日々• 外向きのAPIをうぉうんする人• PHP歴は 5年くらい?• 23歳児• http://github.com/kawahara
  11. 11. いまの Symfonyの Download ページ
  12. 12. !!
  13. 13. これはなんだ!
  14. 14. その名もComposer• ライブラリの依存管理 (Dependency Management) ツール
  15. 15. その名もComposer• ライブラリの依存管理 (Dependency Management) ツール
  16. 16. 依存管理?Framework-2.1.0 Framework Framework require Framework Framework Framework Component 2.1.0 Component 2.1.0Library Foo-1.0.0 Component 2.1.0 Component 2.1.0 Component 2.1.0 require require Library Bar-1.0.0 こういった管理をやる必要がある (常に Releasable なものを用意する。) Continuous Delivery p.367 参照
  17. 17. 何が捗る?
  18. 18. 何が捗る?• テスト
  19. 19. 何が捗る?• テスト• 環境構築
  20. 20. 何が捗る?• テスト• 環境構築• ライブラリのバージョンアップへの対 応
  21. 21. 何が捗る?• テスト• 環境構築• ライブラリのバージョンアップへの対 応• デプロイ自働化
  22. 22. Composer• Public な composer repository も完 備• 自由に誰でもライブラリを登録できま す。
  23. 23. Packagist (これ自体も Open Source) Symfony2 利用
  24. 24. Composer• Public な Compoesr repository もあ り、 1,829 package 登録 (PEAR: 588, PEAR2: 19)
  25. 25. Composer• はっきり言うと、PHPバージョンの以 下のようなもの。
  26. 26. Composer 誕生以前
  27. 27. 依存管理は どうだったか(PHP的に考えて)
  28. 28. ライブラリを自分のプロジェクトに コピペ なおかつコミット
  29. 29. なにそれこわい
  30. 30. • Dependency Management Version Control• 「Aライブラリ ver2.1.0 は Bライブラ リ ver 2.1.0 を必要としている」とい う状況を常に創りださなければならな い。
  31. 31. svn:externals
  32. 32. git submodule
  33. 33. そうだね git から svn の プロジェクトsubmodule にできないね (逆も然り)
  34. 34. しかも• svn:external って、 svn upするたび に、依存引っ張ってきてうぜぇ。
  35. 35. PEAR
  36. 36. PEAR2
  37. 37. package.xmlよむのたるい
  38. 38. package.xmlつくるのたるい
  39. 39. Symfony2.0時代• ./bin/vendor という php script• deps に定義された git repository & version を取得
  40. 40. Composer
  41. 41. Composer• PHP 5.3.2 <= 用
  42. 42. Composer• PHP 5.3.2 <= 用• json でシンプルパッケージ定義
  43. 43. Composer• PHP 5.3.2 <= 用• json でシンプルパッケージ定義• autoload 機能
  44. 44. Composer• PHP 5.3.2 <= 用• json でシンプルパッケージ定義• autoload 機能• svn, git, hg, PEAR, PEAR2 のパッケージも 管理可能
  45. 45. Composer• PHP 5.3.2 <= 用• json でシンプルパッケージ定義• autoload 機能• svn, git, hg, PEAR, PEAR2 のパッケージも 管理可能• gitはインストールほぼ必須
  46. 46. デモ• インストール• アプリを作るとき• 依存パッケージ入手• PEAR, PEAR2 は?
  47. 47. インストール • curl -s http://getcomposer.org/ installer | php• or• php -r "eval(? >.file_get_contents(http:// getcomposer.org/installer));"
  48. 48. インストール• グローバルにインストールするとき• sudo mv composer.phar /usr/local/ bin/composer
  49. 49. アプリを作るとき• composer init• -> 対話式パッケージ作成コマンド
  50. 50. 依存パッケージ入手• composer install (composer.lock か ら or 初回)• composer update (composer.json から or 更新時)
  51. 51. パッケージ追加• composer require• package.json を更新して、パッケージ を入手 (composer update)
  52. 52. autoload• Composer で入手されたライブラリを使うと き• require vendor/autoload.php;• 基本的にこれだけ!
  53. 53. Symfony Standard の場合• 既に、composer の autoload.php が ロードされているので、ライブラリを 落とした時点で使える。
  54. 54. そして Symfony2.1• php composer.phar create-project symfony/framework-standard-edition path/ v2.1.0-beta1• 新しい Symfony2 Framework’s Project を作成
  55. 55. そして Symfony2.1•composer require•で Bundle 取得できる!!
  56. 56. 実用 Composer• Travis CI with Composer • http://travis-ci.org/#!/doctrine/ DoctrineBundle/jobs/1654133
  57. 57. 欠点• たまに (composer自体が) ぶっ壊れる • composer self-update で最新版が手に入 るが、最新版が動かないことが、、、 (2012/06現在) • Symfony2.1 リリース後は stable なもの を配ってくれるといいのだが…。
  58. 58. 欠点• まだまだ激しい変更? • autoload directory の変更 (5月)• packagist ちょっと遅くね?
  59. 59. 実際にプロダクトでつかった思い出 (怪談・失敗例)
  60. 60. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている)
  61. 61. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる
  62. 62. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる• Packagist 死んだ
  63. 63. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる• Packagist 死んだ • Test Fail -> CI Tool に怒られる
  64. 64. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる• Packagist 死んだ • Test Fail -> CI Tool に怒られる• github.com 死んだ
  65. 65. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる• Packagist 死んだ • Test Fail -> CI Tool に怒られる• github.com 死んだ • Test Fail -> CI Tool に怒られる
  66. 66. 実際にプロダクトで つかった思い出 (怪談・失敗例)• composer update したいのにできないでござる (composer 自体が 壊れている) • Test Fail -> CI Tool に怒られる• Packagist 死んだ • Test Fail -> CI Tool に怒られる• github.com 死んだ • Test Fail -> CI Tool に怒られる• autoload の場所変わった
  67. 67. お役立ち資料• Documents• http://getcomposer.org/• Easy Package Management with Composer• http://net.tutsplus.com/tutorials/php/easy-package- management-with-composer/
  68. 68. 推薦書籍最近日本語が出た!
  69. 69. 私の演奏はまだまだこれからだ ご清聴 ありがとうございました。

×