パッケージバージョン形式変換
バージョン文字列を1行ずつ貼り付け、SemVer、PEP 440、両方、いずれでも有効か確認します。一方のエコシステムでは正しく見えても、他方で拒否または異なる意味になる理由を示します。
ブラウザー内でローカルに処理します。ファイルがアップロードされることはありません。
使い方 ツール
- バージョン文字列を1つまたは複数行で貼り付けます。内容はブラウザー外へ送信されません。
- 「バージョンを確認」を選びます。
- 各値について、文法違反または意味上の差を確認します。
- 近似変換は自動適用せず説明します。安全な書き換えが提案された場合に利用してください。
前提条件
- 一般的な2つの形式を認識します:SemVer 2.0.0(MAJOR.MINOR.PATCH[-prerelease][+build])とPEP 440([N!]N(.N)*[{a|b|rc}N][.postN][.devN][+local])。Debianのepoch/revision、Maven qualifierなど特殊・ベンダー固有形式は対象外です。
- バージョン間の比較・並べ替え意味論は実装しません。正しい解析、有効性検証、安全に往復できる変換のみです。
- 曖昧さがなく情報を失わない場合(gitタグの`v`接頭辞を除去、2要素版に第3要素を補完)のみ書き換えます。PEP 440のdev/post接尾辞に厳密なSemVer相当はなく、自動変換しません。
出典と参考データ
方法論
各行を仕様から作成した正規表現で両文法に対して解析します(SemVer 2.0.0公式文法正規表現と、epoch/release/pre/post/dev/localを含むPEP 440パターン)。その後、SemVerがpre-release前に要求するがPEP 440は要求しないハイフン、SemVerにないPEP 440 dev/post、異なるbuild metadata意味論(SemVerでは優先順位に影響せず、PEP 440 local版では影響)、どちらも期待しないgitタグ`v`接頭辞、厳密なSemVerで無効な先頭ゼロ、PEP 440では有効だがSemVerでは無効な2要素版を検査します。
計算例
SemVer必須のハイフンがないPython式pre-release
入力項目: 1.0.0a1
結果: PEP 440では有効(alpha 1)ですが、厳密なSemVerではpre-release識別子の前にハイフンが必要なので拒否されます。エラーとして指摘しSemVer形式`1.0.0-a1`を提案します。
build metadataとPEP 440 local版
入力項目: 1.2.3+build1
結果: 両形式の文字列として有効ですが、SemVerでは+build1は優先順位に影響せず`1.2.3+build1`と`1.2.3+build2`が同順位です。一方PEP 440のlocal版相当部分は並び順に影響します。仕様上の意味差として警告し、文字列自体は曖昧でないため変換しません。
PEP 440開発版接尾辞
入力項目: 1.0.0.dev0
結果: PEP 440では1.0.0より前の開発版として有効ですが、SemVerに直接相当する概念はありません。`1.0.0-dev.0`は使われる近似形ですが、優先順位規則が異なるため自動変換せず説明します。
実用的なアドバイス
- npm系(SemVer)とPyPI系(PEP 440)の両方で公開する場合は、より厳しい文法を満たす形式を選びます。`1.2.3-rc1`のようなハイフン付きpre-releaseは両方で有効で、同じ意味です。
- 重要な判断にbuild metadataやPEP 440 local版の順序を使わないでください。優先順位への影響について両エコシステムの合意がありません。
- gitタグの`v`接頭辞はどちらの文法も想定しないため、パーサーや比較ライブラリへ渡す前に除去してください。
よくある間違い
- `1.0.0a1`と`1.0.0-a1`がどのツールでも同じ意味と思うこと。前者はPEP 440のみ、後者は両形式で有効です。厳密なSemVerパーサーは前者を拒否します。
- PEP 440のdev/post接尾辞に厳密なSemVer変換があると思うこと。相当形式はなく、近似には異なる比較動作があります。
よくある質問
なぜ`1.0.0a1`は警告でなくエラーですか?
単なる非推奨形式でなく、厳密なSemVerパーサーが解析に失敗します。JSONパーサーが末尾カンマを拒否するのと同じく、書式の好みでなく非互換です。
なぜ`1.0.0.dev0`を自動的にSemVerへ書き換えないのですか?
保証された同等形式がないためです。PEP 440のdev/post版が示す前後関係はSemVerのpre-release/build欄では完全に再現できず、どのSemVer表記も異なる並べ替え動作の近似になります。情報を失わない場合のみ自動書き換えます。
`1.2.3+build1`は本当に壊れていますか?
文字列としては壊れておらず、両方の文法で有効です。リスクはbuild/local接尾辞がバージョン比較に与える影響で、エコシステム間で異なります。
PEP 440の`.dev`版をSemVerへ厳密変換できますか?
保証された厳密変換はありません。PEP 440開発版の順序意味論はSemVer pre-release識別子ですべて再現できません。`1.0.0-dev.0`は近似で、同等版ではない場合があります。このツールは形式と移植性注記を検査し、パッケージマネージャーの解決処理やバージョン比較を実行しません。
最終確認日: 2026-09-25
パッケージマネージャーの完全なバージョン解決器ではなく、SemVer 2.0.0とPEP 440の一般形式を認識する文法チェッカーです。Debian revisionやMaven qualifierなどは対象外で、どちらの形式も比較・並べ替えません。
テーマとツールの設定、保存済みリストと最近使用したリストは、このブラウザー内にのみ保存されます。