はじめに
人生初の個人開発したiOSアプリをリリースすることができました!
開発期間は約1年半かかってしまいました。。。
原因として、仕事に余裕がある時は平日にも開発したりしてましたが基本的には、やる気がある週末に集中して作業してたりしてたので時間がかかりました。
途中、やる気が0になり実装中断時期もあったことを踏まえるとよく持ち直したという感じです。
リリースしたアプリ
アプリ名Clan(クラン)というゲームユーザーを探すためのマッチングアプリを作りました。
UI
画面はざっくりと以下のような感じです。
左からユーザー一覧画面 <-> プロフィール画面 <-> メッセージ画面 |
---|
|
きっかけ
作り始めたきっかけとして、弊社に社内勉強会があるのですが、そのネタ作りのために作り始めました。
UIを作り終える前に私の発表日を迎え、その時の勉強会ではUIの紹介くらいしか発表できませんでした。。。
しかし、勉強会発表後もリリースまではやり遂げよう
ということだけをモチベーションに開発し続けて、この度リリースしました🎉🎉
そして ゲームユーザーを探すためのSNS
というテーマにはこだわりがありません。なんならゲームも普段しません(笑)。
ただ、人と人をマッチングさせるサービスを作りたい
という思いはありましたので、このテーマに落ち着きました。
使用した言語、ライブラリ
せっかくの個人開発アプリなので、自分が好きな技術、学びたい技術に拘りました。
(休みの時間を使うのだから好きな技術にしたい!)
フロントエンド
-
SwiftUI
=> 仕事ではiOS案件自体に携わったことがなかったのですが、アプリを作り始めた頃にSwiftUIが発表されて宣言的UIに魅力を感じたので採用しました。 -
Kotlin Multiplatform Moblie
=> 弊社でKMMを採用していた事例もあり、興味があったので採用しました。
正直なところ、後からプロジェクトにKMMを追加したこともあってAPIクライアント、モデルくらいしかKotlinで書けていません。。。
(サーバーサイドもKotlinで書いたのでAPIレスポンスのdata classなどを使いませたのでほんの少しは恩恵があったかもしれない。今後に期待。) -
Firebase(FireStore、Crashlytics、FirebaseUI、Storage)
=> 工数を削るため && 使ってみたかったライブラリを採用しました。
バックエンド
-
サーバーサイドKotlin(Ktor/exposed)
=> Ruby on Railsは仕事を通じて実装経験があったのですが、Ruby以外の言語でサーバーサイドを実装してみたいという興味本位でKotlinにしました。 -
AWS
=> AWS/GCP/Azure等どれでもよかったのですが、仕事で触れる機会が多いAWSを採用しました。無料利用枠を前提にデプロイしているので一年後が怖いです😇 -
Firebase(Authentication)
=> 認証周りで使用するため採用しました。
辛かったこと
1. 本当は男女をマッチングさせるマッチングアプリを作りたかった
今年ぐらいまではPairsのようなアプリを予定して作っていたのですが、途中で的身分証明書による本人確認を実装することが必須なことを知り、断念しました。異性を紹介するサービスは調べれば調べるほど個人レベルでは厳しいという知見を得ました。
2. アプリのテーマに興味が持てなかった
ゲームユーザーを探すためのSNSアプリ
というテーマに興味がなかったためモチベーション維持が辛かったです。
個人開発は自分に近いテーマを選ぶことの大切さを実感しました。
3. 使い慣れた技術以外で開発したため学習コストが高かった
学習コスト分開発期間が伸びてしまいましたが、個人開発なのでオールOKです(笑)。
実装以外の、App Store申請フローは仕事だと触れる機会が少なく無知だったため腰が重かったのですが学べてよかったです。
4. iOS開発時に私物2015年製macbookのファンが鳴り止まないこと
Xcodeのpreviewのせいかファンがうるさいことがストレスでした。早く新型のmacbook発表されないかな〜。
おわりに
大変自己満足なアプリに仕上がってしまったのですが、技術的には、興味があったものを中心に採用できたので自己成長へと繋げられたのでよかったです。
今後の展望として、自己満足を満たすためだけにApple Developer Programへ1万円弱を払ったのが悔しいのでもう少しアップデートしていけたらと思ってます。