Page 1
仕事で使えるComposer
無修正版
ピクシブ株式会社うさみけんた @tadsan
PHPカンファレンス北海道2016
公開日:
by USAMI Kenta@tadsan
に札幌市白石区の札幌市産業振興センターで開催された『PHPカンファレンス北海道2016』でレギュラーセッション(20分)として発表しました。
ピクシブ株式会社うさみけんた @tadsan
PHPカンファレンス北海道2016
Version 1.0.0 was released on April 5, 2016
Composer #とは
閉じて依存性を管理する
インストールも可能ではある
PHP(5.3.2+)がある環境ならどこでも動作する
新鮮さのような違いはもちろんある。
能になったことが非常に重要
理者からアプリエンジニアの手に落ちてきた(身分制度の変革)
Composerの基礎
{"require": {"filp/whoops": "~2.1.0"},"require-dev": {"phpunit/phpunit": "^4.8"}}
ンチとコミットIDを指定できる(しないと危険)
勝手にインストールされることを防ぐ
バージョン管理の対象にするべきかは場合による
require __DIR__ . '/vendor/autoload.php';
include_onceする必要がない
{"autoload": {"classmap": ["./src"]},"autoload-dev": {"classmap": ["./tests"]}}
フレームワークの雛形からプロジェクトを新規作成
Composerを導入する
しかしてくれない (Windowsにはしてくれる)
ログインして作業する場合にとれる方法
サーバー多いとめんどくさい
場合とか、ライブラリをいろいろ作る場合とか
多い場合は管理が楽
PATH通したりsudoさせたり説明めんどう
継続的に開発していく場合とか
ディスクスペースの浪費 (1.6MB程度)
プロジェクトごとにcomposer.pharを置くのが一番楽じゃないかと思う
いいけど、pixivでは git commit しちゃってる
浪費は、運用の手間を考えれば甘受できるレベル
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
#!/bin/sh php -n $(dirname $0)/.composer.phar "$@"
環境変数のディレクトリにインストール
(Linux/OS X) $HOME/.composer(Windows)%APPDATA%¥Composer
インストールすることも可能ではある(やったことないけど)
# .bash_profile/.bashrc PATH=$HOME/.composer/vendor/bin:$HOME/local/bin:$PATH# .zshenv/.zshrc path=(~/.composer/vendor/bin(N-/)~/local/bin(N-/)$path)
PHPのライブラリを探す
The PHP Package Repository
http://www.modulecounts.com/
かんたんに新しいバージョンをリリースできる
されてきたが、現在はComposerでもインストールできる
触ってみる
新着のライブラリがいっぱい流れてくる
Composerとデプロイ
最中のPHPファイルが書き変わっちゃって処理途中のユーザーリクエストがエラーで落ちる
デプロイを工夫しないと、やはり落ちることが
状態がユーザーの目に触れないよう工夫する
WEB+DB PRESS vol. 84に載ってる
いい感じにアトミックデプロイしてくれるらしい(環境に合せて検証の必要あり)
Satis - Package Repository Generator
もしGitHubが不通になってしまってもデプロイできない事態を避けることができる
近いところにあればデプロイ時間の短縮になる
リポジトリを用意して、毎日定時とsatis.jsonが更新されたときに新鮮なパッケージを取得
{"repositories": [{"packagist": false},{"type": "composer","url": "http://satis.pixiv.private/"}]}
パッケージ作りたい
GitHubに上げると非常に楽
説明通りに入力していくだけ
git tag 1.4.5 && git push --tags で完了
不必要なinclude_onceは書かない
だいたい綺麗なコードが書ける気がする
よる日本語訳がWebにあります
Composerが遅い
あるので、ネットワークコストが非常に高い
ときは、Hirakuさんという方がミラーサイトhttps://packagist.jp/を用意してくれてるので、これを使える
最適な実装ではない
http://blog.tojiru.net/article/432944706.html
グローバルにライブラリをインストール
使い捨てコードから利用したいライブラリ
勝手に読み込まれるようなことはない
できないので注意すること
