はじめてのモバイルアプリを作り始めて
Published at
2025/03/25
Updated at
2025/03/25
Written by
marromugi
人生で一回は自分のプロダクトを作ってリリースしてみたい!ということで、React Native(Expo) を触ってみています。
モバイル周り以外も色々触ってみたので、その内容をざっくりメモしてみます。
React Native
初めて触りました。
元々 Swift で軽くアプリを作ってみたことはあったのですが、もう3年くらい前のことでほぼ覚えていなかった(Swift UI がリリースされた初期だったので、その辺の学習し直しも必要)ので、普段の Web とそんなに変わらない React Native で実装に挑んでみています。
今は iOS のリリースのみを視野に入れていたり、WebViewなどデバッグが大変そうな部分をあまり触っていないこともあり、大きくつまづくことなく進められています。
普段 tailwind css を利用していることもあり、バリアントに基づいたコンポーネント設計がしたいなと思い、その辺の util を実装したりしてました。
実機デバッグしようと、Expo Go 経由でインストールしてみたのですが、この辺の証明書まわりが大変でした。Apple の証明書まわりの仕様をざっくり読み込んで、p12ファイルなどを作成しました。
この辺は自分の整理のためにも、今後記事に残していこうと思います。
Hono(Cloudflare Workers / D1)
Hono は最近よく使っていますが、モバイルのAPIとして今回の利用しています。
Hono RPC を利用して型を共有できるので、モバイルからAPIを叩くときも型安全にできていい感じです。Wrangler のおかげでデプロイや D1 などのリソースへのバインディングも簡単にできて本当に助かっています。
D1 は使ってみると制約が厳しく、
- Transaction が使えない
- 最大容量が 10 GB
など、今後乗り換え必須な感じはしています。ですが、費用面でも無料枠があるDBで、割とポンポン建てられるので、使う範囲が狭い & そんなに複雑じゃない個人開発をする時には助かっています。
Cloud Run
一部のAPIで、Nodejs の API を利用する必要があり、Worker 上では対応できないため CloudRun にデプロイしています。
今回はモノレポで各サービスを繋いでいるのですが、Docker Image のサイズが 1GB 近くになってしまったので、どうしようか色々調べてました。
というのも、先ほど言及した Hono RPC で型を共有しており、この型をビルドするには API 全部をビルド対象として含める必要があるため、必要なのは型だけなのに、APIの実態として必要なモジュールは全てインストールする必要がありました。
マルチステージビルドでビルドした型だけ node_modules 配下に配置、その後再ビルドみたいなことができるのかも?と思いましたが、うまくいかず一旦保留。
叩いているエンドポイントが少ないこともあり、一旦はビルドした型を手動でプロジェクト内に配置しています。
OpenAPI に乗り換えたり、はたまた Dockerfile をいい感じに描き直すか改善が必要です。
あとは CloudRun にカスタムドメインを当てようと思ったのですが、レイテンシが少し気になるような指摘(少し前なので今は改善しているのかも)があったので、その辺も考慮が必要そうです。
今はモバイルなので、Cookie のポリシーまわり(WebView は別ですが)をがっつり考えなくてもいいのですが、Web 版をリリースする際は Cross-Origin 周りで認証用のトークンがうまく送れないことが懸念されます。
その場合は、Cloudflare Worker 等でプロキシすることで Cookie のトークンを Authorization に付与するような実装をしようかなと考えています。
おわり
プッシュ通知周りの実装や、ビルドしたアプリの配布元を変えてみたり 、色々やってみたいことがあるので、今後も細々と実装していきます。
