メインコンテンツへスキップ

Capgo Semver テスター

version_build として送信された Native Baseline とチャンネルポリシーの互換性を確認します

config またはネイティブアプリのメタデータから、version_build として Capgo に送信されるネイティブバージョンです。

解決されたチャンネルに割り当てられた bundle バージョン。

2つのセマンティックバージョンを入力して比較を表示

「Native Baseline Version」の意味

Native Baseline Versionは、Capgoに送信されるネイティブアプリのバージョンで、具体的には version_build デバイスがアップデートサーバーにbundleを要求するときの値です。Capacitorアプリでは、この値は次から取得できます CapacitorUpdater.version における capacitor.config.*。その設定が存在しない場合、プラグインはiOSまたはAndroidのネイティブアプリのバージョンにフォールバックします。それが自分の package.json バージョンだとは想定しないでください。ビルドでその値をconfigやネイティブのメタデータにコピーしている場合を除きます。

Capgoは引き続き version_name 現在インストールされているダウンロード済みbundleを確認するために使用します。次のようなChannelのsemverポリシーは、 major, minorや patch リモートのbundleを以下と比較します version_build.

Capacitor の設定

設定 CapacitorUpdater.version アプリから特定のバージョンを明示的に送信したい場合。

メリット: iOSとAndroidのビルド間でバージョンを統一しやすい。

デメリット: ネイティブリリース前に更新を忘れると、古い設定のまま誤ったバージョンが報告される可能性がある。

ネイティブアプリのバージョン

iOSなどのプラットフォームのバージョンを使用 CFBundleShortVersionString またはAndroid versionName.

メリット: TestFlight、App Store、Play Store、または内部テストからユーザーがインストールしたバイナリと一致します。

デメリット: 変更にはネイティブビルドが必要で、リリース設定がずれるとプラットフォームによって異なる場合があります。

Bundle のターゲット指定

リモート bundle バージョン、チャネルの semver ルール、メタデータアップロードの制約(例: --min-update-version)と比較してください。チャネルでは --disable-auto-update metadata.

メリット: 新しいネイティブ code が必要な JavaScript を古いアプリバイナリに送信することを防ぎます。

デメリット: 厳しすぎるルールは、チャネルや bundle メタデータが調整されるまで有効な更新をブロックする可能性があります。

このテスターでは、デバイスが送信するネイティブベースラインを version_buildとして入力し、Capgo が配信するリモート bundle バージョンと比較してください。

Capgo がセマンティックバージョニングを使う理由

セマンティックバージョニング は、ソフトウェア開発で最も広く採用されているバージョニング標準です。 semver を利用することで、Capgo は Capacitor アプリにライブアップデートを配信する際の互換性と安全性を確保します。

semver 標準により、Capgo は各アップデートに含まれる変更内容を正確に把握できます:

  • パッチアップデート (1.0.0 → 1.0.1): バグ修正。自動適用しても安全です
  • マイナーアップデート (1.0.0 → 1.1.0): 新機能の追加。後方互換性があります
  • メジャーアップデート (1.0.0 → 2.0.0): 破壊的変更。ネイティブアプリのストアリリースが必要です

これにより、Capgo がネイティブの code に互換性のないアップデートを配信することを防ぎ、ユーザーをクラッシュから守り、アプリの安定性を維持します。

柔軟な Semver 戦略:基本的なバージョニングを超えて

semver はコアフォーマットについては厳格ですが、チームのニーズに合わせて次の要素を使って拡張できます: プレリリース識別子 と ビルドメタデータ:

🏷️ ビルドメタデータ (+) - 「見た目だけ」のレイヤー

1.2.0+20240315.142530
デプロイ追跡用のタイムスタンプ
1.2.0+ui.refresh.dark-mode
デザインチーム向けのUI更新説明
1.2.0+build.4729.commit.a1b2c3d
CI/CDビルド番号とgitコミット

重要: ビルドメタデータはバージョンの優先順位では無視されます - 1.2.0+anything 等しい 1.2.0 Capgo の更新ロジックでは。

🔧 プレリリース識別子 (-) - 開発チャンネル

1.3.0-beta.1
ベータテスト用チャンネル
1.3.0-hotfix.payment
緊急修正用ブランチ
1.3.0-feature.newapi
featureブランチのテスト

注意: プレリリース版は優先順位が低くなります - 1.3.0-beta.1 < 1.3.0

