SlideShare a Scribd company logo
1 of 69
Dependency
    Management tool
       Composer
Shogo Kawahara <kawahara@bucyou.net>
こんにちは
だれやねん
だれやねん
•   @ooharabucyou ¦ かわはら しょうご
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)

•   最近は Rakuten という会社で Symfony2 ・Java
    Spring Framework・Groovy と戯れる日々
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)

•   最近は Rakuten という会社で Symfony2 ・Java
    Spring Framework・Groovy と戯れる日々

•   外向きのAPIをうぉうんする人
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)

•   最近は Rakuten という会社で Symfony2 ・Java
    Spring Framework・Groovy と戯れる日々

•   外向きのAPIをうぉうんする人

•   PHP歴は 5年くらい?
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)

•   最近は Rakuten という会社で Symfony2 ・Java
    Spring Framework・Groovy と戯れる日々

•   外向きのAPIをうぉうんする人

•   PHP歴は 5年くらい?

•   23歳児
だれやねん
•   @ooharabucyou ¦ かわはら しょうご

•   ちょっと前まで OpenPNE とか作ってた (元手嶋屋ア
    ルバイト)

•   最近は Rakuten という会社で Symfony2 ・Java
    Spring Framework・Groovy と戯れる日々

•   外向きのAPIをうぉうんする人

•   PHP歴は 5年くらい?

•   23歳児

•   http://github.com/kawahara
いまの Symfony
の Download ページ
!!
これはなんだ!
その名もComposer


• ライブラリの依存管理
 (Dependency
 Management) ツール
その名もComposer


• ライブラリの依存管理
 (Dependency
 Management) ツール
依存管理?
Framework-2.1.0
                                  Framework
                                  Framework
                     require       Framework
                                   Framework
                                    Framework
                               Component 2.1.0
                               Component 2.1.0
Library 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 参照
何が捗る?
何が捗る?
• テスト
何が捗る?
• テスト
• 環境構築
何が捗る?
• テスト
• 環境構築
• ライブラリのバージョンアップへの対
 応
何が捗る?
• テスト
• 環境構築
• ライブラリのバージョンアップへの対
 応

• デプロイ自働化
Composer

• Public な composer repository も完
 備

• 自由に誰でもライブラリを登録できま
 す。
Packagist (これ自体も Open Source)
          Symfony2 利用
Composer


• Public な Compoesr repository もあ
 り、 1,829 package 登録 (PEAR:
 588, PEAR2: 19)
Composer


• はっきり言うと、PHPバージョンの以
 下のようなもの。
Composer
 誕生以前
依存管理は
  どうだったか
(PHP的に考えて)
ライブラリを
自分のプロジェクトに
    コピペ
 なおかつコミット
なにそれこわい
• Dependency Management
 Version Control



• 「Aライブラリ ver2.1.0 は Bライブラ
 リ ver 2.1.0 を必要としている」とい
 う状況を常に創りださなければならな
 い。
svn:externals
git submodule
そうだね
    git から svn の
     プロジェクト
submodule にできないね
       (逆も然り)
しかも


• svn:external って、 svn upするたび
 に、依存引っ張ってきてうぜぇ。
PEAR
PEAR2
package.xml
よむのたるい
package.xml
つくるのたるい
Symfony2.0時代

• ./bin/vendor という php script

• deps に定義された git repository &
 version を取得
Composer
Composer
• PHP 5.3.2 <= 用
Composer
• PHP 5.3.2 <= 用
• json でシンプルパッケージ定義
Composer
• PHP 5.3.2 <= 用
• json でシンプルパッケージ定義
• autoload 機能
Composer
• PHP 5.3.2 <= 用
• json でシンプルパッケージ定義
• autoload 機能
• svn, git, hg, PEAR, PEAR2 のパッケージも
  管理可能
Composer
• PHP 5.3.2 <= 用
• json でシンプルパッケージ定義
• autoload 機能
• svn, git, hg, PEAR, PEAR2 のパッケージも
  管理可能

• gitはインストールほぼ必須
デモ

• インストール
• アプリを作るとき
• 依存パッケージ入手
• PEAR, PEAR2 は?
インストール
 • curl -s http://getcomposer.org/
   installer | php



• or

• php -r "eval('?
  >'.file_get_contents('http://
  getcomposer.org/installer'));"
インストール


• グローバルにインストールするとき
• sudo mv composer.phar /usr/local/
  bin/composer
アプリを作るとき

• composer init

• -> 対話式パッケージ作成コマンド
依存パッケージ入手

• composer install (composer.lock か
  ら or 初回)

• composer update (composer.json
  から or 更新時)
パッケージ追加

• composer require

