iOS/Android SDK開発にKotlin Multiplatform Mobile(KMM)はハマりそうなのでやっていきたいという話

現職では基本的にバックエンド開発をしていましたが、最近Android SDK開発にデビューしました。
まだまだキャッチアップしてる途中ですが、タイトルの通りKotlin Multiplatform MobileはSDK開発にハマりそうなので取り組みたいと思っているという話です。

KMMは公式に以下のような記述がある通りUIの共通化は行わず、ビジネスロジックを共通化する点が最大の特徴だと思います。

Write the business logic for your iOS and Android apps just once, in pure Kotlin

いわゆる一般的なモバイルアプリでも、クロスプラットフォーム開発におけるOS毎の分岐や最適化を考え出すと直面する辛みを考えるとKMMは魅力的な選択肢だと思いますが、SDK開発においてはよりフィットするなと感じています。
SDKでもUI関連の要素が強いと話は変わりますが、今関わっているのはID連携のためのSDKで、ログイン画面などはありますがコードベースにおけるUIに関するコードの割合は高くないです。
さらに何だかんだ似たようなロジックも多い(IDTokenの検証周りとかUserInfo APIのコールとかレスポンスのハンドリングとか)ので、ビジネスロジックの共通化出来る箇所はそこそこありそうなのも嬉しい点です。

後は弊チームの事情ですが、SDKに加えてID連携システムのバックエンドも同じチーム・メンバーで開発していて、かつサーバーサイドKotlinな事もあり、iOS SDKを触っているメンバーがKotlinを書くことへのハードルも元々低いのもプラスの要素です。
この辺りの共通化が上手くいくと、iOS/Android SDK開発に必要なコストが下がるだけでなく、言語面の不安もなくかつ純粋なビジネスロジックであれば、今はバックエンド開発しかやってないメンバーもSDK開発に入りやすくなりそうなのでその点も期待しています。
OSに依存するコードや処理はともかく、ID連携システムのバックエンド開発をKotlinでやっていたら、同じくKotlinでIDTokenの検証処理を書くのはスムーズでしょう。

そんな感じで、既存のiOS/Android SDKのコードを少しづつ置き換える形でKMMを導入するのは良い改善になりそうだなと思っています。
入社時にはMobileやりたいとは思っていましたし、共通化する範囲やレイヤー、そもそもKMM導入の障害要因がないのかなど詳細はまだ考えていないですが、Android Engineerとしても成果出すために来期はKMMの導入頑張ってみようと思っています、という話でした。

reference