SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
composer-scriptsに
ついて
@Hiraku
自己紹介
• 中野 拓 (@Hiraku)
• 口癖「composerが遅い」
• http://packagist.jp
• https://github.com/hirak/prestissimo
hirak/prestissimo
• composerが速くなるプラグイン
• おかげさまで大分バグが潰せた
prestissimoで色々

試してみたので

その共有です
開発で使うphpxxx
• phpunit, php_codesniffer, phpmd, ...
• どうやってインストールする?
• どうやって実行する?
globalインストールはよくない
• 「phpunit」「phpcs」というコマンドが
globalにある前提で開発すると…
• 場合によっては特定のphpunitバージョンを要
求したりややこしい
• 純粋に開発環境セットアップが面倒
npmの場合
• localインストールする文化がある
• npm install --save-dev xxxxxxx
• 実行するときはnpm test, npm run xxxxx
• http://qiita.com/Jxck_/items/efaff21b977ddc782971
composerでnpmを真似る
• composer require --dev phpunit/phpunit
• composer.jsonのscriptsにコマンドを生やす
scripts: {
test: phpunit --colors=always,
lint: phpcs,
fmt: phpcbf,
doc: php bin/apigen.phar generate,
metrics: php bin/phpmetrics.phar --report-html=artifacts/
metrics.html src/
},
某言語のサブコマンドを真似る
$ composer test #phpunit
$ composer lint #phpcs
$ composer fmt #phpcbf
$ composer doc #apigen
$ composer metrics #phpmetrics
サブコマンドのよさ
• composer listに出てくる
• vendor/bin/... って打つより綺麗
• vendor/bin/は設定で変更できるので、ベタ書きすべ
きでない
• 開発者はcomposer installするだけで

全てのツールが使える
コマンド別の設定
• phpunit.xml.dist を作成
• .gitignoreでphpunit.xmlを無視
• 開発者がphpunit.xmlを作って好きな設定で
phpunitを実行できる余地を残す
使ってるツール紹介
phpunit/phpunit (test)
squizlabs/php_codesniffer
• phpcs (lint) とphpcbf (fmt) がある

両方phpcs.xml.distで設定できる
apigen/apigen
• 生成されたレポートが読みにくかったら

名前空間の切り方が汚い
phpmetrics/phpmetrics
pharの悩み
pharとrequire-dev
• phar版を配布しているツールは多い
• phpunit.phar, phpcs.phar, ...
• ダウンロードしてphp phpunit.pharすれば使
えて便利
• どっちを使うべき?
比較
composer phar
• リポジトリが汚れない
• composer.jsonだけでリポジト
リが完結する美しさ
• 依存が汚れない
• インストールが楽
• インストールできない可能性が
ある
• 依存が汚れる
• ライセンス違反のおそれ
require-devの悩み
• ツールのrequireしているライブラリが被る

symfony/console使いすぎ
• apigenとphpmetricsを同時にインストール出来な
い、とかPHPバージョンによっては起こりえる
• composer install --no-dev した時に消える

問題
pharはOSSライセンス違反の

おそれがある
• 依存ライブラリもまとめてpharに固めてある
• 依存ライブラリのLICENSE.txtはどこに?
特に結論はないです

Contenu connexe

Tendances

今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
 
TravisCI Nightに行ってきたので情報展開
TravisCI Nightに行ってきたので情報展開TravisCI Nightに行ってきたので情報展開
TravisCI Nightに行ってきたので情報展開
Makoto Abe
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
shoma h
 
Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由
Tao Sasaki
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
Shogo Kawahara
 

Tendances (20)

Itamae provisioning for FreeBSD
Itamae provisioning for FreeBSDItamae provisioning for FreeBSD
Itamae provisioning for FreeBSD
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
 
Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04
 
Laravel5.1 Release
Laravel5.1 ReleaseLaravel5.1 Release
Laravel5.1 Release
 
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hackPerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
 
TravisCI Nightに行ってきたので情報展開
TravisCI Nightに行ってきたので情報展開TravisCI Nightに行ってきたので情報展開
TravisCI Nightに行ってきたので情報展開
 
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
 
H2O and php
H2O and phpH2O and php
H2O and php
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
LaravelとMVCの先へ
LaravelとMVCの先へLaravelとMVCの先へ
LaravelとMVCの先へ
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
 

En vedette

Transformation or Transition
Transformation or TransitionTransformation or Transition
Transformation or Transition
Mike Pounsford
 
