Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin MultiplatformでもKSPを使う
Search
Mori Atsushi
August 01, 2023
Technology
2
870
Kotlin MultiplatformでもKSPを使う
Mobile勉強会 Wantedly × チームラボ #10
https://teamlab.connpass.com/event/289576/
Mori Atsushi
August 01, 2023
Tweet
Share
More Decks by Mori Atsushi
See All by Mori Atsushi
モバイルアプリ開発のためのDesign Doc実践ガイド
moriatsushi
4
590
原則から考える保守しやすいComposable関数設計
moriatsushi
3
760
Kotlin Coroutinesで共有リソースに正しくアクセスする
moriatsushi
6
5.2k
Jetpack Composeで Reduxっぽいアーキテクチャを試す
moriatsushi
2
1.2k
実例から学ぶJetpack Composeのパフォーマンス改善
moriatsushi
3
7.4k
WindowInsets 2022 feat. Jetpack Compose #ca_aab
moriatsushi
1
1.7k
Jetpack Composeで UI Catalog Libraryを 作っている話 #android_meetup
moriatsushi
1
1.3k
良いコードとは何か - エンジニア新卒研修 スライド公開
moriatsushi
95
160k
AndroidでKotlin Coroutineを使うときの注意点 | CA BASE NEXT
moriatsushi
4
3.4k
Other Decks in Technology
See All in Technology
AI との良い付き合い方を僕らは誰も知らない
asei
0
250
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
160
Building Serverless AI Memory with Mastra × AWS
vvatanabe
0
500
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.1k
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
170
障害対応訓練、その前に
coconala_engineer
0
190
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
180
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
220
Kiro を用いたペアプロのススメ
taikis
4
1.8k
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.6k
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
200
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.2k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
580
Side Projects
sachag
455
43k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
80
Context Engineering - Making Every Token Count
addyosmani
9
550
The Cult of Friendly URLs
andyhume
79
6.7k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
0
100
We Are The Robots
honzajavorek
0
120
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Transcript
.PSJ"UTVTIJ .PCJMFษڧձ8BOUFEMZºνʔϜϥϘ ,PUMJO.VMUJQMBUGPSNͰ,41Λ͏ ,PUMJO.VMUJQMBUGPSN
株式会社サイバーエージェント 株式会社CyberZ OPENREC.tv 2019年度 未踏スーパークリエータ Mori Atsushi Twitter: @at_sushi_at
2019年度 未踏スーパークリエータ LINE株式会社(2023年4⽉〜) Android application engineer 詳解 Kotlin Coroutines [ 2021 ] Katalog / Koject / InsetsX
Kotlin Multiplatform Android / JVMだけでなく、iOSやWeb等、様々な プラットフォームでもKotlinが動作する 最近だとComposeも マルチプラットフォーム対応され、
UIの共通化も🙌 IUUQTLPUMJOMBOHPSHEPDTNVMUJQMBUGPSNIUNM
KSP (Kotlin Symbol Processing API) 軽量なコンパイラプラグインを作成するためのAPI ソースコードを解析し、コードを⽣成することができる インクリメンタル処理で⾼速に動作 様々なライブラリで使われている Room
/ Moshi / Glide / Epoxy IUUQTHJUIVCDPNHPPHMFLTQ
Kotlin Multiplatformでも KSPが使える! 🚀
プラグインの作成⽅法 ϓϩηοαʔHSBEMFͰಈ͘ͷͰɺ +7.ͷ··Ͱେৎ Kotlin Multiplatform向けでも作り⽅は基本⼀緒
SymbolProcessorを実装していく
利⽤⽅法(Single platform) ϓϥάΠϯΛՃ ϓϩηοαʔΛ༗ޮԽ
利⽤⽅法(Multiplatform) ϓϥοτϑΥʔϜຖʹࢦఆ͕ඞཁ
⽣成したコードを呼び出す 🏃
コード⽣成例 アノテーションをつけたinterfaceの実装を⾃動⽣成する ίʔυੜ ͜ΕΛ͍͍ͨ
Single platformの場合 普通に呼び出して使える
Multiplatformのプロジェクト ソースコードを階層構造にして管理できる IUUQTLPUMJOMBOHPSHEPDTNVMUJQMBUGPSNEJTDPWFSQSPKFDUIUNM
Multiplatformからのコード⽣成 プラットフォームごとにコードが⽣成される → どの階層から呼び出せるのかわからない CVJMEHFOFSBUFELTQ ᵓᴷᴷMJOVY9 ᴹᵋᴷᴷMJOVY9.BJO ᴹᵋᴷᴷ%VNNZ4BNQMFLU ᵓᴷᴷNJOHX9
ᴹᵋᴷᴷNJOHX9.BJO ᴹᵋᴷᴷ%VNNZ4BNQMFLU ᵓᴷᴷNBDPT9 ᴹᵋᴷᴷNBDPT9.BJO ᴹᵋᴷᴷ%VNNZ4BNQMFLU ᵋᴷᴷ 4BNQMFLU
呼び出せるが、IDEで認識してくれない Multiplatformの場合 ͘දࣔ͞ΕΔ BVUPJNQPSU͞Εͳ͍
クイズ:どっちが呼び出される?
正解:② ,PUMJOίϯύΠϥ Ұ൪͍ۙܕΛબͯ͘͠ΕΔ
IDEが認識してくれない回避策 ۭͷ࣮Λ༻ҙ͢Δ ͘ͳΒͳ͍
IDEが認識してくれない回避策 ͜ΕΛࣗಈੜ͢Δ ࣗಈੜ͞ΕͨίʔυΛݺΜͰ͘ΕΔ
引数の増減でも可能 Ҿ͕গͳ͍ํ͕ݺΕΔ
回避策の問題点 ࣗಈੜ͞Εͯͳͯ͘ίϯύΠϧ͕௨Δ Ϋϥογϡ͢Δ
理想的には? Source setごとにコードが⽣成 できると良さそう IUUQTHJUIVCDPNHPPHMFLTQJTTVFT DPNNPO.BJO EFTLUPQ.BJO MJOVY9.BJO HFOFSBUFELTQDPNNPO.BJO HFOFSBUFELTQEFTLUPQ.BJO
HFOFSBUFELTQMJOVY9.BJO
Koject KSPを使ったKotlin Multiplatform向けの DIコンテナライブラリ アノテーションで簡単に配布 マルチモジュールに対応 コンパイル時の依存グラフの確認 IUUQTHJUIVCDPNNPSJBUTVTIJLPKFDU