Kotlin Multiplatform Projectを導入してみて
by
Yasuhiro Shimizu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Kotlin Multiplatform Projectを導入してみて
Slide 2
Slide 2 text
自己紹介 清水泰博 アプリ書いたり フロントエンド書いたり その他 の運営とか
Slide 3
Slide 3 text
今日話すこと 一人 一人のチームで で 新規アプリを作り コードはどれくらい共通化できたのか アーキテクチャをざっくり のメリット デメリット 上記を エンジニアの視点から
Slide 4
Slide 4 text
今日話さないこと についての基本的なこと 技術の詳細 気になった点があったらぜひ質問を
Slide 5
Slide 5 text
アプリについて
Slide 6
Slide 6 text
アプリについて ポイント管理 交換アプリ は 参照系メイン 更新系はごく一部
Slide 7
Slide 7 text
まずはこれ
Slide 8
Slide 8 text
コード内訳
Slide 9
Slide 9 text
KMP: 68% Android(Kotlin): 16% iOS(Swift): 16% と は古の社内ライブラリなので除外 レイアウトファイル等は除外 純粋なコードのみ 調べ
Slide 10
Slide 10 text
アーキテクチャ
Slide 11
Slide 11 text
レポジトリ構成 モノレポ を一つのレポジトリで管理 共通コードの読込方法考えたくない
Slide 12
Slide 12 text
CI それぞれで の設定をするだけ 向け 、 向け より軽量な の で とか実行
Slide 13
Slide 13 text
KMPコードのアーキテクチャ レイヤードアーキテクチャ プレゼンテーション層から下はすべて共通 ユースケース レポジトリ、リモート ローカルデータ 単方向データフロー な 一時的なイベントは別管理
Slide 14
Slide 14 text
ViewModelのI/F
Slide 15
Slide 15 text
ViewModelのI/F は から直接使うことができない
Slide 16
Slide 16 text
iOS向けのラッパー 向けには をコールバックに変換するラッパークラスを用意
Slide 17
Slide 17 text
iOS向けのラッパー 向けには をコールバックに変換するラッパークラスを用意
Slide 18
Slide 18 text
共通化できないコードを共通コードで使う 各 固有の機能とか、 とかライブラリを使いたい時 を使う を で定義して、各プラットフォームで実装クラスを用意して テストがしづらいので の利用は最小限にとどめ、 での 書き分けと をメインに
Slide 19
Slide 19 text
利用しているKMPのライブラリ 非同期 通信 ローカルキャッシュ 環境変数的なやつ ログ
Slide 20
Slide 20 text
KMPのメリット
Slide 21
Slide 21 text
使い慣れた言語で書ける エンジニアにとっては使い慣れた エンジニアにとっては新言語なのであんまりかも 似てるとは言われるけど ?
Slide 22
Slide 22 text
工数削減 以外は同じものを使い回せる 単純計算で 以下にかけていた工数が半分になる ※効果には個人差があります 自分が 側の を作っているときに の人が別画面の を作っている
Slide 23
Slide 23 text
用語/仕様に差が生まれない 余計なコミュニケーションコストが減る 画面名が異なるとか モデルクラスの名前が異なるとか ビジネス的にクリティカルな部分はすべて共通 「え、これ では実装してないです 」
Slide 24
Slide 24 text
Viewを各プラットフォームで書ける は それぞれの方法 デザインで 最新 の機能も自由に使える 将来的には が に対応するかも ?
Slide 25
Slide 25 text
導入する範囲を選べる たとえばリモート クライアントだけ、とか アプリから見ると普通のライブラリなので、既存コードへの導入はしやすい からは のライブラリ からは
Slide 26
Slide 26 text
KMPのデメリット
Slide 27
Slide 27 text
学習コスト の人に を学んでもらう必要がある はいろいろ とは違うので も苦戦する 主にスレッド周り 向けを念頭に、テスト書きながらすすめれば大体 でも動く 日本語の資料がまだ少ない 英語を読む覚悟が必要 のチャンネルは結構活発
Slide 28
Slide 28 text
KMPはまだα版 とはいえ結構安定しているし、プロダクション投入している会社も多い とはいえ破壊的変更もたまにある から がマルチスレッド対応の 必須に 将来的に のメモリ管理モデルは完全にリプレースされることが決定している たまに が真っ赤になる ライブラリが少ない 逆にチャンスでもある
Slide 29
Slide 29 text
まとめ
Slide 30
Slide 30 text
KMPを使ってよかったか コードの共通化を無理なく、使いやすい言語で 工数の削減 ビジネスロジックのみ共有したい場合には有効な選択肢になりうる 既存プロジェクトへの導入も容易
Slide 31
Slide 31 text
KMPをオススメできるか 条件付きで ある程度自分で調べる力が必要 実装を読んだり の を調べたり 英語の記事読んだり でコミュニケーションとったり 経験の浅い人が多いチームなら もっと安定するのを待ったほうがいいかも の方がリソースは多いし日本人コミュニティも大きい あるいは素直にそれぞれ個別に実装して経験を積むべき
Slide 32
Slide 32 text
以上