写真共有アプリ「GroupSnap」をリリースしました
写真共有アプリ「GroupSnap」をリリースしました!
どんなアプリか
連絡先を交換せずともグループに参加だけしていれば写真の交換ができるアプリになっています。
作成したグループに参加しているユーザーは写真をみて簡単に保存することができます。
なぜ作ったか
作った理由は「写真の交換には連絡先を交換しなければいけない」という問題を解決したかったからです。
例えば、学生時代の同窓会をしたとしましょう。
久しぶりに会うメンバーと写真とったり集合写真をとったりしたときに写真が自分まで回ってこないということがよくあると思います。
なぜそんなことが起こるかというと「全員が必ずしも連絡先を知っている可能性は低いから」です。
でもこのアプリはあらかじめ作成したグループに自分から参加すれば写真を保存することができるようにしました。
グループ名の検索だけでグループに参加することもできます。
「Save」ボタンを押すと写真を保存することができます。
使った技術
ここからは、エンジニア目線のことになりますが、システム構成について話たいと思います。
・バックエンド:Firebase
・言語:Kotlin
とりあえず、個人開発の味方Firebaseを採用しました。
保存されているデータは「Cloud Firestore」に保存し、投稿された画像は「Firebase Storage」に保存してダウンロードUrlを生成してURLをFirestoreに保存しています。
Firestoreはデータ構造はどうしたかは今回は割愛しますが、下記の記事を参考にして自分なりに考えて実装しました。
この記事ではRealtime databaseにデータを保存していますが、基本的に同じ考え方で実装してなんら問題ないと思います。
また、Push通知も実装しました。
ターゲッティングしたPushはまだ実装できていませんが、全体にPush通知を送る処理は実装しました。
アプリ開発を通して
個人アプリ開発でたくさんの経験をすることができました。
普段Androidエンジニアとして仕事をしていますが、このアプリ開発で一つレベルアップできた気がします。業務での実装スピードが格段にあがったと実感しています。
また、Firebaseをがっつり使えたのもいい経験になりました。
最初はかなり戸惑ったこともあったんですが、慣れればFirebaseは本当に素晴らしいサービスだと思います。
これなら少人数で大規模アプリの運用もできるんじゃないかと思っています。
このアプリでマネタイズするようなことは一切していません。
「最後まで作りきった」というお金では買えないいい経験ができたとおもっています。
これからこのアプリをどうしていくか
一旦はFlutterでこのアプリを書き換えたいと思います。そもそも今のアプリではAndroidユーザーにしか使えません。それだといろんなユーザーをカバーできません。
Swiftを使ってiOS版を開発してもよかったんですが、自分ひとりで両OSメンテナンスするのが大変なので、1ソースで動かすことができるFlutterの採用を決めました。
今後致命的な不具合以外は修正することはできないかもしれませんが暖かくみていただければと思います。
なぜFlutter??React Nativeでいいのでは?
もちろん「React Nativeでよくね?」ということもいわれそうですが、下記の理由でFlutterを採用しました。
・自分はどうしてもCSSが苦手でうまくできる気がしない
・FlutterはIDEに使い慣れた「Android Studio」が使える(もちろんiOSでもAndroidStudioで動かせる)
正直いうと下のAndroid Studioが使えるというのが一番大きな理由です。
Flutterはまだまだ情報が少ないですが、StackOverflowの活発さからみて確実に流行りがきていると思います。
技術的な記事はQiitaに投稿しますのでよろしければどうぞ
本当はもっとつけたい機能はたくさんあって、例えばグループの公開/非公開設定、グループ内チャット機能、ユーザーが所属グループに対して何かPush通知を送れる機能.....etc
まだまだやりたいことはたくさんあるのでこれからも暖かく見守っていただければと思います。
以上、最後まで読んでいただきありがとうございました。
投げ銭はいりません。それより無料でできる拡散をしてください!! 感想をツイートしていただけることが一番嬉しいです!!