この記事でわかること
- セマンティックバージョニングとは何かが分かる
- conposerで指定するバージョン番号の意味が分かる
- composerでのバージョン指定は何を指定すれば良いか分かる
対象の読者
- セマンティックバージョニングという言葉を知らない
- 知っているが、よく分かってない
- composerでバージョン指定の記号の意味が分からない
- とりあえず、前の人が使ってたから
v1.0.*
のままにしてる
- とりあえず、前の人が使ってたから
セマンティックバージョニングとは
composerで、ライブラリのインストールをする際にはバージョン番号を指定する必要があり、
その指定方法によって、実際にインストールされるバージョンが異なります。
故に、このバージョン番号の意味を知っておかないと、知らない間にバージョンアップされて動かない。
等のバグの温床を生む可能性があります。
このバージョン番号について理解するために、今バージョニングで一般的であり、packagistで公開されている多くのライブラリが採用しているセマンティックバージョニングについて知る必要があります。
詳しくは、セマンティックバージョニングを参照してください。
セマンティックバージョニングの重要な部分の抜粋
- バージョン番号は、
x.y.x
と記載する- x > メジャー番号
- y > マイナー番号
- z > パッチバージョン
- これらの数値の上げ方にはルールがある
- 番号は整数値で、先頭に0(ゼロ)をつけてはいけない
- 後方互換性のあるバグ修正時には、パッチバージョンを上げる
- 後方互換性のある変更時には、マイナーバージョンを上げる
- 後方互換性のない変更時には、メジャーバージョンを上げる
composerにおけるバージョン番号指定
バージョン番号の指定にはいくつかの方法があります。
指定|対象のバージョン
---|---|---
2.0.5|2.0.5
2.0.|2.0.0以上、2.1.0未満
2.|2.0.0以上、3.0.0未満
^2.0|2.0.0以上、2.1.0未満
^2.0.5|2.0.5以上、2.1.0未満
~2.0|2.0.0以上、3.0.0未満
~2.0.5|2.0.5以上、3.0.0未満
2.*@dev(開発バージョンも対象にする)|2.0.0-dev(例)
dev-master|1.0.0未満(開発中のバージョン)
まとめ
-
^(キャレット)
はパッチバージョンが最新のものだけ入れる -
~(チルダ)
は、マイナーバージョンが最新のものだけ入れる -
*(アスタリスク)
は、指定した箇所で最新のものを入れる-
^2.0
と2.0.*
は同義 -
^2.0
と2.*
は同義
-
-
^
も~
も後方互換性を維持した(セマンティックバージョニングの定義上では)バージョンで最新のものを入れる - 違いは、バグ修正バージョンだけを上げるか、マイナーバージョンまで上げるかの違い
- 複数人で開発する場合には、チームでバージョン指定のルールを決めとくと良いでしょう
大事なのは、あくまでもセマンティックバージョニングが推奨されているだけで、ライブラリ作者によっては定義の捉え方が異なったり、守られてない場合もあるので、臨機応変に対応していく必要はあります。