snovaのブログ

主にプログラミングやデジタルコンテンツについて書きます。最近はPython, Flutter, VRに興味があります。

消防設備計算アシスタントアプリを開発

はじめに

以前、電気設備の設計や検討を簡単に計算をできるアプリを開発しました。

snova301.hatenablog.com

今回は、消防設備の確認に役立つアプリを開発しようと思い、消防設備計算アシスタントというアプリをFlutterで開発し、Google PlayApp Storeでリリースしました。

Android

play.google.com

iOS

消防設備計算アシスタント

消防設備計算アシスタント

  • Yuya Sugino
  • 仕事効率化
  • 無料
apps.apple.com

目次

開発背景とターゲット

電気設備計算アシスタントと同様に、自分の業務で使用できないかなと思い立ったのがきっかけです。

消防設備専門で働かれている方々は、ほとんどの法令や規格が頭の中に入っていると思うのですが、私のような普段は消防設備業務を行っていないが、時々確認する必要がある人は、法令や参考書を見て判断する必要があります。

また、消防設備士試験の試験勉強では能力単位の計算や設置義務判断が必要となります。

そこで、上記のユーザを本アプリのターゲットとし、簡単に結果が確認できるように設計しました。

なお、消防設備の工事や点検には各類別の「消防設備士」資格や着工届等が必要なので、アプリだけでは業務を遂行できず、あくまで「アシスタント」という位置づけです。

今回の開発でチャレンジしたこと

今回のアプリ開発で新しく挑戦したことをまとめます。 (一部は直前のアプリ更新で挑戦したことも含まれます。)

  • RiverpodのStateNotifierProviderとfreezedの導入

状態管理にRiverpodを使っていますが、よりMVVMを意識して、StateNotifierProviderとfreezedを採用しました。 慣れが必要ですが、複雑な状態の更新をより簡単にすることができました。

riverpod.dev

  • スプラッシュ画面の導入

スプラッシュ画面があればかっこいいなくらいの気持ちで実装しました。 flutter_native_splashを使うと、Flutterで簡単にスプラッシュ画面を実装できました。

pub.dev

  • テストコードの実装

これまではRiverpodのテストがうまく動かなかったため、あまりテストコードを書いていませんでしたが、(正しいかわからないけど)動作するようになったので、unit testのコードを作成してテストを行いました。

以下は、Riverpodでのテストの例。

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  test('Riverpod test', () {
    /// ProviderContainerの定義
    final container = ProviderContainer(
      overrides: [
        aProvider.overrideWithValue(aNotifier()),
      ],
    );

    /// 状態の確認
    expect(container.read(aProvider).xxx, 0);

    /// 値を変更
    container.read(aProvider.notifier).updateXxx(1);
  });
}
  • リワード広告の実装

半分以上趣味で作っているのと、その他事情により、マネタイズは広告のみですが、バナー広告だけではなく、リワード広告も実装しました。 リワード広告といっても報酬が無いので、運用方法は今後も検討していきたいと思います。

今後の展開

消防設備計算アシスタントもスモールスタートで始めた(初期開発時間が数十時間)ので、アップデートで機能の追加を行っていきたいと考えています。

以下は今後実装したい機能の一例です。

  • 避難器具の設置義務の計算
  • 消火器の適応判断
  • 自火報設置個数計算
  • 市町村条例に応じた計算や判断

etc...

アプリのサポートページにも記載しています。

snova301.github.io

おわりに

アプリにミス等があればご報告いただけると嬉しいです。 また、アプリの評価もしていただけると嬉しいです。

なお、今回のアプリのコードは、Githubで公開しています。

github.com

Google Play and the Google Play logo are trademarks of Google LLC.