snovaのブログ

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

電気設備用計算アプリを作った話

はじめに

最近会社でようやくiPadが支給されたので、実務(電気設備導入業務)で役立ちそうなアプリを開発してみようと考えました。

セキュリティや情報管理の問題をクリアでき、会社でも使用できて、比較的に簡単に作れるアプリということで電気設備用の計算機を製作しました。

目次

どんなアプリか?

電気負荷の大きさに応じて、電源ケーブルサイズや電圧降下を計算します。 また、電圧と電流から各種電力値を計算します。

これまでは資料を読みながら電卓を叩いていましたが、自動的に計算することで計算ミスや時短を期待できます。

Android版はこちらで公開しています。

play.google.com

開発環境

項目 内容
ハード M1 Macbook Air (2020)
OS macOS 11.5.2
言語 Dart
フレームワーク Flutter 2.5.3
エディタ VS Code 1.62.3
Android Android Studio 2020.03

アプリ構成

アプリ自体は簡単なものを作りたかったので、数ページの画面だけで完結し、サーバーとの通信などは全くない構成となっています。

計算画面はTabBarViewを使って、2つのタブにそれぞれ別の計算画面を作成しています。

...
child: Scaffold(
  appBar: AppBar(
...
  body: TabBarView(
    children: <Widget>[
      ListView(
...

また、計算結果の項目では桁数が多いときに全ての結果が表示されるよう、横スクロール機能SingleChildScrollViewを使いました。

...
SingleChildScrollView(
  scrollDirection: Axis.horizontal,
  child: DataTable(
    columns: const <DataColumn>[
      DataColumn(
...

アプリはこんな感じです。

アプリ画面

なお、Flutterを採用した理由ですが、

  • Android, iOSなどに関係なくアプリをリリースできるため
  • Flutter Web(まだまだ発展途上ですが)を使うとwebアプリとして公開できるため

また、webからアプリケーションを使用できるようにするため、Firebase Hostingを採用しました。 Firebaseはいまのところ無料版で対応できていますが、アクセスが多くなったら(多分ありえないけど)、有料版をちょっとだけ考えます。

個人的に初めて挑戦したこと

普段は科学技術計算やパズルのようなプログラムを中心に製作することが多いのですが、このアプリを製作するときに初めて挑戦して、苦労したことがいくつかありました。

  1. M1 MacbookでFlutter開発したこと : これまではWindows PCやIntel MacbookでFlutter開発していましたが、今回初めてM1 MacbookでFlutterを使用しました。 各ソフトの導入まではスムーズに行ったのですが、iOSAndroidエミュレータの起動をさせるためだけに何時間も使いました。 M1 Macbookを買った時も感じていましたが、CPUのアーキテクチャを変えるというのは大変な労力が必要なのですね。

  2. Androidアプリをリリースまでしたこと : これまでAndroidアプリをGoogle Playでテストするまでは実施していましたが、実際にリリースまではしていませんでした。 今回初めてリリースまでしましたが、ストアの掲載情報やポリシー関係の文章を作るのは手間がかかりました。 ちなみに、私はデザインセンスないのでアイコンは妻に作ってもらいました。

  3. Flutter webとFirebaseを使用したこと : Firebase自体は数年前から気になっていましたが、縁がないものと思いこれまでは手を出していませんでした。 今回、アプリをwebで公開するために必要だったので、初めてFirebaseを使ってみました。

  4. アプリ広告を表示させたこと : Admobを使用してアプリ広告に挑戦しました。 ただ、ユニットIDをデバッグ/Android/iOSで変更しないといけないなど、導入が面倒だったので、収益性を考えないのであれば、広告は不要かな?と思いました。

  5. いろんなクラスを使ったこと : Flutter APIの公式サイトを見ながら、いろんなクラスを使いました。 残念ながら、DartやFlutterに慣れていないため、冗長的なコードになってしまいましたが。。。

今後について

会社では相変わらずセキュリティがどうとかいう理由でプログラム開発が全くできないので、個人で開発できる範囲でアプリなどを作りたいと思います。 (おそらくこのくらいのアプリならローコード開発でもできそうですが。)

また、今回はFirebase Hostingを使用しましたが、他にもAuthenticationDatabaseなどあるので、それにも挑戦したいです。

参考サイト

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