Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今だからこそ知りたいKotlin Multiplatform
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuta Tomiyama
October 16, 2022
Programming
0
310
今だからこそ知りたいKotlin Multiplatform
2022/10/15 Zli 大LTにて発表
Yuta Tomiyama
October 16, 2022
Tweet
Share
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
1
390
モバイルアプリ開発を始めよう!
yt8492
0
86
Git勉強会
yt8492
0
180
なんでもやってみる勇気
yt8492
0
120
Android Autoが思ったよりしんどい話
yt8492
0
230
apollo-kotlinにcontributeした話
yt8492
0
160
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
910
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.3k
サーバーフレームワークの仕組みが気になったので車輪の再発明をしてみた
yt8492
0
220
Other Decks in Programming
See All in Programming
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
230
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
870
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
220
MUSUBIXとは
nahisaho
0
120
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
540
CSC307 Lecture 01
javiergs
PRO
0
680
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
410
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
530
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
160
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
150
CSC307 Lecture 05
javiergs
PRO
0
490
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
190
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
Music & Morning Musume
bryan
47
7.1k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
290
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
130
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
49k
Site-Speed That Sticks
csswizardry
13
1.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
How STYLIGHT went responsive
nonsquared
100
6k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
97
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
Transcript
今だからこそ知りたい Kotlin Multiplatform 2022/10/15 大LT
自己紹介 HN: マヤミト 本名: 富山雄太 GitHub: https://github.com/yt8492 趣味: Kotlin, Twitter,
同人音声 Twitter: yt8492
自己紹介 HN: マヤミト 本名: 富山雄太 GitHub: https://github.com/yt8492 趣味: Kotlin, Twitter,
同人音声 Twitter: yt8492 会津大学生なんですけど! Zli?のメンバーなんですけど!
自己紹介 HN: マヤミト 本名: 富山雄太 GitHub: https://github.com/yt8492 趣味: Kotlin, Twitter,
同人音声 Twitter: yt8492 嘘 を 付 き ま し た 会津大学生なんですけど! Zli?のメンバーなんですけど!
自己紹介 HN: マヤミト 本名: 富山雄太 GitHub: https://github.com/yt8492 趣味: Kotlin, Twitter,
同人音声 s1260119 Zli 元代表(2020年度) 合同会社DMM.com 動画配信事業部 Androidエンジニア Twitter: yt8492
動画配信事業部でAndroidアプリを 作ってるよ!🥰
動画配信事業部でAndroidアプリを 作ってるよ!🥰 おっと、その前に
⚠注意事項⚠
⚠注意事項⚠ 成人向け事業は2018年3月1日をもってDMM.comから分割し、株式会社デジタルコ マースへ継承しています。 また、同年8月1日よりデジタルコマース社運営の元、アダルト事業「DMM.R18」の名称 も変更し、「FANZA(ファンザ)」ブランドが誕生しました。 「FANZA(デジタルコマース社)」は「DMM.com」から完全に独立しており、事業会社とし てもブランドとしても、別々のものとなっています。 DMM.comは、デジタルコマース社からの業務委託として、FANZAの配信及びシステム 等の請負を行っています。
⚠注意事項⚠ 成人向け事業は2018年3月1日をもってDMM.comから分割し、株式会社デジタルコ マースへ継承しています。 また、同年8月1日よりデジタルコマース社運営の元、アダルト事業「DMM.R18」の名称 も変更し、「FANZA(ファンザ)」ブランドが誕生しました。 「FANZA(デジタルコマース社)」は「DMM.com」から完全に独立しており、事業会社とし てもブランドとしても、別々のものとなっています。 DMM.comは、デジタルコマース社からの業務委託として、FANZAの配信及びシステム 等の請負を行っています。
さて本題
そもそもKotlinとは? • 静的型付けなオブジェクト指向言語 • Androidアプリ開発やバックエンド開発で使われている ◦ もちろん弊社のAndroidアプリ開発でも使ってるよ! • JVM言語 ◦
Javaとの相互運用が可能
なぜKotlinはJavaと相互運用が可能なのか? • KotlinのコードがコンパイルされるとJavaのバイトコードになる ◦ IntelliJ IDEA / Android Studio の機能でJavaにデコンパイルすることも可能
• 最終的なランタイムはJVM ◦ 実行ファイルもJARなどの実行可能な形式にしてしまえば Kotlinの環境がなくてもJavaのランタイム さえあれば動かせる
Kotlinの特殊なランタイムがない →Javaのバイトコード以外も吐き出せるようにすれ ば任意のプラットフォームで動くものが作れるので は?(てんさいはかせ)
正解
Kotlin Multiplatformとは? • Kotlinのコードを様々な形式にコンパイルする • 複数のプラットフォームの処理を共通化できる common Android iOS
Kotlin Multiplatformとは? • 現状対応しているものは以下の通り ◦ JVM ◦ JavaScript ◦ macOS
◦ iOS ◦ tvOS ◦ watchOS ◦ Linux ◦ Windows ◦ Android NDK ◦ WebAssembly
Q. 実用性あんの?
A. あります! 弊社でも使ってます!
レイヤードアーキテクチャ 動画配信事業部での活用例 Domain UseCase UI Infra
レイヤードアーキテクチャ Domain層、Infra層、UseCase層をKotlinで共通化 動画配信事業部での活用例 Domain UseCase UI Infra
レイヤードアーキテクチャ Domain層、Infra層、UseCase層をKotlinで共通化 共通化した処理をそれぞれのネイティブから呼び出す 動画配信事業部での活用例 native-shared Android Jetpack Compose iOS SwiftUI
使用しているKotlin Multiplatform対応ライブラリ • ロギング ◦ Napier • HTTPクライアント ◦ Ktor
Client • GraphQLクライアント ◦ Apollo Kotlin • SQL ◦ SQLDelight • DI ◦ Koin • などなど
結局どのくらい実用性があるのか? • AndroidとiOSでビジネスロジックを共通化するといった使い方であればほぼ問題 なし ◦ 先日、Kotlin Multiplatform Mobileがついにbetaになった ▪ 「ほぼ完成してプロジェクトに安全に使用できる」と公式がアナウンスしている
◦ ここ数年でいろんな会社がプロダクション導入している ◦ サードパーティ製ライブラリも年々増えている ◦ 非同期処理周りやメモリ管理周りがまだ変更が入ったりするので注意が必要 • 共通化を考えないのであれば現状でもいろいろできる ◦ Kotlin/JSでWebフロントとか ◦ Kotlin/NativeでCLIツールを実装するとか
Q. UIの共通化まではできないの?
A. できます(震え声)
Compose Multiplatformなんてものがあったりする
Compose Multiplatformとは • AndroidのJetpack ComposeをもとにJetBrainsが開発している • DesktopアプリとWebアプリがKotlinとComposeで書ける ◦ DesktopはJVMとSkia、WebはDOMベースで動く ◦
WebはDOMベースなのでAndroidやDesktopで使えるComposable関数が使えなかったりする • Web、iOS、macOSでもskiaベースのComposeが動くように(experimental) ◦ Android, iOS, Desktop, Webで理論上同じUIが動く
Compose Multiplatformとは • AndroidのJetpack ComposeをもとにJetBrainsが開発している • DesktopアプリとWebアプリがKotlinとComposeで書ける ◦ DesktopはJVMとSkia、WebはDOMベースで動く ◦
WebはDOMベースなのでAndroidやDesktopで使えるComposable関数が使えなかったりする • Web、iOS、macOSでもskiaベースのComposeが動くように(experimental) ◦ Android, iOS, Desktop, Webで理論上同じUIが動く
Compose Multiplatformは使い物になるのか? • 今はまだちょっと厳しい ◦ DesktopやWeb(DOM)は意外と使い物になる ◦ SkiaベースのComposeだと、UIのコンポーネント自体はそこそこ充実しているが、 iOSの挙動など にバグが多く残っている
◦ Compose Multiplatformの完成度がFlutterレベルになればワンチャンあると思う • そもそもDesktopとWeb(DOM)以外はbetaリリースすらされていないので、それ なりに不安定
これからのKotlin Multiplatform • 周辺ライブラリのさらなる充実 ◦ 先日、Androidの公式ライブラリ群の一部が Multiplatformに対応した ▪ androidx.datastore ▪
androidx.collection ◦ Kotlin Multiplatform Mobileがbetaになったことで、今後更に充実していくと予想 • Compose Multiplatformの進化に期待 ◦ Compose for iOSは現状バグだらけだが、バグが少なくなり、 Flutterレベルまで共通化できるもの が増えれば、可能性は十分にある
まとめ • Kotlin Multiplatformはいろんなプラットフォームの処理をKotlinで実装できる • UI以外のビジネスロジックなどの処理の共通化であれば現状でもプロダクション導 入に耐えうるレベル • UIの共通化はCompose Multiplatformの進化に期待
• 弊社に来ればKotlin Multiplatformで仕事ができるよ!(宣伝)