• #mobile
  • #ios
  • #android
  • #swift
  • #kotlin
開発未分類メモ

背景

App Store と Google Play の両方にアプリを出したい。クロスプラットフォームの選択肢として React Native があるが、ネイティブ言語でそれぞれ書く方針にした。

各プラットフォームのネイティブ開発

iOSAndroid
言語SwiftKotlin
IDEXcode(macOS 専用)Android Studio(Windows/Mac/Linux)
UI フレームワークSwiftUIJetpack 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 回目以降はスムーズになる。