Version Code: その概要、数値識別子、アップデット

著者: IT Sectr 公開日: 2026-04-17 読了時間: 8 分

Version CodeはAndroid開発における正の整数で、アプリケーションの新しいビルドを一意に識別します。Google PlayとAndroidシステムはVersion Codeを使用してアップデートの必要性を判断します。新しいビルドのコードがインストール済みのバージョンより大きい場合、アップデートプロセスが開始されます。Android Developer Documentationによると、Version Codeはユーザーに表示されず、内部バージョン番号付けのためだけに使用されます。

重要なポイント

  • Version Code — Google Play向けAndroidアプリビルドの数値識別子
  • 増分 — 新しいビルドごとにVersion Codeが前回より大きくなければなりません
  • Version Name — ユーザー向け文字列バージョン、アップデート機構に影響しません
  • 設定はbuild.gradleのversionCodeフィールドで行います
  • 制限 — Version Codeの最大値は2100000000です

AndroidにおけるVersion Codeとは

Version CodeはInteger型の整数で、Androidアプリケーションの各ビルドに割り当てられます。Version Nameとは異なり、Version Codeはユーザーに表示されず、オペレーティングシステムとGoogle Playがアップデートインストール時にバージョンを比較するためにのみ使用されます。

Version Codeの形式

Version Codeは1から2100000000の範囲の正の整数でなければなりません。後続の各ビルドは、前回より厳密に大きいVersion Codeを持つ必要があります。開発者がVersion Code 5のビルドをリリースした場合、次の公開では6、7、または5より大きい任意の数値を使用できますが、4や再び5は使用できません。

起源の歴史

Googleは2007年のAndroid SDKリリースとともにVersion CodeとVersion Nameの分割を導入しました。Version Codeは自動バージョン比較のためのマシン識別子として設計され、Version Nameは人間が読めるラベルとして設計されました。この分割により、開発者はバージョンに任意の名前を付けつつ、数値コードによる厳格なアップデート順序を維持できます。

パラメータVersion CodeVersion Name
データ型IntegerString
ユーザー表示なしあり
バージョン比較数値比較使用されない
形式1, 2, 3, 10, 1001.0.0, 2.3.1-rc
範囲1 — 2100000000制限なし

Version Codeによるバージョニングの仕組み

Version Codeの比較メカニズムはAndroidオペレーティングシステムとGoogle Playストアに組み込まれています。公開のたびに、Google Playは新しいビルドのVersion Codeがインストール済みバージョンのコードより大きいことを確認します。条件が満たされない場合、公開はエラーで拒否されます。

アップデート確認プロセス

デバイスがアップデートを確認するためにGoogle Playに接続すると、サーバーはインストール済みアプリケーションのVersion Codeとストアで利用可能な最大値を比較します。サーバー上のコードが大きい場合、アップデートのダウンロードとインストールが開始されます。ユーザーは開発者が指定したVersion Nameを表示しますが、アップデートの判断はVersion Codeに基づいて行われます。

Version Codeの増分

開発者はVersion Codeを増やすためにさまざまな戦略を適用します。最も簡単なのは、ビルドごとに1ずつ増やすことです。CI/CDパイプラインでは、タイムスタンプやビルド番号がよく使用されます:2026070301(年-月-日-番号)。コードが単調に増加し、異なるビルドやGoogle Playトラック間で重複しないことが重要です。

  • 単調増加 — リリースブランチへのコミットごとに1ずつ増加
  • タイムスタンプ形式 — 日次ビルドの場合は20260703、1日に複数ビルドの場合は2026070301
  • 数値でのSemVer — バージョン1.1.0の場合は100010000(major 1、minor 1、patch 0)
  • ビルド番号 — CIシステム(Jenkins、GitHub Actions)のBUILD_NUMBERを使用

Version CodeとVersion Nameの違い

Version CodeVersion Nameはbuild.gradle内の2つの独立したフィールドで、異なる機能を果たします。Version Codeはシステム用の内部識別子であり、Version Nameはユーザー向けのマーケティングラベルです。これらは互いに独立して変更できます。

ユーザー向けのVersion Name

Version Nameはアプリケーション設定、Google Play、アップデートダイアログに表示される文字列です。開発者は任意の形式(1.0.0、2.3.1-beta、3.0-rc1など)を指定できます。Version Nameは文字列バージョンの比較には使用されません — Google Playは常にVersion Codeに依存します。

乖離のシナリオ

Version Codeが増加してもVersion Nameが同じままである状況が可能です。例えば、開発者が機能を変更せずにホットフィックスビルドで重大なバグを修正する場合です。Version Nameは2.0.0のまま、Version Codeは5から6に変わります。Google Playはこのようなアップデートを正しく処理します。

groovy
// 例: version nameは変更されず、コードが増加する
android {
    defaultConfig {
        versionCode 6  // 以前は5 — 新機能のないホットフィックス
        versionName "2.0.0"  // 変更なし
    }
}

// ランタイムでのバージョン確認
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Code: $code, Name: $name")

build.gradleでのVersion Code設定

Version Codeの設定はアプリケーションモジュールのbuild.gradleファイルで行います。versionCodeフィールドは整数を受け入れ、defaultConfigブロックの一部です。異なるflavorビルドでは、プロダクト設定のversionCodeフィールドを通じてカスタム値を設定できます。

基本設定

kotlin
// build.gradle.kts — Kotlin DSL
android {
    defaultConfig {
        applicationId "com.example.app"
        versionCode 15
        versionName "2.1.0"
    }

    flavorDimensions +"version"
    productFlavors {
        create("demo") {
            versionCode 1015
        }
        create("full") {
            versionCode 2015
        }
    }
}

