去年の12月頃に、自身2作目となるスマートフォンアプリ「コツコツ脳トレ」をリリースして3ヶ月ほど経ちました。
作成にはFlutterを使用していて、iOS/Androidアプリとしてリリースしています。
リリースしてからもアップデートを何回か繰り返し、ようやくとりあえず実装したいと考えていたことは実装できたので、振り返りをしてみようかなあというのが、この記事の作成モチベーションです。
アプリを遊んでみたい場合は、以下のボタンからストアに飛ぶことができるので、よろしければ!
コツコツ脳トレとは
コツコツ脳トレはiOS/Androidで遊ぶことができる、脳トレアプリです。
アプリにはシンプルだけど脳を活性化させるミニゲームを複数用意してあります。
プレイヤーは好きなゲームを遊ぶことで、脳トレをすることができるというものです。
毎日続けてもらうためのポイント
コツコツ脳トレは、その名の通り毎日コツコツと続けてもらうことを目標としています。
単純にミニゲームだけが用意されているだけでは、ミニゲームが死ぬほど面白いといった事が必要ですが、さすがにミニゲームにそこまでの強みをもたせる事はできませんでした。
そこで、ミニゲーム以外の続ける動機を複数用意することで、毎日続けてもらえるように工夫しています。
大まかに言うと以下の4機能を続ける動機として用意しました。
- プレイ記録
- プレイヤーレベル
- ログインボーナス
- 全国ランキング
プレイ記録では1日1回遊ぶと、カレンダーに完成マークが押されます。判子を押してもらいたいからラジオ体操に参加するといったイメージを取り入れてみました。
プレイが途切れると悲しい気持ちになり、その後のログインがなくなってしまう可能性がある点については、今一度新しい何かを考える必要がありそうです。
また、プレイヤーレベルのように数字が積み重なる要素も用意しています。
個人的にゲームをしていて好きな要素でもある、レベル上げをすることができます!
ミニゲームを遊ぶことで手に入るポイントで、プレイヤーレベル(脳レベル)がどんどん上がっていきます。遊べば遊ぶだけ脳レベルが上がります。
脳レベルが上がると、ミニゲームのスコアにボーナスが付いたりするので成長を感じることができるようになっています。
さらに、レベルを上げるために集めたポイントを使って、アイテムを買うことができます。アイテムを買うことで手に入るポイントが増えていくので、レベルを早く上げることができたりします。
使用した技術など
このアプリは、たくさん遊んでもらえる、しっかりとしたアプリを目指していた一方で、個人開発だからやってみたい技術を盛り込んでみようという心持ちで作成しています。
そのため、このアプリに関わる技術的要素はかなり多くなっています。
棚卸しという意味を込めて、系統ごとにまとめてみようと思います。
言語、フレームワーク
- Dart/Flutter
私がしっかりとしたスマホアプリを作成できるのはFlutterしかないので、実質1択でした。
Flutterを触る前はサーバーサイド/フロントエンドの言語やフレームワークしか触ったことがなかったのですが、Flutterに出会ったおかげでiOSとAndroidの両アプリが作れるようになりました!Flutterに圧倒的感謝!!
Flutterに出会うことがなければスマホアプリを作ることすらしなかったような気がしますが、作ったとしてもiOSアプリだけだったと思います。クロスプラットフォーム開発フレームワークは本当に神です。
認証、永続化、分析
- Firebase Authentication
- Firebase Firestore
- Firebase Analytics
- Firebase Crashlytics
- Drift(SQLite3)
バックエンドのコアな部分は、ほとんどFirebaseが何とかしてくれています。
私のアプリの規模だと、これだけの機能をすべて無料で使うことができるのですが、無料でいいのかい?って感じが半端ないです。
オンラインの永続化で使用している、「Firestore」はオフラインでも動作してくれたりするので少し癖がありますが、慣れてくると非常に使いやすい神機能です。
Firebaseを超える何かが出てこない限りは、今後も依存していく可能性が高いです。
また、ローカルでの永続化で使用しているDriftはFlutter2.8のアップデートでFlutter Favoriteの仲間入りをした、大注目のパッケージです。
非常に使いやすく、Streamによる監視も簡単にできる優れたORMです。オススメ!
マネタイズ
- Google AdMob
- Revenue Cat
アプリらしいアプリにしたかったのと学習の意味を込めて、広告や課金要素も入れてみました。
AdMobではバナー広告とリワード広告を使っていますが、公式ドキュメントに従うことで簡単に実装できてしまいました。状態の管理など自分で工夫も必要ですが、公告を表示するという点だけでいうとAdMobの力でぱぱっと実装できます。
ただし、iOSについては一度広告無しでリリースしてから、AdMobとコンソール上で連携するようにしないと広告が出なかったので、2回リリースの手間が発生してしまう課題があるような気がします。私は知らずにやってしまったので、普通に広告込みで作ったアプリから、一旦広告部分を外すように修正したので、だいぶ無駄な時間を使いました。
Revenue CatはiOSとAndroidの課金処理を間に挟んでよしなにやってくれるサービスです。
これによって、Flutterのコード上はRevenue Catを使うコードを書くだけで、iOSとAndroidアプリの課金処理を実装することができます。
作成した感想
初回リリースまでは3ヶ月ほど、ひたすら開発をしていました。
アプリ全体の設計をしっかりと考えて、スケーラビリティやパフォーマンスを意識して作成していることや、テストコードの作成などしているため、初回リリースまでは結構時間がかかってしまいました。
しかし、そのおかげで追加改修は非常にスムーズに行うことができているので、いい時間のかけ方だったと思います。
ただここまでに書いてきた、実装に関する部分はかなり良い感じにできていた一方で、デザイン面は大きな課題があるなと感じています。
今回Adobe XDを駆使してデザインの作成や、Canvaを使っての素材作成をすべて自分一人で行いました。
しかしながら、デザインの経験がほとんどないこともあり、できた画面は割とダサいです(悲)。
エンジニア領域全般をやりつつ、デザインもやっていくのは相当困難である気がしているので、今後は外注とかうまく活用してみたいなと思っています。(お金があればすぐにでもやりたい)
最後に、今後の目標としてはユーザー数を増やしていきたいと考えています。
そのためにも、Analyticsを活用して利用者の分析をしたり、広告を出してみたり色々やってみたいところです。
長くなってしまいましたが、振り返りはここまでにしようかと思います。
今後もFlutterを使った開発を続けていこうと思っています。
そして、自分のアプリだけでなく企業に入ってFlutterを使った開発をやってみたいとも思っています!
コツコツ脳トレは以下からダウンロードできるので、よろしければ脳の活性化に使ってみてください!