Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【iOSDC登壇】Kotlin Multiplatformを軸にした技術戦略

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for ディップ株式会社 ディップ株式会社 PRO
September 13, 2026
500

【iOSDC登壇】Kotlin Multiplatformを軸にした技術戦略

Avatar for ディップ株式会社

ディップ株式会社 PRO

September 13, 2026

More Decks by ディップ株式会社

Transcript

  1. VISION “Labor force solution company” ⼈材サービスとDXサービスの提供を通して、労働市場における諸課題を解決し、 誰もが働く喜びと幸せを感じられる社会の実現を⽬指します。 ⼈材サービス事業 DX事業 Human

    work force solution Digital labor force solution × ユーザーファーストな独⾃機能を搭載した、 求⼈情報‧⼈材紹介サービスの提供を通じて、 ユーザーの就業課題を解決しています。 バイトコミュニケーションアプリ『バイトルトーク』や、 機能を絞ったシンプルなSaaS型の『コボット』を通じて、 職場環境やコミュニケーション課題を解決しています。
  2. dip_tec h | ビジネスに貢献するディップのエンジニアの挑戦 事業戦略とアーキテクチャの「ズレ」を解消すべく 24年のプロダクト『バイトル』のフルリニューアルに挑戦中 As Is (クロスセル構造に対応したシステム) To

    be (アップセル構造に対応したシステム) 統合基盤 商品A 商品B 商品B ID-A ID-B ID-C 商品 A 商品 B 商品 B 統合ID 各プロダクトが独⽴した「単品」管理 統合基盤による「パッケージ」管理 ✔ 各プロダクトが独⽴した「単品」管理 ✔ 統合基盤による「パッケージ」管理 ✔ 連携は「都度つなぎこみ」でコスト⼤ ✔ 機能は「標準装備」で切り替え⾃在 ✔ 顧客体験:バラバラのID‧管理画⾯ ✔ 顧客体験:単⼀のID‧統合ダッシュボード Copyright © DIP Corporation, All rights reserved.
  3. Kotlin Multiplatform (KMP) について • Kotlinで実装したコードを、iOSとAndroidで共有できる仕組み • ロジックの⼀部からUIまで、共有範囲を選択できる • iOS向けには、Kotlin/NativeによりKotlinコードをFrameworkと

    してビルドします • このときKotlinの型はObjective-C互換のAPIとして公開されます ※Objective-Cを介さずSwift向けに直接公開するSwift exportもAlpha版 として提供されていますが、今回は従来のObjective-C interopを前提 としています。
  4. 求⼈サービスを⽀える業務ルール 応募できる条件 会員状態 年齢‧職業の制限 WEB∕TEL応募の可否 外部サイトへの応募 応募に必要なプロフィール項⽬ … 会員/ゲストによる応募処理 認証エラー時の振る舞い

    退会時のデータ処理 ログイン後のユーザー情報同期 … 求⼈検索 履歴‧お気に⼊り 職種階層の整理 駅‧沿線の選択条件 エリアの選択条件 フリーワード検索条件 検索条件の保存 … 履歴‧お気に⼊りの保存件数‧保持期限 掲載終了求⼈の削除 同じ履歴‧お気に⼊りの重複防⽌ 保存済みの検索条件の求⼈件数の更新 …
  5. ユーザー⾏動のトラッキング要件 計測要件 計測⽤パラメータの構築 ‧画⾯‧OS固有の情報 ‧会員プロフィール情報 ‧求⼈‧職種情報 ‧検索条件 … ⽬的 サービス利⽤状況の分析

    広告効果の計測 計測条件‧タイミングの制御 ‧画⾯の表⽰ ‧応募等のコンバージョンにつなが るアクション ‧アプリのライフサイクル … 求⼈のレコメンド Push通知の配信
  6. 本プロダクトにおけるKMP継続判断 判断軸 OS別に実装 KMPで共有 主要な業務ロジックを単⼀実装で維持できる ✕ ◯ 各OSに適したUI/UXを維持できる ◯ ◯

    各OSの開発⾔語‧開発環境で扱いやすい ◯ △ iOS‧Androidの開発者が共同で保守できる △ ◯ ◦:満たせている ⻘字:優先する価値 △:⼀部課題あり ×:満たせていない
  7. 補⾜: KMPをフレームワークとしてexportする際の制約 複数KMPモジュールを別々のXCFrameworkとしてexportし た場合、共通する依存が複製されてしまう‧‧ 公式ドキュメント(※)で推奨されているumbrella module // ios-export/build.gradle.kts kotlin {

    val xcframework = XCFramework("Shared") の⽅式に従い、1つのフレームワークに集約 } listOf(iosArm64(), iosSimulatorArm64()).forEach { it.binaries.framework { baseName = "Shared" isStatic = true xcframework.add(this) // shared + tracking を1フレームワークに集約 export(projects.shared) export(projects.tracking) } } sourceSets { commonMain.dependencies { api(projects.shared) api(projects.tracking) } } ※「Swift package export setup — Exporting multiple modules as an XCFramework」: https://kotlinlang.org/docs/multiplatform/multiplatform-spm-export.html#exporting-multiple-modules-as-an-xcframework 「Choosing a configuration for your Kotlin Multiplatform project」: https://kotlinlang.org/docs/multiplatform/multiplatform-project-configuration.html