Version Nameは、ユーザーがストアやデバイスで目にするアプリケーションのバージョン文字列です。Build Numberとは異なり、このパラメータは意味を持ち、変更の重要性を反映します。Android Developers, 2025によると、Version Nameを正しく使用することで、ユーザーはアップデートの重要性を理解し、開発プロセスを信頼できるようになります。
重要ポイント
Version Nameは、ユーザー向けにアプリケーションのリリースを識別するセマンティック文字列です。技術的なビルド識別子とは異なり、このパラメータは意味を持つ情報を伝えます。ユーザーは新しいアップデートが以前のものとどの程度異なるかを評価できます。
Version NameはGoogle PlayやApp Storeのアプリケーションカード、デバイスの「アプリ情報」セクション、システムアップデートダイアログに表示されます。開発者はリリース版をビルドする前に、プロジェクトの設定ファイルでこれを指定します。
Semantic Versioning 2.0(2023年)によると、Major.Minor.Patch形式はモバイルアプリケーションの78%で使用されています。メジャーバージョンは互換性のないAPI変更時に変更され、マイナーバージョンは機能追加時に、パッチはバグ修正時に変更されます。
Version Nameを使用してユーザーとコミュニケーションを取りましょう。ユーザーは提供されたアップデートがメジャー、マイナー、修正のいずれであるかを即座に理解できる必要があります。
セマンティックバージョンは、 Major.Minor.Patchの3つの数値をドットで区切ったものです。各コンポーネントはアプリケーションの特定のレベルの変更を担当します。
メジャーバージョン(Major)は、後方互換性を壊す抜本的な変更が導入された場合に増加します。マイナーバージョン(Minor)は既存の機能を壊さずに新機能を追加します。パッチ(Patch)はバグ修正のみを含みます。
たとえば、バージョン3.2.1は、3番目のメジャーバージョン、2番目のマイナーアップデート、最初のパッチを意味します。このシステムは開発者とユーザーの両方にとって理解しやすいものです。
Version Nameは、ユーザーにいくつかの主要な場所で表示されます。アプリストアでは、アプリケーションカードのヘッダーとアップデートリストに表示されます。デバイス上では、「アプリ情報」セクションのシステム設定に表示されます。
Google Playでは、Version Nameはアプリケーション名の下に表示され、ユーザーのアップデート判断に影響を与えます。App Storeでも、アプリケーションページを表示する際に同じ場所にバージョン文字列が表示されます。
Apptentive(2024年)の調査によると、67%のユーザーがアップデート前にアプリのバージョンを確認し、明確なセマンティクスによってインストール率が23%向上します。
Androidでは、Version Nameはbuild.gradleファイル(モジュールレベル)のversionNameパラメータで設定します。このパラメータは文字列であり、ドット、ハイフン、文字など任意の文字を含めることができます。
パラメータは必須のversionCodeパラメータとともにandroid.defaultConfigブロック内で宣言します。Androidは文字列の形式に制限を課しませんが、Google Playはセマンティック形式の使用を推奨しています。
Android Developers(2025年)によると、Google Playはストアのインターフェースでの表示にversionNameを使用しますが、プログラムによる内容の分析は行いません。アップデートのロジックに影響するのはversionCodeのみです。
Version NameはMajor.Minor.Patch形式で指定し、バージョン管理システムのタグと同期させて、リリースを明確に特定できるようにしてください。
Gradleでは、build.gradleで静的に、またはビルドスクリプトを通じて動的にversionNameを設定できます。動的生成は、自動ナイトリービルドやCI/CDパイプラインに便利です。
build.gradleでは、環境変数、コマンドラインパラメータ、シェルスクリプトの呼び出しを使用してversionNameを形成できます。典型的なアプローチは、version.propertiesファイルからバージョンを読み取ることです。
この柔軟性により、チームはバージョニングプロセスを自動化し、リリース準備中の人為的エラーを排除できます。
iOSでは、Version NameはInfo.plistファイルのCFBundleShortVersionStringキーで設定します。これはApp Storeでアプリケーションを公開するための必須パラメータであり、文字列として厳密に型指定されます。
Androidとは異なり、App Store ConnectはVersion Nameの形式をチェックし、ドットで区切られた数値のパターンに一致することを要求します。文字列の最大長は18文字で、各バージョンコンポーネントは255を超えることはできません。
Apple Developer Documentation(2025年)によると、CFBundleShortVersionStringはApp Storeがストアインターフェースやユーザーのデバイス上のシステムダイアログでバージョンを表示するために使用されます。
App Store Connectにビルドをアップロードする際は、Version Nameがマーケティング資料に記載されているバージョンと一致していることを確認してください。これによりユーザーとのコミュニケーションが容易になります。
Xcodeは、ターゲット設定でVersion Nameを変更するためのグラフィカルインターフェースを提供します。「Marketing Version」フィールドは、IdentityセクションのGeneralタブにあります。変更は自動的にInfo.plistに保存されます。
自動化のためには、Xcode Build Phasesのビルドスクリプトやagvtool(Apple Generic Version Tool)ユーティリティを使用できます。agvtoolはコマンドラインからバージョンを管理し、CI/CDに統合できます。
このアプローチは、fastlaneやJenkinsを使用したアプリケーションの自動ビルドと配信に特に便利です。
Version NameとBuild Numberは開発プロセスにおいて異なる役割を果たします。Version Nameはユーザー向けの文字列であり、Build Numberは各ビルドを一意に識別する内部的な数値識別子です。
Build Number(AndroidではversionCode、iOSではCFBundleVersion)は新しいビルドごとに増加させる必要があり、アプリストアはこれを使用してどのバージョンが新しいかを判断します。Version Nameは同じバージョンの複数のビルドで変更されないことがあります。
Google Play Policy(2025年)によると、同じversionCodeを持つ2つのアプリケーションは同じバージョンとみなされます。versionCodeはAPKごとに一意でなければなりません。Version Nameはこのチェックには関与しません。
ビルドごとに常にBuild Numberを増加させ、機能が変更された場合にのみVersion Nameを変更してください。これにより公開時の競合を防ぐことができます。
Version Nameの選択は、チームのバージョニング戦略に依存します。最も一般的なアプローチはセマンティックバージョニング(SemVer)ですが、カレンダーバージョニングやリリース日ベースのバージョニングなどの代替スキームも存在します。
Semantic Versioning 2.0では、オプションのプレリリースサフィックス付きのMajor.Minor.Patch形式を推奨しています。モバイルアプリケーションでは、認識を簡素化するためにパッチバージョンを省略したMajor.Minorスキームも一般的です。
カレンダーバージョニング(CalVer)はリリース日をバージョン番号として使用します(例:25.06(年と月))。このアプローチは、セマンティクスが意味を持たない頻繁なリリースを行うアプリケーションに便利です。
セマンティックバージョニングは、後方互換性が重要な公開APIを持つアプリケーションに適しています。ユーザーと統合者はアップデートでどのような変更が予想されるかを理解できます。
カレンダーバージョニングは、変更の範囲よりもリリースの新しさが重要なアプリケーションに選ばれます。たとえば、ニュースアグリゲーターや天気アプリなどです。
ハイブリッドスキームは両方のアプローチを組み合わせたものです:Major.Minor.RC。ここでRCは特定のリリース候補のビルド番号です。このスキームはアクティブなベータテスト中に便利です。
以下のコード例は、AndroidとiOSでVersion Nameを設定する方法を示しています。AndroidではGradleを使用し、iOSではagvtoolを使用したXcode Build Settingsを使用します。
Androidでは、バージョンはapp/build.gradleファイルのdefaultConfigブロック内で設定します。versionNameパラメータは文字列値を受け入れます。
android {
defaultConfig {
versionCode 3
versionName "2.1.0"
}
}
versionNameは外部ファイルから読み取ったり、Gradle Scriptを使用して動的に生成したりすることもできます。
動的バージョンはCI/CDシステムの環境変数から形成されます。これにより、各ビルドが正しいバージョン番号を受け取ることが保証されます。
def getVersionName = {
return System.getenv("VERSION_NAME") ?:
"2.1.0"
}
android {
defaultConfig {
versionName getVersionName()
}
}
このアプローチによりバージョニングが自動化され、ビルドとリポジトリタグの不一致のリスクが排除されます。
iOSでは、バージョンはXcodeを介して、またはagvtoolを使用してコマンドラインから設定できます。
# マーケティングバージョンの設定
xcrun agvtool new-marketing-version 2.1.0
# 現在のバージョンの読み取り
xcrun agvtool what-marketing-version
agvtoolは自動的にInfo.plistを更新し、Xcodeプロジェクト内のすべてのターゲット間でバージョンを同期します。
よくある質問
Version Nameはアプリストアに表示されるユーザー向けバージョン文字列です。Build Numberは各ビルドを一意に識別する内部的な数値ビルド識別子であり、ストアがバージョンの新しさを判断するために使用します。
Androidでは、versionNameに文字やハイフンを含む任意の文字を含めることができます。iOSでは、CFBundleShortVersionStringはドットで区切られた数値で構成する必要がありますが、プレリリースバージョンでは文字のサフィックスが許可されています。
CI/CDツール — GitHub Actions、GitLab CI、Jenkinsを使用してください。ビルドスクリプトがファイルから現在のバージョンを読み取り、必要なコンポーネントをインクリメントし、リリースをビルドする前に新しい値を書き込みます。
ストアはBuild Numberが増加していれば新しいビルドを受け入れます。ただし、ユーザーはバージョンの変更を確認できず、混乱を招く可能性があります。新機能のリリースごとにVersion Nameを変更することをお勧めします。
Major.Minor.Patch形式は、ほとんどのプロジェクトにとって最適な選択です。ユーザーと開発者の両方にとって理解しやすく、SemVer標準に準拠し、すべてのアプリストアでサポートされています。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。