Successfully reported this slideshow.

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

23

Share

Loading in …3
×
1 of 33
1 of 33

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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. 良い依存管理ライフを

Editor's Notes

  • \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
  • ×