Kotlin Fest 2024に参加してKMP関連の情報を沢山得てきた感想

こんにちは。今回は感想記事になります。

本記事のContextとScope

  • 本記事は、モバイルアプリ開発においてKMPを使えるか調査するという目線での感想記事になります。

  • 登壇者の発表資料には触れませんので、正確な内容につきましては登壇者様の公式情報をご参照ください。

  • 個人の感想レベルなので、ご参考にされる場合はその点をご留意いただけますと幸いですm(_ _)m


Kotlin Festって?

  • Kotlin Festは、Kotlinに関する技術カンファレンスです。

KMP: Kotlin Multiplatformって?

  • KMPは、Kotlinを使って複数のプラットフォーム向けにコードを共有できる技術です。


感想

1. 安心感が出てきた

色々な発表を拝見していて、事例も増えてきて安心感が出てきましたね。
UIやデバイスに近い機能は actual の作り込みが多く必要で課題がありますが、ドメイン、通信、ストレージ、うまくやればUseCase class位までは、周辺ライブラリも含めて機能が充実しており、問題なく共通化できそうです。

2. 組織導入への課題

  • iOSエンジニアにとっての学習曲線の高さ(組織方針の意思決定が必要)

  • KMP化する範囲(インフラ層やドメイン層は良さげ、UI層は厳しい印象)

  • 運用(バージョニング、コード管理、プルリク管理)

3.現時点でKMPのMobile向け技術スタック

今回、拝聴させて頂いたセッションの内容を基礎に、自分なりにGPTと壁打ちして得た結論は以下です。

すべてのライブラリを結合した際の技術的な検証はできていないので、その点はご注意ください。

僕自身、今後、業務や個人開発を通して知見を得ていこうと思います。
何か分かったら随時発信します。

  1. ネットワーク

    • Swagger + OpenAPI Generator + Ktor

      • 前者のコード自動生成は、チームでパフォーマンス出す文脈で効果的だと考えました。

      • 自動生成を主体に、個別カスタムしたい場合はKtorをダイレクトに使う感じかなと。

      • 参考:

        • 2024年版 Kotlin サーバーサイドプログラミング実践開発 by 竹端 尚人

  2. DI

    • Koin

      • ただ、KtorからDIが出るとツイートされている方もいらっしゃるので、個人的には少し様子見かなと思います。

      • 参考:

        • 2024年版 Kotlin サーバーサイドプログラミング実践開発 by 竹端 尚人

  3. DB

    • Room

      • Realm, SQDelightと迷ってGPTと壁打ちしました。

      • Realm vs SQDelightについては、より直感的な点で前者。

      • Realm vs Roomについては、なるべく公式を使うという目線で後者。

  4. テスト

    • Kotest

      • Specを継承したテストだと、BDDスタイルのテスト記述がやり易くなりそうだなとイメージしました。

      • 機能も沢山あるので純粋に便利そうです。

      • 参考:

        • 2024年版 Kotlin サーバーサイドプログラミング実践開発 by 竹端 尚人

        • まだ JUnit を使ってるの? kotest を使って快適にテストを書こう by 川田裕貴

  5. IO

    • Okio

      • 今回のセッションにすべてが詰め込まれているのでそちらをご参照頂ければと。(すごく勉強になりました)

      • 参考:

        • Okioに愛を込めて by RyuNen344

  6. 例外設計

    • Arrow-kt

      • 関数型プログラミング観点で例外処理をサポートしてくれます。

      • 以下の設計が前提となります。

        • 『予期する例外、予期しない例外』

        • 『技術的な例外、ビジネスドメインの例外』

        • この4象限に分けたのち、それを全域関数的にハンドリングする事で抜け漏れを防ぐ

      • 参考:

        • 例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する by 杉本将来

  7. JSONシリアライズ/デシリアライズ

    • Kotlinx Serialization

      •  公式のライブラリであるため、こちらを採用するのが良さそうですね。

    • Moshi

      • Kotlinデータクラスとの相性が良く、直感的なシリアライズ/デシリアライズが可能。軽量で高速。(by GPT)

参考にさせて頂いたセッション一覧

どのセッションも本当に素晴らしく、心から感謝いたしますm(_ _)m 

読んでいただき、ありがとうございました

ご感想、ご意見あればXなどでお聞かせくださいませ。

https://x.com/taa9148

この記事が気に入ったらサポートをしてみませんか?