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
Kotlinではじめるマルチプラットフォーム開発
2020/07/18 Zli × DMM 合同LT にて発表
Yuta Tomiyama
July 18, 2020
More Decks by Yuta Tomiyama
See All by Yuta Tomiyama
ビルドプロセスをデバッグしよう!
yt8492
2
460
モバイルアプリ開発を始めよう!
yt8492
0
110
Git勉強会
yt8492
0
200
なんでもやってみる勇気
yt8492
0
130
Android Autoが思ったよりしんどい話
yt8492
0
240
apollo-kotlinにcontributeした話
yt8492
0
180
DMM TVのSDカードダウンロード機能を実装した話
yt8492
1
980
今だからこそ知りたいKotlin Multiplatform
yt8492
0
330
State management and API calls in Jetpack Compose: Learning Apollo + Jetpack Compose through React Hooks
yt8492
0
1.3k
Other Decks in Programming
See All in Programming
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
130
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
3
570
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
270
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
230
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
1.9k
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
120
20年以上続くプロダクトでも使い続けられる静的解析ツールを求めて
matsuo_atsushi
0
160
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
1
960
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
530
デフォルト運用のCodeRabbit、1年で何が変わったか / How CodeRabbit Changed Our Code Review in 1 Year
bake0937
1
100
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
180
GitHub Copilot CLIのいいところ
htkym
2
1k
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
400
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Optimizing for Happiness
mojombo
378
71k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Statistics for Hackers
jakevdp
799
230k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
190
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Un-Boring Meetings
codingconduct
0
300
Docker and Python
trallard
47
3.8k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
130
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でもできるよ。