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
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlinではじめるマルチプラットフォーム開発
2020/07/18 Zli × DMM 合同LT にて発表
Yuta Tomiyama
July 18, 2020
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
2
490
モバイルアプリ開発を始めよう!
yt8492
0
120
Git勉強会
yt8492
0
210
なんでもやってみる勇気
yt8492
0
140
Android Autoが思ったよりしんどい話
yt8492
0
250
apollo-kotlinにcontributeした話
yt8492
0
200
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
1k
今だからこそ知りたいKotlin Multiplatform
yt8492
0
340
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.4k
Other Decks in Programming
See All in Programming
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
690
関数型プログラミングのメリットって何だろう?
wanko_it
0
200
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
180
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.1k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
410
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
550
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
510
AIエージェントで 変わるAndroid開発環境
takahirom
2
730
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
250
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
250
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
190
今さら聞けない .NET CLI
htkym
0
140
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
How to make the Groovebox
asonas
2
2.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
Leo the Paperboy
mayatellez
8
1.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Automating Front-end Workflow
addyosmani
1370
210k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
360
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
910
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
220
Facilitating Awesome Meetings
lara
57
7k
Discover your Explorer Soul
emna__ayadi
2
1.2k
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でもできるよ。