Product flavorsを使用すると、異なる設定(デモ版、タブレット用の別バージョン)に異なるVersion Codeを使用できます。プロジェクトでflavorが使用されている場合、最終的なVersion Codeは基本数値とflavor固有の増分から構成されます。Google Playは各組み合わせを独立して追跡します。

CIによる増分の自動化

CI/CDパイプライン(GitHub Actions、GitLab CI、Jenkins)では、Version Codeはビルド番号や日付に基づいて自動生成されることがよくあります。これにより、手動アップデート時の人為的エラーが排除されます。スクリプトはbuild.gradleから現在のVersion Codeを読み取り、それを増分し、ビルド開始前に書き戻します。

kotlin
// Version Codeの自動増分
import java.util.Properties
import java.io.FileInputStream

val versionProps = Properties()
versionProps.load(FileInputStream("version.properties"))

val versionCode = versionProps.getProperty("VERSION_CODE").toInt() + 1
versionProps.setProperty("VERSION_CODE", versionCode.toString())

android {
    defaultConfig {
        versionCode = versionCode
    }
}

Google Play公開におけるVersion Codeの特性

Google Playにはアプリの公開と更新に関するVersion Codeの厳格なルールがあります。これらのルールに違反すると、ビルドが拒否されたり、アップデートをリリースできなくなったりします。開発者はライフサイクルのすべての段階における制限とコード管理戦略を理解する必要があります。

単調増加ルール

Google Playは、Version Codeが現在公開されているもの以下であるAPKまたはAABのアップロードを許可しません。このルールは各トラック(production、beta、alpha)に独立して適用されます。productionにVersion Code 10のビルドがアップロードされ、alphaにコード5のビルドがある場合、alphaトラックは6、7、8、9に更新できますが、productionは10のままです。

トラック間の移行

ビルドをalphaからbeta、そしてproductionに昇格させる際、Version Codeは各段階で増加する必要があります。alphaバージョンのコードが10の場合、betaは11、productionは12を使用できます。alphaがすでに10を使用している場合、productionがまだそのコードを見たことがなくても、コード10のビルドをproductionにリリースすることはできません。

  • 単調増加 — トラック内の各ビルドは、同じトラック内の前回より大きいVersion Codeを持つ
  • クロストラック認識 — トラック間の昇格時に、Version Codeは順次増加する
  • 内部テスト — 内部テストトラックも同じ単調性ルールを使用する
  • 複数APK — 古い公開形式ではAPKごとに一意のVersion Codeが必要だった

Version Code指定時のエラー

最も一般的なエラーは、同じトラックにアップロードされた異なるビルドでのVersion Codeの一致です。Google PlayはAPK_VERSION_CODE_ALREADY_EXISTSエラーを返します。もう一つのエラーは、最大値2100000000を超えることで、コンパイルエラーが発生します。競合を避けるには、CIシステムでビルド番号またはビルド日付に紐づいた自動コード生成を使用してください。

開発者はまた、代替トラック用のホットフィックスリリースをビルドする際にVersion Codeを増やさないという間違いをよく犯します。productionのコードが15でalphaトラックが14のままの場合、alphaをproductionに昇格させると、Google Playはそのコードが現在のproductionコードより小さいためビルドを拒否します。すべてのトラックでコードの単調性を同時に監視してください — これには、すべてのトラックが現在値を読み取る単一のversion.propertiesファイルを使用すると便利です。

よくある質問

現在より小さいVersion Codeでアップデートをリリースできますか?

いいえ、Google Playは同じトラックで現在公開されているVersion Code以下であるビルドのアップロードを許可しません。システムはアップロード時にコードを確認し、単調増加ルールに違反している場合はエラーを返します。アルファトラックとベータトラックにも同じ原則が独立して適用されます。

最初のアプリ公開にはどのVersion Codeを指定すべきですか?

最初の公開では、Version Code 1を指定できます。Google Playは正の整数以外の最小しきい値を設定していません。1から始めて、以降のビルドごとに1ずつ増やすことをお勧めします。タイムスタンプ形式を使用する場合、最初のビルドは20260701になります。

Google PlayでVersion CodeはVersion Nameとどのように関連していますか?

Version Codeはシステムが比較に使用する内部マシン識別子です。Version NameはGoogle Playとデバイスに表示されるユーザー向けラベルです。ユーザーはVersion Name(例:2.0.0)を表示し、Google PlayはVersion Codeを使用してアップデートの必要性を判断します。

Version Codeの最大値を超えるとどうなりますか?

Version Codeの最大値は2100000000(Integer.MAX_VALUE)です。これを超えると、フィールドがint型のためコンパイラがエラーを返します。ビルド数が多いプロジェクト(日次リリースのCI/CD)では、タイムスタンプ形式を使用するか、メジャーバージョンの開始時にカウンターをリセットすることをお勧めします。

Version CodeをA/Bテストに使用できますか?

Version Codeは直接A/Bテストには使用されませんが、間接的に影響します。Google Playでは、特定のビルドに対してユーザー割合による段階的ロールアウト(staged rollout)を設定できます。Version Codeがビルドを識別し、A/BテストはFirebase Remote Configや類似のサービスを通じて設定されます。

まとめ

  • Version Code — Androidアプリケーションの各ビルドを一意に識別する整数
  • Google Playはアプリのアップデート必要性を判断するためにVersion Codeを使用します
  • 増分ルール — 新しいビルドは同じトラック内で前回より厳密に大きいコードを持つ必要があります
  • 値の範囲 — 1から2100000000(Integer.MAX_VALUE)
  • Version Name — ユーザー向け文字列ラベル、アップデート機構に影響しません
  • 自動化 — CI/CDシステムはビルド番号やタイムスタンプからVersion Codeを生成できます
  • 推奨 — 公開前に増分戦略を選択し、ライフサイクル全体を通じてそれを守ってください

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください