Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How useful Kotlin/Native in Kotlin 1.3
Search
Masaya Yashiro
July 21, 2020
Programming
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How useful Kotlin/Native in Kotlin 1.3
Masaya Yashiro
July 21, 2020
More Decks by Masaya Yashiro
See All by Masaya Yashiro
拡大期を迎えたプロダクトに起きたこと - Android編
yashims
0
630
UX design trend 2019
yashims
5
1.7k
Kotlin/MPP getting started and troubles
yashims
0
4.2k
C# code refactoring with Scope Functions
yashims
0
3k
ココがダメだよWebCamTexture
yashims
0
140
Introduction of MaterialDesign for engineer
yashims
0
120
Other Decks in Programming
See All in Programming
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
Next.js: The final boss of Web Performance
guaca
0
300
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
960
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
220
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
1.1k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
sbt 2.0: takeoff
eed3si9n
0
160
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
120
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
130
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Tell your own story through comics
letsgokoyo
1
1.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
For a Future-Friendly Web
brad_frost
184
10k
Raft: Consensus for Rubyists
vanstee
142
7.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Documentation Writing (for coders)
carmenintech
77
5.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Transcript
Kotlin/Nativeで今どこまで できるか 2020-07-20 吉祥寺.pm #23 @yashims85
誰? 名前: 屋代昌也 会社: 株式会社モバイルファクトリー Twitter: @yashims85 Github: yashims
None
皆さんPerlのどういったところが好 きでしょうか?
Perlで私が好きなところ • コーディングスタイルの自由度が高い • 書き捨てのコードも書きやすい • 資産が豊富 • XSである程度早く実行することもできる •
正規表現が楽 • 言語レベルまでハックできる 触ってて面白い言語だと感じてます。もしあなたがこの辺に好 感を感じるなら、そんなあなたにおすすめしたい言語がありま す。
Kotlin
Kotlinではどの程度カバーできるか コーディングスタイルの自由度が高い 常識の範囲内で高い 書き捨てのコードが書きやすい スクリプトとして実行できる 資産が豊富 Javaの資産を使える(JVMでは) XSである程度早くできる Kotlin/Nativeで機械語出力もできる 正規表現が楽
特段楽ではない 言語レベルまでハックできる できない
今日話したいこと • Kotlin/Nativeで何? • Kotlin/Nativeで今どこまでできるのか
Kotlin/Native • もともとJVM言語として作られたKotlinの拡張 • Kotlin 1.3 からpreview版として使用可能 • KotlinのコードをLLVMでクロスコンパイルして機械語を 吐き出そうという試み
• Kotlin/NativeとともにKotlin/JS拡張も平行で進行中
Kotlin/JVM Kotlin/Native Kotlin/JS
Kotlin/MPP(Multi Platform Project) Kotlin/MPP Kotlin/JVM Kotlin/Native Kotlin/JS Kotlin/Android ServerSide Kotlin
Kotlin/iOS Kotlin/MacOS Kotlin/X86 Kotlin/WinGW Kotlin/Common
Kotlin/MPPによってどんな嬉しい ことがあるのか
設計をコードレベルで共有できるよ うになる
Android/iOSビジネスロジック共通化 アプリインターフェースパッケー ジ(Kotlin/Android) アプリインターフェースパッケー ジ(Swift) バックエンドライブラリ(Kotlin/MPP) ビジネスロジック リソースロジック Appサーバ OS
Firebase Activity, Fragment View ViewControll er View
更にサーバもKotlinにしてしまえば APIの型中間表現とか不要になっ て。。 とか考えると夢が膨らみますね。
で、実際のところその設計はどの程 度まで実現できるの?
A: Androidは問題なく動く
A: iOSは不可侵領域に踏み込まな ければ動く 以降のiOSの場合の話はKotlin/Native(以降K/N)の 厄介さの話です。 Kotlin/JVMを触ってる限りは考慮に入れるひつようは ありません。
不可侵 領域
バックグラウンドスレッド
不可侵領域: バックグラウンドスレッド Kotlin 1.3 ではバックグラウンドスレッドはサポートされていな い。 KotlinにはMPPをサポートする非同期処理として Coroutine がある。これを使用してスレッドを切り替えることはもちろん、 バックグラウンドスレッドで実行されている
Swiftコードから呼 び出すのもダメ。 これは、後述するfreezeルールと関連する。
freezeルール
不可侵領域: freezeルール class Sample { var value: Int = 0
fun increment(): Int { value++ Log.d("incremented: $value") return value } } 問題: increment() メソッドは必ず元の値から +1された値を返 すでしょうか?
答え: NO
不可侵領域: freezeルール class Sample { var value: Int = 0
fun increment(): Int { value++ Log.d("incremented: $value") return value } } メンバ変数はスレッド間で共通のため、トランザクション分離レ ベルを意識する必要がある。 この間に別Threadで increment()が走るかもし れない
不可侵領域: freezeルール K/Nではこのメンバ変数のトランザクション分離レベルの問題 を回避するためにfreezeの制約が存在する。 メンバ変数に実体を置く時は、freezed内部フラグを立てて、 変数をimmutableにしないと、他のスレッドで触ることが出来 ない。
不可侵領域: FAQ • シングルトンの場合freezeルールどうなるの? ◦ そこが、Mainスレッド以外で動作が保証されない理由 ◦ 副作用の無い処理なら問題ないが、副作用がある処理の 場合、適切に処理されていないと、シングルトンを instantiateしたスレッドでしか触れなくなる
• どのK/Nライブラリでシングルトンを使っているかわからない ◦ Kotlin 1.3では、K/NはMainスレッド以外は動作対象外な ので全部諦めよう。 • 非同期処理(Coroutine等)は使えないの? ◦ Mainスレッドで遅延実行すればできるよ
不可侵領域要約: Kotlin 1.3 の現状では、Mainス レッド以外が厳しみ
さて皆さんこの状況お気づきでしょう か。
Android/iOSビジネスロジック共通化 アプリインターフェースパッケー ジ(Kotlin/Android) アプリインターフェースパッケー ジ(Swift) バックエンドライブラリ(Kotlin/MPP) ビジネスロジック リソースロジック Appサーバ OS
Firebase Activity, Fragment View ViewControll er View バックエンドを共通化し たいのにバックグラウ ンドスレッドでうまく動か ないとはこれ如何に
まとめ • 普通にJVMで使う分には何も問題無い • Kotlin/Nativeに手を出すとKotlin 1.3現在ではまだ早 い • KotlinいいよKotlin
詠みます
“ 僕らは何度も共通化の夢をみる 徒花と知りつつも
ありがとうございました