開発未分類メモ
背景
App Store と Google Play の両方にアプリを出したい。クロスプラットフォームの選択肢として React Native があるが、ネイティブ言語でそれぞれ書く方針にした。
各プラットフォームのネイティブ開発
| iOS | Android | |
|---|---|---|
| 言語 | Swift | Kotlin |
| IDE | Xcode(macOS 専用) | Android Studio(Windows/Mac/Linux) |
| UI フレームワーク | SwiftUI | Jetpack Compose |
React Native ではなくネイティブを選ぶ理由
共通で使うところは共通化しつつ、OS 特有のより優れた UI や API が提供されているなら、それをネイティブに使いたい。
React Native だと困る場面がある。
- OS のメジャーアップデート直後に新 API が使えない(ライブラリの対応待ちになる)
- ネイティブモジュールのブリッジでデバッグが複雑になる
- UI の微妙な挙動の違いを吸収するために、結局ネイティブコードを書くことになる
ネイティブなら、プラットフォーム固有の UI パターン(iOS のスワイプバック、Android のマテリアルデザインなど)が自然に使える。新しい OS 機能も Day 1 で採用できる。
開発の進め方
macOS で Swift / SwiftUI を使って iOS アプリを先に作り、そのビジネスロジックを Kotlin / Jetpack Compose に移植して Android 版を作る。
Swift と Kotlin は文法がかなり似ている。
// Swift
func greet(name: String) -> String {
return "Hello, \(name)"
}
// Kotlin
fun greet(name: String): String {
return "Hello, $name"
}
共通化する部分とネイティブで書く部分
共通化する部分(ビジネスロジック)
├── データモデル / バリデーション
├── API 通信の仕様
└── 状態管理のフロー
ネイティブで書く部分
├── UI / UX(SwiftUI / Jetpack Compose)
├── OS 固有 API(通知、カメラなど)
└── ストレージ / パーミッション管理
Windows 環境での注意点
- iOS アプリのビルドには macOS が必須(Xcode が macOS 専用)
- Android アプリは Windows 上の Android Studio で開発・ビルドできる
- iOS を先に macOS で作り、Android への移植を Windows で行うワークフローが現実的
Google Play への公開で必要なこと
コードの作成とビルドは自動化できるが、以下は手作業が必要になる。
- Google Play Console のアカウント作成(登録料 $25、本人確認)
- Play Console の Web UI でスクリーンショットやストア説明文の登録
- 署名鍵の管理
- プライバシーポリシーの用意
- 審査対応
初回はストア周りの手続きにアプリのコード自体より時間がかかることが多い。一度経験すれば 2 回目以降はスムーズになる。