SwiftUIとFirebaseで旅行者のためのSNSアプリ作ってみた
SwiftUIとFirebaseで旅行者のためのSNSアプリ作ってみた
はじめに
今回はSwiftUIとFirebaseを使って初めて自分の考えたアプリを作ってみたので、学んだことを記事にしたいと思います。(初心者の学生が作ったものなのであまり有益な情報が書けるかは自信がありませんが、、、)自分と同じような初心者の参考になれば幸いです。
最近は生成AIもかなり性能が良く頼りになるので、ある程度読んでコードが理解できるならガンガン使っていくと作業効率が爆上がりすると思います。(私も初心者なのでかなり頼りました)
記事の構成
- 作成したアプリの説明
- 使用した技術
- コードを書く前に行ったこと
- コードについて
- コードを作成するにあたって苦労したこと
- Firebaseの導入について
- リリースの手順について
- 終わりに
1. 作成したアプリの説明
このアプリ「TraveLink」は、旅行者と現地の人が繋がり、一緒に旅行の計画を作成したり、旅についての豆知識などを投稿できる機能をつけたアプリです。
ユーザーのロケーションを確認してお互いがフォローするとチャットができるようになります。
フォローしているユーザーを共同編集者にすることで旅行の計画を一緒に編集することができます。
Tips投稿機能で旅の知識を共有できます。
2. 使用した技術
今回はタイトルの通りSwiftUIとFirebaseを使って作成しました。
自分はバックエンドの知識はほとんどないので、その周りの知識がなくても使用できるFirebaseを採用しました。
3. コードを書く前に行ったこと
自分は情報系の専攻なのでC, Java, Python, SQLiteなどを多少学習していたので、SwiftUIの勉強は簡単な文法とUIの構造について勉強したぐらいで制作に取り掛かりました。
個人的に座学で勉強していくのがあまり得意ではなかったため、基本的につまずいたらChatGPT先生に教えてもらいながら作成するスタイルで作成しました。(プログラミングそのものが初めての場合はもう少し勉強したほうがいいかも?)
4. コードについて
手探りで作成した汚いコードなのでほとんど参考になりませんが、一応Githubのリンクを貼っておきます。
5. コードを作成するにあたって苦労したこと
コードの作成はChatGPTやClaudeに頼ることも多かったですが、アプリの構造全体を覚えさせるのはなかなか難しく、作成してもらったコードをうまく連携させる部分でたくさんつまずきました。
個人的にSwiftは型の扱いに慣れるまで時間がかかりました。(OptionalとかUnwrapとか、、)そのあたりもう少ししっかり学習しておけばよかったです。
また、Viewの構造についての理解が浅いせいか、画面遷移時の関数呼び出しや値の受け渡しなどには苦戦しました。
6. Firebaseの導入について
Firebaseの導入は手探りでしたが、基本的には公式ドキュメントに書いてある手順で問題なく実装できました。私が使用したのは以下のサービスです:
- Cloud Firestore: データベース全般
- Authentication: ユーザー認証
- App Check: 不正防止
- Cloud Storage: ユーザーのプロフィール画像などの保存
- Cloud Functions: メッセージの通知送信
- Cloud Messaging: 通知関係
7. リリースの手順について
ここが想像以上に苦労しました。リリースするのはもちろん初めてなので、自分なりの完成品をとりあえず審査に出してみるわけですが、とことんリジェクトされました、、、
具体的にリジェクトされたところは:
- サインアップできない(そんなことはないはずだけど、、)
- スクリーンショットが説明不足
- プロジェクト名とアプリ名が違う
- ユーザーアカウントを実装するアプリでは、ユーザーの報告、ブロック機能を実装しろ
- プライバシーポリシーに同意させろ(プライバシーポリシー作りました)
- EULAに同意させろ(利用規約を作りました)
これらに対応するのに想像以上に時間がかかってしまいました。
8. 終わりに
作ってリリースまでしてみての感想ですが、初めての作品にしては少し重たいものを作りすぎたかなと反省しています。そして後悔したこととして、ユーザーがいて成り立つサービスは初心者には早かったなということがあります。
ですが、データベースの扱いやアプリのUI作成にあるViewの操作などを学べたことは非常にいい経験になりました。また今後何か面白いアイデアが浮かんだら作成したいと思っています。
その時は今回の経験でスムーズにリリースできるかもしれません。気になったらぜひダウンロードして使ってみてください!
Discussion