🎯 ハイブリッドアプローチ - 両方のいいとこ取り

1.3.0-rc.1+ui.redesign.20240315
UIメタデータとタイムスタンプ付きのRC版

Semverの実践的なユースケースとチーム戦略

🚀 スタートアップ / 高速開発

0.1.0 - 最初のMVPリリース
0.2.0-beta.1 - 新機能のテスト
0.2.0+ui.v2 - UIリデザインメタデータ
1.0.0 - 本番環境対応

1.0未満の開発には0.x.x、デザイン追跡にはメタデータを使用

🏢 エンタープライズ / 規制対象

2.1.0 → 四半期リリース
2.1.1+sec.patch.cve2024 → 追跡付きセキュリティパッチ
2.2.0-rc.1+audit.ready → 監査前リリース候補

コンプライアンスメタデータ付きの厳格なSemver

🎮 ゲーム / クリエイティブアプリ

1.0.0+season.winter.2024 → シーズンコンテンツ
1.1.0+event.halloween → イベント駆動型機能
1.2.0+assets.hd.remaster → アセット更新

コンテンツトラッキング用のクリエイティブメタデータ

⚡ ホットフィックス戦略

1.2.0 → 現在の本番環境
1.2.1-hotfix.payment → 重大なバグ修正
1.2.1+urgent.20240315.1430 → タイムスタンプ付きでリリース

テスト用のプレリリース、デプロイトラッキング用のメタデータ

🌍 マルチプラットフォーム戦略

1.3.0+ios.optimized → iOS 固有の最適化
1.3.0+android.material3 → Androidのデザイン更新
1.3.0+web.pwa.ready → PWA機能

同一バージョン、プラットフォーム固有のメタデータ

🔄 CI/CD連携

1.4.0-alpha.1+build.123 → プレリリースの自動化
1.4.0+deploy.staging.456 → Staging デプロイ
1.4.0+prod.final.789 → 本番環境へのデプロイ

デプロイメタデータを用いたバージョニングの自動化

💡 プロのヒント:
  • 互換性に影響しないトラッキングやタイムスタンプ、見た目だけの情報にはビルドメタデータ (+) を使用してください
  • 更新の優先順位を変えたい開発チャネルには、プレリリース識別子 (-) を使用してください
  • 両方を組み合わせて柔軟性を最大限に高めましょう: 1.2.0-beta.1+ui.dark.theme.20240315
  • 注意: Capgo は semver の優先順位ルールに従います。チャネル戦略はそれに合わせて計画してください。

重要: Capgo は厳密なセマンティックバージョニングを使用します。

npm の semver 実装とは異なり、Capgo は公式の SemVer 仕様に厳密に従います。npm の node-semver には仕様からの既知の逸脱があり、予期しない動作を引き起こす可能性があります。

例えば、npm は以下のようなバージョンを 1.0.0-alpha.1 仕様とは異なる方法で扱います。詳細は以下の 報告された Issue と 修正の試み がマージされなかった件を参照してください。

有効な Semantic Version

1.0.0 ✓ 標準リリース
2.1.3-alpha ✓ プレリリース
1.0.0-beta.1 ✓ 数値付きプレリリース
1.0.0+build.1 ✓ ビルドメタデータ
1.0.0-rc.1+build.1 ✓ 完全なバージョン

無効なセマンティックバージョン

v1.0.0 ✗ 先頭の 'v' は使用不可
1.0 ✗ パッチバージョンがありません
1.0.0.0 ✗ バージョン構成要素が多すぎます
1.0.0- ✗ プレリリースが空です
1.0.0+ ✗ ビルドメタデータが空です

Capgo のアップデート挙動

✓ Minor 戦略では、同じ major.minor ライン内のパッチ変更(例: 1.0.0 -> 1.0.1)を許可します。
✓ Patch 戦略では 1.0.0 -> 1.0.1 をブロックし、1.0.0-beta.1 -> 1.0.0-beta.2 のようなサフィックス変更のみを許可します。
✗ Major戦略は、ネイティブベースラインよりMajorバージョンが高いターゲットバンドルをブロックします。例: 1.0.0 -> 2.0.0
⚠ ダウングレード保護は完全なsemver優先順位を使用するため、stable 1.0.0は1.0.0-beta.2より新しいと判定されます

このツールは公式の セマンティックバージョニング仕様 を準拠しています。npmの実装とは異なります。