Flutter で作ったドット絵アプリを公開して広告で宣伝してみた

~この記事は 裏ドット絵 Advent Calendar 2023 4日目 の記事です~

# まとめ
ドット絵向けのエディタを自作しました。
動機とか大変だったこととかを紹介したいと思います。（12/4 に記事あげる予定でしたが１日遅れてスミマセン）
誤字脱字とか誤りとかありましたらコメントで指摘お願いします。

https://play.google.com/store/apps/details?id=shuaki.com.diorite&pli=1

https://apps.apple.com/jp/app/id6460978343

## 背景
私は社会人で、仕事の合間に興味のある実装やアプリ開発をしています。
今年、ChatGPT が出てきて学ぶハードルが下がったので何かやろうという気持ちになりました。元々スマホ向けゲームを自作していて、そのための素材もぽちぽちドットを打ってつくっていたため、ドット絵を描くスマホアプリつくるしかない！と思い立ちました。開発は思いの外順調で、モチベーションが尽きる前にリリースに至り、一息ついていました。ちょうどそこでアドベントカレンダーの枠を発見したので、これまでの経験を振り返ることにしました。

数年前に Unity で作ったゲームをスマホ向けにリリースしたことがありますが、その時は数年かかって大変でした。
しかし、現在はツールも記事も大幅に充実してきており、半年も立たずリリースまで行くことができました。この体験が、同じような個人開発者の助けになればと思います。

## もくじ
- タイムライン
- 動機と背景 (2023年5月 ~ 2023年6月)
- Flutter 選定 ~ 良かったところ辛かったところ (2023年6月 ~ 2023年8月)
- リリース準備  (2023年8月 ~ 2023年9月)
- リリースその後の広報
- 今、そしてこれから(2023年12月 ~ )

## タイムライン
以下のようなタイムラインになります。動作する最初のバージョンができるまでは予想以上に爆速でしたが、細部を詰めようとするとやはり時間がかかった印象です。

- 2023年6月
    - https://docs.flutter.dev/get-started をみながら勉強をはじめる。
- 2023年7月
    - 動作するアルファ版のドット絵エディタが完成する。パフォーマンスに課題があり、画像サイズが20ぐらいでもっさり
- 2023年8月
    - パフォーマンスの問題を解決し、ドットを打つ以外の機能やプレビュー画面の実装に入る