• package.json を更新して、パッケージ
 を入手 (composer update)
autoload
• Composer   で入手されたライブラリを使うと
  き



• require    'vendor/autoload.php';



• 基本的にこれだけ!
Symfony Standard
           の場合



• 既に、composer の autoload.php が
 ロードされているので、ライブラリを
 落とした時点で使える。
そして Symfony2.1

• php composer.phar create-project
  symfony/framework-standard-edition
  path/ v2.1.0-beta1



• 新しい   Symfony2 Framework’s Project
  を作成
そして Symfony2.1

•composer   require


•で   Bundle 取得できる!!
実用 Composer

• Travis CI with Composer
 • http://travis-ci.org/#!/doctrine/
   DoctrineBundle/jobs/1654133
欠点
• たまに (composer自体が) ぶっ壊れる
 • composer self-update で最新版が手に入
   るが、最新版が動かないことが、、、
   (2012/06現在)

 • Symfony2.1 リリース後は stable なもの
   を配ってくれるといいのだが…。
欠点

• まだまだ激しい変更?
 • autoload directory の変更 (5月)
• packagist ちょっと遅くね?
実際にプロダクトで
つかった思い出 (怪談・失敗例)
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる

•   Packagist 死んだ
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる

•   Packagist 死んだ

    •   Test Fail -> CI Tool に怒られる
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる

•   Packagist 死んだ

    •   Test Fail -> CI Tool に怒られる

•   github.com 死んだ
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる

•   Packagist 死んだ

    •   Test Fail -> CI Tool に怒られる

•   github.com 死んだ

    •   Test Fail -> CI Tool に怒られる
実際にプロダクトで
    つかった思い出 (怪談・失敗例)
•   composer update したいのにできないでござる (composer 自体が
    壊れている)

    •   Test Fail -> CI Tool に怒られる

•   Packagist 死んだ

    •   Test Fail -> CI Tool に怒られる

•   github.com 死んだ

    •   Test Fail -> CI Tool に怒られる

•   autoload の場所変わった
お役立ち資料

•   Documents

•   http://getcomposer.org/




•   Easy Package Management with Composer

•   http://net.tutsplus.com/tutorials/php/easy-package-
    management-with-composer/
推薦書籍




最近日本語が出た!
私の演奏はまだまだこれからだ




          ご清聴
     ありがとうございました。

More Related Content

What's hot

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
 

What's hot (20)

Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
Rbenv
RbenvRbenv
Rbenv
 
meguro.rb LT
meguro.rb LTmeguro.rb LT
meguro.rb LT
 
Laravel5.1 Release
Laravel5.1 ReleaseLaravel5.1 Release
Laravel5.1 Release
 
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudycomposerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
 
Real world rails
Real world railsReal world rails
Real world rails
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
 
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
 
Symfony Dump Server のご紹介
Symfony Dump Server のご紹介Symfony Dump Server のご紹介
Symfony Dump Server のご紹介
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
 
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
 
Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)Robot Framework (のSelenium2Libraryのお話)
Robot Framework (のSelenium2Libraryのお話)
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 

Similar to Composer

Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
 
野良ビルドから見たGentoo
野良ビルドから見たGentoo野良ビルドから見たGentoo
野良ビルドから見たGentoo
Naohiro Aota
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 

Similar to Composer (20)

はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
野良ビルドから見たGentoo
野良ビルドから見たGentoo野良ビルドから見たGentoo
野良ビルドから見たGentoo
 
Composer 再入門
Composer 再入門Composer 再入門
Composer 再入門
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
バージョン管理勉強会
バージョン管理勉強会バージョン管理勉強会
バージョン管理勉強会
 
LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
 
エンジニアという職業について
エンジニアという職業についてエンジニアという職業について
エンジニアという職業について
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
Word bench7月号
Word bench7月号Word bench7月号
Word bench7月号
 
Fab
FabFab
Fab
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 

More from Shogo Kawahara (7)

東京から仙台まで歩く方法
東京から仙台まで歩く方法東京から仙台まで歩く方法
東京から仙台まで歩く方法
 
Php非同期の技法
Php非同期の技法Php非同期の技法
Php非同期の技法
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
Phpmatsuri2013
Phpmatsuri2013Phpmatsuri2013
Phpmatsuri2013
 
Sismoをいじくる
SismoをいじくるSismoをいじくる
Sismoをいじくる
 
PHPの普段使わない関数を使う
PHPの普段使わない関数を使うPHPの普段使わない関数を使う
PHPの普段使わない関数を使う
 
OAuth with OpenPNE3
OAuth with OpenPNE3OAuth with OpenPNE3
OAuth with OpenPNE3
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Composer

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n