Composer

3,571 views

Published on

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

No Downloads
Views
Total views
3,571
On SlideShare
0
From Embeds
0
Number of Embeds
688
Actions
Shares
0
Downloads
4
Comments
0
Likes
3
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
  • \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

    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. 私の演奏はまだまだこれからだ ご清聴 ありがとうございました。

    ×