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ではじめるマルチプラットフォーム開発
Search
Yuta Tomiyama
July 18, 2020
Programming
0
220
Kotlinではじめるマルチプラットフォーム開発
2020/07/18 Zli × DMM 合同LT にて発表
Yuta Tomiyama
July 18, 2020
Tweet
Share
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
モバイルアプリ開発を始めよう!
yt8492
0
47
Git勉強会
yt8492
0
110
なんでもやってみる勇気
yt8492
0
84
Android Autoが思ったよりしんどい話
yt8492
0
200
apollo-kotlinにcontributeした話
yt8492
0
130
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
830
今だからこそ知りたいKotlin Multiplatform
yt8492
0
290
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.2k
サーバーフレームワークの仕組みが気になったので車輪の再発明をしてみた
yt8492
0
200
Other Decks in Programming
See All in Programming
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
540
型で語るカタ
irof
0
200
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
280
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
190
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
260
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
19k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
160
GPUを計算資源として使おう!
primenumber
1
170
ニーリーにおけるプロダクトエンジニア
nealle
0
870
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
800
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
3
270
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
BBQ
matthewcrist
89
9.7k
Music & Morning Musume
bryan
46
6.6k
Scaling GitHub
holman
460
140k
Code Reviewing Like a Champion
maltzj
524
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
The Cult of Friendly URLs
andyhume
79
6.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Transcript
Kotlin/MPPではじめる マルチプラットフォーム開発 2020/07/18 Zli × DMM 合同LT
自己紹介 HN: マヤミト 会津大学26期 (学部3年) Zli 現代表 GitHub: https://github.com/yt8492 好きな技術:
Android, Kotlin, gRPC 最近、Kotlin/JSでポートフォリオサイトを作りました https://yt8492.com Twitter: yt8492
そもそも従来のクロスプラットフォーム開発 とどう違うのか?
従来のクロスプラットフォーム開発 - 基本的に一つのコードでAndroidとiOS(とWeb)が動く - ビジネスロジックもUIも共通化 - プラットフォーム固有の処理をさせたいときに若干面倒 ビジネスロジック UI
Kotlin/MPP - プラットフォームに関わらず共通の処理をKotlinで書くことができる - UIは各プラットフォームごとに実装する(基本的にそれぞれのネイティブ) - UIの実装を各プラットフォームごとに書く必要がある分手間はかかるが、ネイティブ で実装できることは基本的になんでもできる ビジネスロジック UI
Kotlin/MPPのしくみ - KotlinのコードをJavaScriptやObjective-Cなどにトランスパイルし、それを各プラッ トフォームのコードから利用する - 各プラットフォームのラッパーライブラリが用意されている場合はKotlinだけで完結 する(Kotlin/JS向けのReactラッパーなど)
Kotlin/MPPのしくみ iOS POSIX
Kotlin/MPPのメリット・デメリット メリット - プラットフォーム固有の処理に悩む必要がなくなる - (ラッパーが用意されている場合)学習コストがライブラリ部分のみで済む デメリット - そもそも情報が少ない -
各プラットフォームの知識が必要
電卓アプリを作って考えてみる
電卓アプリに必要な要素 - 計算式を入力する - 式を評価し、計算を行う - 計算結果を出力する
電卓アプリに必要な要素 - 計算式を入力する - 式を評価し、計算を行う - 計算結果を出力する 「式を評価し、計算を行う」のはプラットフォームに依存しない処理 -> Kotlin/MPPで共通化できる!
開発の流れ 計算部分をKotlinで実装 ↓ Android, iOS, Webフロント, CLIのプロジェクトから共通モジュールとして参照、UI部分 のみプラットフォームごとに実装
プロジェクトのおおまかな構成 Calculator ├── common // 共通モジュール(Kotlin/MPP) ├── android // Androidネイティブ(Kotlin/JVM)
├── ios // iOSネイティブ(Swift) ├── webfront // React(Kotlin/JS) └── cli // Windows, Linux, Mac(Kotlin/Native)
共通モジュールの実装 操車場アルゴリズムを用いて計算処理を実装 https://ja.wikipedia.org/wiki/%E6%93%8D%E8%BB%8A%E5%A0%B4%E3%82% A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 計算式を構成するトークン、文字列をトークンのリストにパースするパーサ、トークンのリ ストを受け取り計算する計算機をKotlinで実装 文字列のパースにはKotlin/MPP対応のパーサライブラリを使用 https://github.com/h0tk3y/better-parse
Androidアプリの実装 共通モジュールをそのままKotlinのライブラリとして読み込み、通常のアプリ開発と同じ 流れで開発
iOSアプリの実装 共通モジュールをiOS向けのライブラリとしてビルド、Objective-Cのライブラリとして読み 込み、今回はSwiftUIを用いて開発 (時間がなくてUIが汚いけど許して…)
Webフロントの実装 共通モジュールをKotlinのライブラリとして読み込み、Kotlin/JSとkotlin-reactを用いて実 装したものをWebpackでビルド
CLIアプリの実装 共通モジュールをKotlinのライブラリとして読み込み、実装したものをWindows, Linux, Mac向けにバイナリをビルド
計算ロジックを共有して プラットフォーム毎に実装できた
リポジトリ yt8492/Calculator https://github.com/yt8492/Calculator
感想 - Kotlinは表現力の高い言語なので、プラットフォームに依らない処理を書くのに向い ていると感じた - JSやTSの知識なしでReactなどを扱えるのはKotlin/MPPならではの利点だと思う - ビジネスロジックをKotlin/MPPで書いてAndroidとiOSから使うのは十分に現実的 だと思う -
iOS以外はまだまだ情報が少ないので実戦投入は厳しいかも? - もしガッツリKotlin/MPPを採用しているチームがあれば僕を働かせて下さい
ありがとうございました! Kotlin/JSについてLTした過去の資料もよかったら見て みてください! Webフロント開発?それ、 Kotlinでもできるよ。