Presentation_Netinfo_6.2015
Presentation_Netinfo_6.2015Presentation_Netinfo_6.2015
Presentation_Netinfo_6.2015
Hristo Hristov
 
Madagascar analysis
Madagascar analysisMadagascar analysis
Madagascar analysis
croberts100
 
Aula 2 Concordância
Aula 2 ConcordânciaAula 2 Concordância
Aula 2 Concordância
2º ano CSR
 
Homoeopathic Home Prescribing Class 18th October 2014
Homoeopathic Home Prescribing Class 18th October 2014Homoeopathic Home Prescribing Class 18th October 2014
Homoeopathic Home Prescribing Class 18th October 2014
Owen Homoeopathics
 

En vedette (20)

JSON SchemaとPHP
JSON SchemaとPHPJSON SchemaとPHP
JSON SchemaとPHP
 
こわくない同時実行制御
こわくない同時実行制御こわくない同時実行制御
こわくない同時実行制御
 
YoonSeo Link
YoonSeo LinkYoonSeo Link
YoonSeo Link
 
Open Educational Resources: Policy Implications
Open Educational Resources: Policy ImplicationsOpen Educational Resources: Policy Implications
Open Educational Resources: Policy Implications
 
小黄鸭和鳄鱼
小黄鸭和鳄鱼小黄鸭和鳄鱼
小黄鸭和鳄鱼
 
Transformation or Transition
Transformation or TransitionTransformation or Transition
Transformation or Transition
 
Presentation_Netinfo_6.2015
Presentation_Netinfo_6.2015Presentation_Netinfo_6.2015
Presentation_Netinfo_6.2015
 
Call me VL-11 28.11.2012 Ole Kassow
Call me VL-11 28.11.2012 Ole KassowCall me VL-11 28.11.2012 Ole Kassow
Call me VL-11 28.11.2012 Ole Kassow
 
AWS Summit Berlin 2013 - doo - A Scalable Sync Framework Infrastructure based...
AWS Summit Berlin 2013 - doo - A Scalable Sync Framework Infrastructure based...AWS Summit Berlin 2013 - doo - A Scalable Sync Framework Infrastructure based...
AWS Summit Berlin 2013 - doo - A Scalable Sync Framework Infrastructure based...
 
جای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانیجای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانی
 
電子書刺激擴大閱讀產業
電子書刺激擴大閱讀產業電子書刺激擴大閱讀產業
電子書刺激擴大閱讀產業
 
Madagascar analysis
Madagascar analysisMadagascar analysis
Madagascar analysis
 
Aula 2 Concordância
Aula 2 ConcordânciaAula 2 Concordância
Aula 2 Concordância
 
Resume
ResumeResume
Resume
 
LWF 101 for Open Hack Day
LWF 101 for Open Hack DayLWF 101 for Open Hack Day
LWF 101 for Open Hack Day
 
Homoeopathic Home Prescribing Class 18th October 2014
Homoeopathic Home Prescribing Class 18th October 2014Homoeopathic Home Prescribing Class 18th October 2014
Homoeopathic Home Prescribing Class 18th October 2014
 
שירותי מוסך רייך
שירותי מוסך רייךשירותי מוסך רייך
שירותי מוסך רייך
 
Set
SetSet
Set
 
Ylen Suomalaiset verkossa 2010 - tutkimuksen esittely
Ylen Suomalaiset verkossa 2010 - tutkimuksen esittelyYlen Suomalaiset verkossa 2010 - tutkimuksen esittely
Ylen Suomalaiset verkossa 2010 - tutkimuksen esittely
 
Group 2 - Pitch
Group 2 - PitchGroup 2 - Pitch
Group 2 - Pitch
 

Similaire à composer-scriptsについて

今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 

Similaire à composer-scriptsについて (20)

密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Xhprof
XhprofXhprof
Xhprof
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇
 
Products.PloneOrg
Products.PloneOrgProducts.PloneOrg
Products.PloneOrg
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
大好きなPecoの話
大好きなPecoの話大好きなPecoの話
大好きなPecoの話
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
簡単便利!Laravel Homestead
簡単便利!Laravel Homestead簡単便利!Laravel Homestead
簡単便利!Laravel Homestead
 
社内Chef勉強会
社内Chef勉強会社内Chef勉強会
社内Chef勉強会
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 

composer-scriptsについて