Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
what-is-composer-bin-plugin
Search
hideki kinjyo
PRO
April 24, 2019
Programming
1.7k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
what-is-composer-bin-plugin
composer-bin-pluginが便利だったので触ってみました
hideki kinjyo
PRO
April 24, 2019
More Decks by hideki kinjyo
See All by hideki kinjyo
Symfonyが 簡単にAI agentになる
o0h
PRO
0
110
yield再入門 #phpcon
o0h
PRO
0
1.6k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
370
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
3
400
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
240
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
590
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
290
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
990
PHPer Book Revue 「雑に作る」 #phperkaigi
o0h
PRO
0
450
Other Decks in Programming
See All in Programming
新卒PdEのリアル
ryu1013
1
510
SREの越境 / SRE Collaboration
y0hgi
2
280
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.2k
JRuby: Past, Present, and Future
headius
0
190
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
350
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
300
Family mrubyの進捗
kishima
1
130
iOSDC2026登壇資料.pdf
riofujimon
0
180
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
210
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
190
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
120
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Ethics towards AI in product and experience design
skipperchong
2
380
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
480
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
710
Transcript
composer-bin-plugin を触ってみた話 ୈ137ճ PHPษڧձˏ౦ژ Hideki Kinjyo twitter: @o0h_ / github:
o0h
ࣗݾհ • ίωώτגࣜձࣾ • αʔόʔαΠυΤϯδχΞ • ओʹCakePHPͳͲ
(本題に⼊る前に)お約束
Oyakusoku phperkaigiのLTでは ドラを鳴らしてしまったので、 今⽇は時間を守るぞ!! (ご迷惑をおかけしました)
今⽇のお話
composer-bin-plugin
おしながき - [ ] みなさんComposer使っていますか - [ ] Composerを使っていて、 こんな「困った!」ありませんか
- [ ] composer-bin-pluginが そんな悩みを解決してくれるかもしれません
§1 みなさんComposer使っていま すか
この中で、 Composer使っているよ〜 という⽅は どのくらいいますか?
\は〜い/
たくさん いらっしゃいますね〜
- [x]みなさんComposer使っていますか 〜FIN〜
§2 Composerを使っていて、 こんな「困った!」ありませ んか
⾒覚えありませんか
依存パッケージの ver.のコンフリクト⾟い
composer利⽤時に (稀に)困るやつ • (⼤体において) semantic versioningに則り “緩め”に指定されているので、 利⽤可能なバージョンが決定できるのだけど • たま〜にぶつかったりしますよね
vendor BBBYZ[dͩ͘ ͍͞ BBBYZ[?͍ͩ͘͞ つまり・・? package-a ͑ʔɺࠔΔʙკ package-b
vendor BBBYZ[dͩ͘ ͍͞ BBBYZ[?͍ͩ͘͞ つまり・・? package-a ͑ʔɺࠔΔʙკ package-b 名前解決可能な形に ファイルを配置・共存できない
vendor BBBYZ[dͩ͘ ͍͞ BBBYZ[?͍ͩ͘͞ つまり・・? package-a ͑ʔɺࠔΔʙკ package-b composerがタジタジしちゃう!
せめて・・・ • (アプリケーション本体から利⽤されない) CLI利⽤想定のツールについては • php-cs-fixerとか rectorとか • もっとストレスフリーに利⽤したい・・!
という時に、 composer-bin-plugin
- [x]Composerを使っていて、 こんな「困った!」ありませんか 〜FIN〜
§3 composer-bin-pluginが そんな悩みを解決してくれる かもしれません
composer-bin-plugin • • `vendor`ディレクトリを 複数扱えるようにしてくれるユーティリティ • virtualenv的な • 例えば「phpcs⽤のvendor」「phpmd⽤の vendor」などが組める
vendor 0,ʂ vendor BBBYZ[dͩ͘ ͍͞ つまり・・? BBBYZ[?͍ͩ͘͞ package-b package-a vendor
0, BBBYZ[͍ͩ͘͞ package-c 0,ʂ
vendor 0,ʂ vendor BBBYZ[dͩ͘ ͍͞ つまり・・? 0,ʂ BBBYZ[?͍ͩ͘͞ package-b package-a
vendor 0, BBBYZ[͍ͩ͘͞ package-c ⽤途ごとに 「vendor dir」「composer.lock」を 掘ってしまえ、という発想
使い⽅ • Install (global) • composer global require bamarni/composer-bin-plugin •
Install (in-project) • composer require --dev bamarni/composer-bin-plugin
使い⽅ • Usage • `Composer [global] bin $任意の名前空間名 command `
• composer global bin cs require friendsofphp/php- cs-fixer rector/rector
使い⽅ • Usage • `Composer [global] bin $任意の名前空間名 command `
• composer global bin cs require friendsofphp/php- cs-fixer rector/rector • これで「cs」という隔離された名前空間に php-cs-fixerとrectorが設置される
実際の様⼦ ~/.composer $ tree -L 2 vendor-bin vendor-bin └── cs
├── composer.json ├── composer.lock └── vendor • `vendor-bin` の下に `cs` ディレクトリが掘られている
実際の様⼦ $ tree -L 2 vendor-bin vendor-bin ├── cs │
├── composer.json │ ├── composer.lock │ └── vendor └── metrics ├── composer.json ├── composer.lock └── vendor • 別に`metrics` 空間を掘ってみると・・? • composer global bin metrics require phpmetrics/phpmetrics
実際の様⼦ • 実⾏ファイルは(defaultだと) vendorディレクトリ下にsymlinkが貼られる =「いつもみたいな感じ☆」で使える!! $ ls vendor/bin pdepend php-parse
phpcs phpmetrics psysh php-cs-fixer phpcbf phpmd phpstan rector
こんなとこも 気が利いていました • 特殊な名前 `all` => vendor-binに⼊っているものを⼀括操作 • composer bin
all install • composer bin all update • `bin/` 下のsymlinkが衝突したら ⾃動で作成を省略してくれるみたい
どうやって動いているの? • https://github.com/bamarni/composer-bin- plugin/blob/v1.3.0/src/BinCommand.php#L104 をざっくり⾒た感じだと • 名前空間に対応したディレクトリに移動して • 「普通にComposer.json(lock)を読みとる (`Factory
::getComposerFile()`)」ように振る舞う
- [x]composer-bin-pluginが そんな悩みを解決してくれるかもしれません 〜FIN〜
まとめ! • あくまで`bin-plugin`なので、 局所的な⽤途想定になるかなーという所感 (vendorにおくもの、vendor-binに置くものを分ける) • 逆に⾔うと 「アプリケーションコード」が「CLI⽤のコマンド」の依存に 煩わされなくなる・・! •
初めて知った時の「便利そう!!」と 中⾝を⾒た時の「単純!!!」というギャップが⾯⽩かった
͓͖߹͍͍͖ͨͩ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
参考リンク • Packagist https://packagist.org/packages/bamarni/ composer-bin-plugin • 私が知ったキッカケの記事 https://www.dereuromark.de/2018/03/14/ cakephp-3-6-is-coming/