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

KMPを使ってみて感じた良いところ・ツラいところ

Ryu-nakayama
October 05, 2023

 KMPを使ってみて感じた良いところ・ツラいところ

stmn#2の登壇資料です

Ryu-nakayama

October 05, 2023
Tweet

More Decks by Ryu-nakayama

Other Decks in Programming

Transcript

  1. 自己紹介 中山 龍 (なかやま りゅう) • Chatwork株式会社 ◦ iOSエンジニア ◦

    2023年4月 新卒として入社 ◦ 社内最年少 (2002年6月生まれの21歳) • 愛知県在住 ◦ フルリモート勤務 ◦ 最近名古屋市内に引っ越しました 2 @ryu_develop
  2. メリット ネイティブの特徴 8 デメリット • 標準のUIやOSの新機能を使える ◦ OSによって提供される最新機能も 使用可能 •

    高いパフォーマンスが期待できる • 各OSでの開発が必要 ◦ iOS/Androidに合わせて2つ作成す ることが必要となる ◦ 各OSで開発者に必要な技術が統一 できない
  3. メリット クロスプラットフォームの特徴 11 デメリット • 1つのソースコードで各OSの開 発ができる ◦ ネイティブでの開発と比べて開発 コストが低く済む

    • OSの機能や最新技術が利用できない場 合がある • 複雑な機能には各ネイティブのコード を書く必要がある場合がある • ネイティブに比べてパフォーマンスが 落ちる場合がある
  4. 実装してみる題材 • UIにはそれぞれ以下のもので実装する ◦ iOS: SwiftUI ◦ Android: Jetpack Compose

    28 TODOアプリを作る • TODOを一覧表示でき、新規に追加ができる ◦ 入力欄に文字を入力し、追加ボタンを押す • TODOの達成・未達成を切り替えることができる ◦ 表示されているTODOの横のアイコンをタップすることで切り替えられる iOS / Androidどちらも実装する
  5. OS間も含めた『コードの重複』を減らし、高い変更容易性を実現 できる 󰢏良いと思ったところ2 39 共通化した部分は仕様の変更が楽 • TODOの表現を変える ◦ ex)『期限』を追加する •

    TODOの振る舞いを変える ◦ ex) 『削除』を可能にする といった変更が今後あったとしても... KMP(Kotlin)で共通化したコードを変更するだけで変更を実現可能
  6. 󰢃ツラいところ1 40 iOS側では型が期待したものではない また、KotlinArrayの要素数すら、型はIntではなくInt32 KMP(Kotlin) Swift Int Int32 Array<T> KotlinArray<T>

    一部を挙げると、以下の表のような型になってしまう SwiftからKMPを呼び出した際の型がなかなか不自由... この問題を解消するために何かしら手を打たないとツラい