- 2023年9月
    - 最低限の機能実装を完了する
    - パイプラインとして [CodeMagic](https://codemagic.io/start/) を採用する
    - App Store リリース:rocket:
    - Appliv 様に広告依頼を出す
    - Google Play Store リリース:rocket:
- 2023年10月
    - Google Ads でアプリ広告出稿

## 動機と背景 (2023年5月 ~ 2023年6月)
冒頭にも書きましたが、具体的には以下動機３つが重なったことが理由です。
- ChatGPT の出現により新言語の学習意欲が湧いた
- 前々から使っていたドット絵アプリで管理できるイラストの上限に抵触してしまい不満があった
- 前にアプリをリリースしてから5年以上立っており、今の市場の様子が知りたかった

自分で作ったものを自分で使うことも目的なのでモチベーションが落ちにくい点は開発を続けていく上で助かりました。


## Flutter 選定 ~ 良かったところ辛かったところ (2023年6月 ~ 2023年8月)
思い立った後はまずどのプラットフォームで出すかを検討しました。
使ってくれる対象は多い方がいいと思ったので、 クロスプラットフォームビルドが可能なフレームワークを探しました。一方で、デスクトップアプリだと昔から [Aseprite](https://www.aseprite.org/) を使っていて全く不満がなく、画面設計が別途必要なため、デバイスはモバイルに絞ることにしました。
<br>

上記条件を満たしつつ、比較的新しいフレームワークを使いたかったので [Flutter](https://flutter.dev/) を選択しました。
新しいフレームワークを利用したい理由は、もちろん興味もありますが、直近で　Rust を触った時にパッケージのエコシステムや周辺ツールが明快、充実定して体験が良かったので、後発のフレームワーク使えば良い体験できるのでは？という漠然とした推測がありました。（※個人の印象が多分に含まれています）
<br>
  
実際、Flutter を使ってみて、パッケージ周りの管理の手軽さと環境構築の手軽さは最高でした。
逆に苦労したのは、ドット絵エディタ自体はおそらく本来の想定ユースケースから離れるため、モックを作った後のパフォーマンスの検討がかなり必要だった点です。

恥ずかしながら、実は最初は以下の画面のピクセルごとに Widget を生成してたため、Widget の再生成や再描画が走りとんでもなく重かったのです。現在は単一の [CustomPainter](https://api.flutter.dev/flutter/rendering/CustomPainter-class.html) を用意し、タップした座標をもとに短形を描画することで現実的な描画時間に納めています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254034/a11438f4-b64f-a8c9-8ceb-0e03cd9e340b.png" width="150">


## リリース準備  (2023年8月 ~ 2023年9月)
個人的にこの時期が一番楽しかったです。最低限ドットを打って絵を描き、保存する部分まではできていたので、開発中のアプリで新しいツールのアイコンを描いてそれを実装するという、自給自足のアプリ開発をやってました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254034/a227c9f0-135e-633d-cd20-046464e00b9e.png)

そのあと、このタイミングでリポジトリを整備して、 [Codemagic](https://codemagic.io/) を導入しました。このサービスは指定したブランチに更新がプッシュされると自動でワークフローが走ってビルド、プロジェクトの書き出し、署名、ストアへのビルドマテリアルのアップロードなどのタスクを一括でやってくれるサービスになります。
一人で開発する際にこの辺りのタスクをいちいち手動でやっていると何人いても足りないので、こちらのツールは非常に助かりました。
<br>
最後に、その後リリースするストアの設定を行いました。私自身が持っている実機は iPhone 端末のため、先に Apple Developer Account にアプリの登録を行い、テスト可能な状態にしました。

## :rocket:リリース:rocket:、そしてその後...(2023年10月 ~ )
無事リリース！めでたしめでたし、といいたいところなのですが、ここで欲がでてきました。
そう、やっぱり作ったならそれなりに目立ってほしい、という欲です。というわけで、いくつか広告を出すことにしました。
<br>
最初に Appliv 様にレビューを依頼しました。この時、実は待ちきれなくて Android 版がリリースされる前にレビュー依頼してしまったため、Android がない状態になっています。善は急げ、思い立ったが吉日という言葉もありますが、もう少し落ち着くべきだったなと反省しています。

<br>

その次に、やはりストアに掲載するならストアの広告を使うべきだろうということで Google 広告を利用することにしました。どうやら、Google 広告には現在アプリの広告向けの  [アプリキャンペーン](https://support.google.com/google-ads/answer/6247380?hl=ja) という広告タイプがあり、これがまさに今回使えそうだったので課金してみました。

ついでに、このタイミングで多言語対応も行いました。Flutter はパッケージ( [flutter_localization](https://pub.dev/packages/flutter_localization) )を入れて少し差し替えるだけですぐ簡単な多言語対応ができたので、非常に助かりました。この辺りは需要があれば別途記事にするかもです。

## 今、そしてこれから(2023年12月 ~ )
ぶっちゃけ広告に課金してるおかげなのですが、順調にユーザーが増加していてぼちぼち満足してます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254034/4d90ebcb-3be9-6e72-42ca-48ea2d14d367.png)

一方でいくつか悩みもあり、広告の関係で当初想定してない国への配信が大きく、今後逆にどう開発していこうか悩んでます。
また、現在は特に外部と通信しておらず、データ収集もないですが、機能によっては　GDPR　などの対応も検討する必要がでてきます。個人での対応には限界があるので、どこかのタイミングでやっぱり日本にだけ限定するとか、日本向けにリリースし直すなどの作業が必要になるかもしれません。あと、広告もお金結構使っているので流石にそろそろ停止しないと財布が厳しいです。

それから、以外とレビューが来ないのが悩みです。改善のためにはレビューが必要なのですが、言語的な壁もあるのか特に意見がないのでこの先自分が満足した後どうしようかなと考えています。

<br>

とはいえ、自分で作ってみて公開してみるというのは良い経験になりました。
最後に、自分のアプリで描いた、クォータビューゲーム向けのマップチップを添えて記事を終えたいと思います。
ありがとうございました。

![maptip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254034/a930d6fe-deaa-bd5d-3da5-d91709fd03bf.png)