👋

Unityで作業時間記録アプリ「MinuteMind」を個人開発し、iOS/Androidで同時リリースした話

に公開

※この記事は Qiita に投稿した内容 をベースに、Zenn向けに少し読みやすく調整したものです。


はじめに

最近、作業時間を手軽に記録できるアプリ「MinuteMind」をリリースしました。

  • Unity製
  • Android/iOS両対応(同時リリース)
  • Google Driveとのデータ連携あり

今回は、個人開発者がUnityだけでモバイルアプリをリリースするまでの道のりや、
詰まったポイント/工夫点をまとめておこうと思います。


アプリの概要

  • アプリ名:MinuteMind
  • カテゴリ別に作業時間を記録
  • 日・週・月ごとのグラフ表示
  • Google Drive連携でバックアップ対応
  • Unity IAPで広告非表示の課金も実装済

アプリイメージ


技術スタック

  • Unity 2022.3 LTS
  • Android/iOS 両対応
  • Google Drive REST API v3
  • Android側:AARでファイル選択 → Intent呼び出し
  • iOS側:UIDocumentPickerでJSONインポート
  • Unity IAPで課金処理

実装で詰まったこと・工夫したこと

① AndroidのGoogle Drive連携(AAR)

UnityからAARに渡す処理は以下のように呼び出し。

using (AndroidJavaObject activity = UnityPlayer.GetActivity())
{
    activity.Call("exportToDrive", filePath, mimeType);
}

AAR側でIntentを投げ、Google Driveにファイル送信します。
SAF(Storage Access Framework)を使うことで、ユーザー選択形式を実現しています。


② iOSのJSONファイルインポート

UIDocumentPickerを使ってファイル選択を行い、
選択完了後に UnitySendMessage() でUnityへデータ通知。

// iOSネイティブから Unity へ通知する例
UnitySendMessage("GameObjectName", "OnJsonImported", jsonString)

その後、PersistentDataPathに保存して読み込む流れです。


③ Unity IAPによる広告非表示課金

無料ユーザーにはAdMobバナー+インタースティシャルを表示。
広告非表示購入時は PlayerPrefs に記録して、それをAdMobの初期化前に読み取る形にしています。


ストアリンク


フィードバック歓迎!

不具合報告・使い勝手の提案・質問など、何でも歓迎です。
以下のDiscordで受け付けています!

MinuteMind 公式Discord


おわりに

個人開発で「iOSとAndroidに同時リリース」するのは想像以上に大変でしたが、
自分のアイデアが形になってストアに並んだときの達成感は格別でした。

この記事が、Unity × モバイル開発をやっている方の参考になれば嬉しいです!

最後まで読んでいただきありがとうございました!


Discussion