Single Source of Truth(唯一の真実の源)バージョン番号自動化

目次

恥ずかしい告白から始めます

個人開発でアプリを9本リリースしてきましたが、実はずっと放置していたことがあります。

アプリのどこにも「バージョン番号」を表示していなかったのです。

「設定画面のどこかにバージョンが書いてあると便利だよね」とは思いつつ、後回しにしていました。

ところが自分で自分のアプリなのに「アップデートしたはずなのに、本当に新しくなったのか確認できない」というこことに気がつき、ハッとしました。

これはユーザーからしても、アプリを更新しても「本当に最新版になったのか」を確かめる手段がないわけです。

「手書き」という罠

設定画面に Text(‘バージョン 1.14.0)って書くことは、もちろん考えませんでした

pubspec.yaml でバージョンを 1.14.0 に上げる
そして、設定画面の Text(‘バージョン 1.14.0) も書き換える

これはバージョン番号を2箇所で管理することになり、必ずどこかで食い違います。
リリース作業で一番やりがちなミスです。

Single Source of Truth(唯一の真実の源)

ここで思い出したのが、エンジニアリングでよく言われる原則です。

同じ情報を複数の場所に持たない。真実の源はひとつにする。

アプリのバージョンの「真実の源」は、どう考えても pubspec.yaml です。

yamlversion: 1.14.0+41

ここさえ更新すれば、アプリ内の表示も自動でついてくる。そういう仕組みにすればいいのです。

package_info_plus の登場

Flutterには、まさにこれを実現するパッケージがあります。package_info_plus です。

導入

bashflutter pub add package_info_plus

これだけ。

使い方

dartimport 'package:package_info_plus/package_info_plus.dart';

String _appVersion = '';

@override
void initState() {
super.initState();
_loadAppVersion();
}

Future _loadAppVersion() async {
final info = await PackageInfo.fromPlatform();
if (mounted) {
setState(() {
_appVersion = info.version; // "1.14.0"
});
}
}

そして画面に:

dartText(
_appVersion.isNotEmpty ? 'バージョン $_appVersion' : '',
)

これだけです。設定画面の一番下に、そっと「バージョン 1.14.0」と表示されるようになりました。

この仕組みの嬉しいところ

一番のポイントは、もう二度とバージョン番号を手で書かなくていいことです。

pubspec.yaml を 1.14.0+41 に更新
ビルドしてリリース
アプリ内の表示も自動的に「バージョン 1.14.0」になる

こういう「地味だけど、あとで効いてくる」仕組みこそ、長く運用するアプリには大事なんだと実感しています。

バージョン番号表示は派手な機能ではないけれど、
「Single Source of Truth」という原則を感じます。

もし、まだアプリにバージョン表示を入れていない方がいたら、ぜひ。
30分もあれば入れられます。

目次