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

せめて、ネイティブらしく

Avatar for RyuNen344 RyuNen344
November 01, 2025
220

 せめて、ネイティブらしく

Kotlin Fest 2025

Compose Multiplatform for iOSがStableとなり、iOSアプリをKotlinだけで開発する選択肢が、現実的な視野に入ってきました。

しかし、過去の歴史が示すように、マルチプラットフォーム技術は常に諸刃の剣です。
事業やチームの変化により、いつかその技術から「撤退」する日が来るかもしれません。
本セッションでは、この予期せぬ「撤退戦」までを考慮に入れた技術選定の重要性を提起します。

トーク内容
* マルチプラットフォームにおける「共通化」の功罪
* なぜ技術選定で「撤退戦」を考慮すべきなのか?
* Compose MultiplatformとKotlin Multiplatformの現在地
* 撤退シナリオから見る、Kotlin Nativeの真価 Kotlin+UIKitの組み合わせ
* 変化の時代における、プラットフォーム専門家が活きる技術選択の指針

Avatar for RyuNen344

RyuNen344

November 01, 2025
Tweet

Transcript

  1. About Me • Bunjiro Miyoshi (id: RyuNen344) • Kodee͘Μͷ͵͍͙ΔΈ͸3ͭɺΩʔϗϧμʔ͸4ͭ •

    Kodee͘Μݟ͔͚ͨΒͥͻ #KodeeEverywhere ͷϋογϡλάΛ͚ͭͯᄁ͖Λʂ
  2. ⚠ Caution ⚠ • Kotlin/Native͸ϦεΫϔοδ͕ޮ͘બ୒ࢶͰ͍͍ͧɺͱ͍͏࿩Λ͠·͢ • ٕͨͩ͠ज़બఆʹۜͷ஄ؙ͸ͳ͍ • ࣄۀϑΣʔζɺνʔϜମ੍ɺशख़౓ͳͲ༷ʑͳม਺Λߟྀܾͯ͠ఆ͢΂͖ •

    Kotlin/NativeҎ֎ͷબ୒ࢶΛ൱ఆ͢Δҙਤ͸ͳ͍ • KMP΍CMPΛಋೖݕ౼͢ΔࡍʹɺͲΕ͙Β͍Kotlin/Native͕ϦεΫϔο δʹ໾ཱ͔ͭͱ͍͏؍఺ͰࢀߟʹͳΕ͹ϋοϐʔ
  3. ఫୀઓ͸೉͍͠ • αϯΫίετͷढറ • ࠷దղͷมԽ • ֶशίετɾ։ൃίετͷ৺ཧతϋʔυϧ • ݱঢ়ҡ࣋όΠΞε •

    අ༻ରޮՌͷ൑அ • ݱঢ়೺Ѳͷ࿪Έ ϑϧϦϓϨΠε͸ك ݱ࣮తʹ͸ஈ֊తͳఫୀઓͷ܁Γฦ͠ • ΰʔϧઃఆͷ೉͠͞ • ৽چٕज़ڞଘʹΑΔೝ஌ෛՙ • ϝϯςφϯείετ૿Ճ • Ϧιʔεͷ෼ࢄ
  4. Swift on Android Studio • SwiftपΓͷIDEαϙʔτ ͕ڧԽ • Swift Package

    Manager ͷೝࣝ • ίʔυδϟϯϓ/ิ׬ɺ OKʢ3rd partyෆՄʣ
  5. Case.3 Interop: Alamo fi re • Alamo fi re/Alamo fi

    re • NSURLSessionΛϥοϓ͢ΔSwift ޲͚ͷϥΠϒϥϦ • androidͰ͍͏ͱ͜ΖͷOkHttp
  6. Case.3 Interop: Alamo fi re • >For example, you can

    use CocoaPods integration or set up a cinterops con fi guration. • https://kotlinlang.org/docs/native-c-interop-stability.html#third-party- libraries • CocoaPods͸Read-OnlyʹͳΔ͜ͱ͕Ξφ΢ϯε͞Ε͍ͯΔͨΊSPMΛ࢖༻͢Δ
  7. Case.3 Interop: Alamo fi re • `src/nativeInterop/cinteropʹ<interop-name>.def`Λ഑ஔ͢Δ • https://kotlinlang.org/docs/native-de fi

    nition- fi le.html • build.gradleͰcinteropઃఆΛߦ͍ɺcompiler opt, linker optΛઃఆ͢ Δ
  8. Case.3 Interop: Alamo fi re • Alamo fi reͷAF͕ݟ͔ͭΒͳ͍ •

    Swift޲͚ϥΠϒϥϦͷଟ͘͸Obj-C༻ϔομʔΛఏڙ͍ͯ͠ͳ͍
  9. Kotlin/Native΋ۜͷ஄ؙͰ͸ͳ͍ 1. Swift FrameworkΛݺͼग़ͤͳ͍ • औΓࠐΉʹ͸ϥούʔ࣮૷Λߦ͍, ObjC HeaderΛੜ੒͢Δඞཁ͕͋Δ • ϥούʔ࣮૷ͷ೉౓͸େ෯ʹԼ͕͍ͬͯΔ͕खؒ͸͔͔Δ

    • ௚઀APIΛݺ΂Δͱ͍͏ڧΈ͕ബΕΔ 2. ObjCͷͳ͍/ඇਪ঑ͱ֦ͯ͠ு͞Εͳ͘ͳͬͨPlatform API/Framework͕͋Δ 3. Kotlin/Nativeͷػೳ੍ݶ • Obj-CͷαϒΫϥεΛExportͰ͖ͳ͍ͳͲݴޠػೳతͳ੍໿ • Τϥʔͷ఻೻͕൥ࡶ
  10. EOF