Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Kentarou Takeda
PPTX, PDF
314 views
Composer bin plugin / ツールの依存管理から解放される
PHPerのための「Composer」を語り合うPHP TechCafe LT資料
Engineering
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 14
2
/ 14
3
/ 14
4
/ 14
5
/ 14
6
/ 14
7
/ 14
8
/ 14
9
/ 14
10
/ 14
11
/ 14
12
/ 14
13
/ 14
14
/ 14
More Related Content
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
PDF
JIT のコードを読んでみた
by
y-uti
PDF
Infrastructure as Code (IaC) 談義 2022
by
Amazon Web Services Japan
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
JIT のコードを読んでみた
by
y-uti
Infrastructure as Code (IaC) 談義 2022
by
Amazon Web Services Japan
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
ドメイン駆動設計 の 実践 Part3 DDD
by
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
What's hot
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PDF
究極のゲーム用通信プロトコルを探せ!
by
Ryosuke Otsuya
PDF
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
PDF
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
PDF
ビジネスルールの複雑さに立ち向かう
by
増田 亨
PDF
ドメイン駆動設計という設計スタイル
by
増田 亨
PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
by
naoki koyama
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
PPTX
脱RESTful API設計の提案
by
樽八 仲川
PDF
ドメイン駆動設計入門
by
増田 亨
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PDF
Redmineとgitの 連携利用事例
by
Tomohisa Kusukawa
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
PPT
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
PDF
ドメイン駆動設計 分析しながら設計する
by
増田 亨
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
究極のゲーム用通信プロトコルを探せ!
by
Ryosuke Otsuya
世界でいちばんわかりやすいドメイン駆動設計
by
増田 亨
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
ビジネスルールの複雑さに立ち向かう
by
増田 亨
ドメイン駆動設計という設計スタイル
by
増田 亨
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
by
A AOKI
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
by
naoki koyama
データベース設計徹底指南
by
Mikiya Okuno
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
脱RESTful API設計の提案
by
樽八 仲川
ドメイン駆動設計入門
by
増田 亨
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
Redmineとgitの 連携利用事例
by
Tomohisa Kusukawa
DockerコンテナでGitを使う
by
Kazuhiro Suga
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
ドメイン駆動設計 分析しながら設計する
by
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
More from Kentarou Takeda
PDF
コード品質を保つために心がけたいこと
by
Kentarou Takeda
PPTX
Docker friendlyPHP / Laravel
by
Kentarou Takeda
PPTX
マスタデータの管理と運用について
by
Kentarou Takeda
PDF
スモールサービスにおけるCloudFrontの真骨頂
by
Kentarou Takeda
PDF
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
by
Kentarou Takeda
PDF
HttpClientModule
by
Kentarou Takeda
コード品質を保つために心がけたいこと
by
Kentarou Takeda
Docker friendlyPHP / Laravel
by
Kentarou Takeda
マスタデータの管理と運用について
by
Kentarou Takeda
スモールサービスにおけるCloudFrontの真骨頂
by
Kentarou Takeda
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
by
Kentarou Takeda
HttpClientModule
by
Kentarou Takeda
Composer bin plugin / ツールの依存管理から解放される
1.
Composer bin plugin ツールの依存管理から解放される
2.
Composer bin pluginとは? •
composerでインストール するツールを独立して管 理するプラグイン • 実行ファイルは引き続き vendor/bin/に設置される • php-5.5.9より利用可能 https://github.com/bamarni/composer-bin-plugin
3.
依存関係競合とは https://github.com/FriendsOfPHP/PHP-CS-Fixer https://github.com/spatie/phpunit-watcher
4.
依存関係競合とは 1. phpunit-watcherをインストール 2. php-cs-fixerをインストール インストール成功 1.
php-cs-fixerをインストール 2. phpunit-watcherをインストール インストール失敗 「spatie/phpunit-watcher version Xはyosymfony/resource-watcher version Yを必要と している。 yosymfony/resource-watcher version Yはsymfony/finder version Zを必要と している。しかしsymfony/finderは既にVersion Aがインストールされているため依存を 解決できずインストール失敗」 …と、全バージョンの組み合わせで書いてある。 解決方法 • エラーメッセージや既存パッケージの依存関係を調べる。 • インストールしようとしているパッケージと競合しない既存パッケージのバージョン を特定する。 • 既存パッケージのバージョンを変更した後、目的のパッケージをインストール ※2022年6月時点の実行結果
5.
依存関係競合とは https://readouble.com/laravel/9.x/ja/upgrade.html#updating-dependencies Laravel以外の箇所も書き換えなければ ならない。 Laravelをアップグレードしたい。 対象はどれ? 具体的にどのバージョン?
6.
依存関係競合とは 対象はどれ? 具体的にどのバージョン? ※あくまでサンプル 2022年6月時点ではこの組み合わせではエラーは発生しない
7.
Vendor binaryとして配布されるツール • 単独で動作するツールとして作られていることが多い。 •
アプリケーション本体と同居させず独立して管理したい。 • 開発環境としてバージョン管理は行いたい。
8.
従来の解決策 • グローバルインストール composer global
require awesome/tool • ✕ バージョン管理不可(メンバー間のバージョン差異) • ✕ Docker環境としての配布が困難 • △ 環境構築がひと手間増える • 専用フォルダにローカルインストール composer --working-dir=path/to/tool awesome/tool ※php-cs-fixerはこの方法を推奨している • ○ バージョン管理可能 • ○ Docker環境としての配布が可能 • △ 環境構築がひと手間増える • △ 標準外フォルダよりツール起動(プロジェクト固有知識)
9.
Composer bin plugin •
○ 本体とツールとを分離して管理 • ○ バージョン管理可能 • ○ Docker環境としての配布が可能 • ○ 環境構築の手間は変わらない • ○ 標準フォルダよりツール起動可能
10.
インストール・使い方 • プラグインをrequire-devとしてインストール • 「名前」を指定してパッケージをインストールできる。 •
「bdd」という名前でphpspecをインストール • 「etsy-phan」という名前でphanをインストール • 「phpmetrics」という名前でphpmetricsをインストール
11.
どのように動作するのか? 独立して管理 独立してインストール ツールの起動は従来のパスより可能 (vendor/binにリンクが配置される) • ○ 本体とツールとを分離して管理 •
○ バージョン管理可能 • ○ Docker環境としての配布が可能 • ○ 環境構築の手間は変わらない • ○ 標準フォルダよりツール起動可能
12.
git管理 配下のvendorは git管理除外 composer.jsonは ツール毎にgit管理 Composer bin plugin管理 ※インストール時に自動設定される .gitignore追記 •
○ 本体とツールとを分離して管理 • ○ バージョン管理可能 • ○ Docker環境としての配布が可能 • ○ 環境構築の手間は変わらない • ○ 標準フォルダよりツール起動可能
13.
管理の自動化 https://getcomposer.org/doc/articles/scripts.md#command-events 参考:Composer Scripts /
Command Events pre-XXX-cmd / post-XXX-cmd • composer XXXが実行された前や後に指定コマンドを実行 • composer.jsonのscriptプロパティで設定 • composer installが実行されたら composer bin all installも自動的に実行 • composer updateが実行されたら composer bin all updateも自動的に実行 • 上の2つの設定のショートハンド • ○ 本体とツールとを分離して管理 • ○ バージョン管理可能 • ○ Docker環境としての配布が可能 • ○ 環境構築の手間は変わらない • ○ 標準フォルダよりツール起動可能
14.
まとめ 課題 1. Composerは依存関係の競合が発生することがある。 2. 単体で動作するツールは独立して管理すべき。 3.
Composer標準の方法にはデメリットある。 解決 • Composer bin pluginの導入 • 依存関係の競合は発生しない • ツールの起動は従来と変わらない • 環境構築は自動化可能 • 利用者はプラグインの存在を意識しなくて良い 参考資料 • このPHPがテンプレートエンジンのくせに慎重すぎる (前篇) / @tadsan • Composer bin plugin — Isolate your bin dependencies • Vendor binaries and the vendor/bin directory - Composer • Scripts - Composer
Download