思いのほか時間はかかりましたが、ようやくリリースできました。
以前まとめた記事はZennにあります。 👉 https://zenn.dev/hulk510/articles/my-first-service-mikke
今回は、Webで作っていたものをブラッシュアップして、アプリとしてリリースしました。
技術スタック
- React Native / Expo
- TypeScript
- Neon(DB)
- Zitadel(認証)
- Vercel
monorepo構成で作成していて、型の共通化なども行っています。
基本的にはReact Nativeで作成し、API部分はWebのコードをある程度そのまま流用できたので、比較的スムーズに移行できたかなと思います。このタイミングでZitadelへの移行も行ったりして、いろいろ詰まる部分があったので、どこかで共有できたらなーと思っています。
Claude使ってみた
今回はClaudeを使う機会があったので試してみました。
最初こそVSCodeに連携できるCopilotと勝手が違って戸惑いましたが、やっているうちにターミナルでやる方が便利になってきて、「vimをちゃんと使いこなせるようになりたいな」という気持ちも芽生えました。
アプリ開発、想像以上に大変だった
やってみて思ったのは、アプリ開発は想像以上に手間がかかるということ。
まず対応しなくちゃいけないことが多すぎる。
- 不適切なものを報告できるようにしろ
- スクリーンショットを用意しろ
- ログインできるようにしてテストデータも入れておけ
あとアプリ出すのに年で1万円くらいかかるし、とにかく高い。
Expoの無料プランではビルド回数に限界があるし、かといって課金プランもなかなかの金額。個人開発にはなかなか厳しい。
React Nativeの良いところ・微妙なところ
React Nativeは便利ではある反面、ネイティブの最新仕様に追従できないのが微妙だなと思いました。iOS 26のグラスデザインなんかも、ライブラリのバージョンがアップデートしても最新機能が使えない。
最初こそAndroid・iOS両方で開発してましたが、Mapあたりのネイティブ機能を使う時に両対応が大変になってきて、途中でAndroidは切りました。
そうなると、最初からSwiftUIとか特化して作ってもいいんじゃないかという気持ちにも少しなりました。うーん…まぁそのままTestFlightとかで配布できるので便利ですけどね。環境変数周りとかよくわからないし、OTA周りとかもどういう仕組みで動いているのか謎だし、小さなつまづきが多かった。
TSで書けるし、Webとコード共有できるのは便利。けどそれ以外に正直あまりメリットを感じませんでした。よほどAndroidも一緒に出したいとかいう用途がなければ、個人的にはそこまでTSに固執するメリットもない気がしています。
SwiftUIとかであればSwaggerさえちゃんと作ってあげれば、クライアント自動生成とかできるんですかね?そこら辺も調べてみたい。それができるなら無理にReact Nativeにする必要もない気がしてきた。
いつかAPIをSwagger自動生成してorvalとかで型生成して、TSでAPIクライアントを自動生成する仕組みも入れたいなーとは思っています。
まだできていないところ
GoogleのOAuth周りがまだテスト環境でのリリースになっていて、リンクできないことがしばしば発生しています。動いてはいるけど動いてないみたいな状態。
認証基盤にZitadelを使っていて、k3s上に構築しているんですが、これがなかなか大変でした。詳しい話は別の記事にまとめようと思います。
あと、投稿の日時を自由に変えられるようにしたい。昔撮った写真をアップロードした時はその時の日付の方がいい気がしていて、上げた日になるといつの思い出かわからないので。
リリースしてみて思うこと
正直、ちょっと燃え尽きた感がある。半年間頑張ってきて、リリースできたことで一定の満足感があった。
ここからどうやってユーザーを増やしていくかとか、マネタイズとか、全然考えられていない。まぁ無料で使えるし広告もないので、使いたい人が使えばいいかなーくらいの気持ちでいる。
現状ユーザーは周りの知人・友人が中心。アプリの性質上、ふとした時に写真を整理したいと思った時に使うものなので、頻繁に使われることもないかなーと思いつつ、まずはリリースできたことを素直に喜びたい。
これからのこと
ちょっと燃え尽きた感はあるものの、やりたいことはまだまだある。インフラ周りの改善や、個人開発と働き方についても考えていることがあるので、それはまた別の記事で書こうと思います。