恥ずかしい告白から始めます
個人開発でアプリを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分もあれば入れられます。
