概要
Flutterの勉強の成果として何かアプリを作りたかったので、ゲームの補助ツールを作成してApp Storeで公開した時の話です。
なぜこのアプリを作ったのか
Flutterの勉強の成果という面が一番ですが、アプリ自体の発想をくれたのは高校時代の友人でした。今は私自身ゲームをして遊んでいるような身分ではないので昔の話ではありますが、似たようなゲームで遊んでいたので、友人からの情報と私の経験を合わせて今回のアプリが生まれました。
アプリの概要
多くの音ゲーは5人くらいのキャラクターでユニットを組んで、その選んだキャラクターが持つスキルで曲のスコアが上がるという仕組みになっていることが多いです。ユニエアはまさにそれです。
キャラクターのスキルは「○秒おきに○%の確率で○秒間スコア○%アップ」というように、正直なところ、どのキャラクターがどれくらい強いのか、他のキャラクターと比較して強いのか弱いのかということが分かりません。そこで、スキルごとの期待値を求めることでキャラクターの強弱を判断しているのですが、この期待値の公式が複雑で手計算や関数電卓で計算するのも面倒なので、スキルのパラメータを入力するだけで期待値を計算できる計算機アプリというのが今回開発したアプリです。
工夫した点
状態管理にRiverpodを使用しました。Flutterの記事(特に日本の記事)だとProviderを使用しているものが多いのですが、RiverpodはProviderと比較して状態へのアクセスやWidgetの再構築の最適化など多くのメリットがあるので、まだまだ情報が少ない中ではありましたが、Riverpodを採用しました。
そもそも、RiverpodはProviderの改良版なので今からProviderを学ぶメリットがほぼ無いのも大きな理由ですが、情報量としてはProviderの方が多いのは間違いなく、自分くらいのレベルの人間がFlutterでアプリ開発を行うならProviderを採用した方が何かと楽なのですが、新しい物好きなので今回はRiverpodを採用しました。
UIに関しては、パステルカラーをメインにして計算するだけの無機質なアプリにならないように気をつけました。また、連続で期待値を計算する時に計算ボタンを押してから本当に計算が行われたのか分かりにくかったので、リセットボタンを作成して期待値の部分を「0.00」に戻すことで数値の変化を分かりやすくすると同時に、連続で計算をしたい時に前回入力した数字を消す作業を一発で行えるようにし、さらに、ボタンをタップした時にエフェクトを付けることで「計算ボタンをタップできた」という認識をユーザーにしてもらえるように工夫しました。
最後に
モバイルアプリ開発は初めてだったので、App Storeに自分が開発したアプリがあるという光景は、Web検索で自作サイトが出てきた時の喜びとはまた違う嬉しさがありました。正直、ダウンロード数なんかはやっと二桁という感じなので、もっと多くの人に使ってもらえるアプリを作りたいという気持ちもありますが、今回の体験をモチベーションに変えてこれからも何か作っていけたらなと思います。