発表: if(app == iOS)以外の選択肢

自己紹介

名前: @kashihararara (かしはら) 
所属: ウォンテッドリー株式会社
趣味: 競技プログラミング (AtCoder 緑)
(⚠️ 発表中に子供の声が入る可能性があります🙇‍♂️)

目次

  1. if(app == iOS) とは
  1. 背景
  1. 分岐を行う3つの手法
  1. if (app == iOS) の利用
  1. 意味的バージョニングでの multi branch 運用
  1. FeatureFlag の利用

if(app == iOS) とは

クロスプラットフォーム技術を用いた iOS と Android の共通ライブラリを作る場合にしばしば書きたくなる if 文 (式) です
主に iOS の挙動のみを変更したい場合に用いられます。

// Api.kt
override suspend fun getUsers(): [User] {
    return getUrl("/users") {
        if (app == iOS) {
            queryParameter("include_frozen_user", 1)
        }
    }
}

個人的にこのようなコードは環境依存になるので望ましくないと思っていたのですが、つい先日どうしても書く必要に迫られてしまいました。

今日はこの if(app == iOS) と他の選択肢について検討した話をします。

背景

Wantedly では Wantedly Visit というサービスを運営しており、モバイルアプリを iOS/Android それぞれに開発・リリースしています。

モバイルアプリでは Kotlin Multiplatform for Mobile (KMM) の導入を行っており、Kotlin で書いたクロスプラットフォームのコードを Android, iOS それぞれのアプリで利用しています。

クロスプラットフォームの適用範囲としては View 以外の部分となります。


さらにクロスプラットフォームの利点を最大限活用するため、開発は次のような方針で行われます。

  • 2つの OS で同時に1つの機能を開発しない
  • 一方で先行して機能を開発・デバッグを行い、その後もう一方を後追いで機能を開発する。