島根県安来市のフリーランスエンジニア_プログラマー画像1

毎日1枚の自撮りを記録するAndroidアプリ「今日のわたし」を作ってGoogle Playで公開した話

毎日1枚の自撮りを記録し、スライドショー動画としてSNSにシェアできるAndroidアプリ「今日のわたし」を開発してGoogle Playに公開しました。カメラ撮影・カレンダー管理・通知・動画生成・AdMob広告実装まで一通り実装した開発記録です。

アプリの概要

「今日のわたし」は、毎日1枚の自撮り写真を記録するシンプルなアプリです。日々の変化を客観的に見ることができ、ダイエット・筋トレ・スキンケアの記録にも最適です。

  • 毎日1枚の自撮り記録:タップするだけで今日の1枚を保存
  • カレンダー表示:撮影した日を一覧で振り返り
  • 前後比較:日付を選んで2枚を並べて比較
  • スライドショー・動画保存:期間を選んで変化を動画としてギャラリーに保存、SNSにシェア可能
  • 毎日のリマインド通知:撮り忘れを防ぐ通知設定
  • 写真は端末内にのみ保存:クラウドに送信しないプライバシー重視設計
Google Play(クローズドテスト中):

開発のきっかけ

「毎日自分の顔写真を1枚撮って記録・見直すだけ」というシンプルなアイデアから始まりました。似たアプリは存在しますが、SNSシェアを前提とせず「自分だけの鏡」として使えるアプリが欲しいと考えました。スライドショーを動画として保存してSNSにあげたいというニーズも、差別化のポイントになっています。

技術構成

フレームワーク
Flutter 3.29
Dart言語、Android向けビルド
動画生成
Android MediaCodec
MethodChannel経由でKotlinから呼び出し
広告
Google AdMob
google_mobile_ads パッケージ
通知
flutter_local_notifications
timezone対応・毎日定時通知
ストレージ
path_provider / gal
端末内保存・ギャラリー書き出し
配布
Google Play Console
AABビルド・リリース署名

実装のポイント

動画生成をffmpegなしで実装

AndroidネイティブのMediaCodec/MediaMuxerをKotlinで実装し、FlutterからMethodChannel経由で呼び出す構成にしました。外部ライブラリ不要でアプリサイズを抑えつつ、ネイティブ性能を最大限に活用しています。

写真はすべて端末内に保存

自撮り写真という個人性の高いデータをクラウドに送信しない設計にしました。Firebase等を使わず、path_providerでアプリディレクトリに保存するシンプルかつセキュアな構成です。

EXIFの回転情報を考慮した動画生成

スマホで撮影した写真はEXIF情報で回転が管理されています。ExifInterfaceで回転角度を取得してMatrixで補正してからエンコードすることで、縦向きの動画を正確に生成しています。

通知はタイムゾーンを明示指定

flutter_local_notificationsのzonedScheduleを使用する際、Asia/Tokyoを明示的に設定。main.dartの初期化時にtz.setLocalLocationで日本時間を固定し、確実に指定時刻に通知が届く設計にしています。

まとめ

FlutterとAndroid Studioを使って、アイデア出しからGoogle Play公開まで一通り対応しています。Flutter自体はUIの構築が速く、個人・業務アプリ開発との相性が良いフレームワークです。

「Androidアプリを作りたい」「既存のWebサービスをアプリ化したい」といったご相談もお気軽にどうぞ。

Androidアプリ開発・Web制作のご相談はこちら

お問い合わせ →

名前を入れると必殺技が出てくるWebツールを作った話

WordPressに重大なエラーが発生した時の対処法【症状別に解説】