Slide 1

Slide 1 text

2 0 2 5 / 1 / 2 5 Minokamo.swift # 1 Skip Skip Run Run Run ♫

Slide 2

Slide 2 text

Tomoki Kobayashi @temoki iPhone 3 G 日 本上陸(2008年)とほぼ同時に iPhone アプリ開発を始めた Apple 信者 https://bento.me/temoki 両OSつくるの しんどいー 😢 業務ならFlutter サイコー 😆 • モバイルアプリ受託(iOS / Android) • HR系スタートアップ(iOS / Android) • 電 力 系スタートアップ(Flutter) • 自 動 車 メーカー(Flutter / iOS) 経歴

Slide 3

Slide 3 text

ちょっと宣伝 いいね 👍 ください! • Swift ではなく恐縮ですが… • 年末に Flutter の DevTools Extension を pub.dev でリリースしました! • アプリでもっている GraphQL の Cache の 状態を確認できる Extension です • https://pub.dev/packages/gql_cache_lens

Slide 4

Slide 4 text

最近の悩み Flutter に逃げそうになる 個 人 開発は SwiftUIでやろう! やっぱり Flutterで作るか… Android版も リリースしたい… 🤔 😅 🙅

Slide 5

Slide 5 text

そんな悩みを解決してくれそうなのが Skip 思っていたよりも良さそうな感じだったので紹介します! 出典: https://skip.tools/

Slide 6

Slide 6 text

Skip とは? Build native apps for iPhone and Android with Skip 出典: https://skip.tools/ Android アプリの 実装をスキップ? 2024年8 月 に ver. 1 . 0 リリース

Slide 7

Slide 7 text

Skip のしくみ At Skip’s heart is its intelligent Swift to Kotlin language transpiler 出典: https://skip.tools/docs/ Build (Xcode / SwiftPM) Skip Transpiler Plugin Swift Source Code Package .ipa Compiled Native Code Package .apk Compiled Bytecode Build (Android Studio / Gradle) Kotlin Source Code App Development Android App iOS App Dual-platform App • SkipStone : Swift/SwiftUIのコードをKotlin/Jetpack Composeにトランスパイルする • SkipStack : Kotlin ・ Android へのブリッジ(Swift ・ Foundation ・ SwiftUI など)

Slide 8

Slide 8 text

Skip で良いと思ったところ Totally Transparent, Genuinely Native, Ejectable, … • 普通に Xcode + SwiftUI で iOS アプリを作るだけで Android アプリもできる • Android も純ネイティブで動く(Jetpack Composeにトランスパイル) • Swift コード上で Kotlin / Java API を直接使うこともできる • SQLite, Firebase などの個 人 開発で役 立 つ機能のサポート • 限界がきたときに剥がしやすい • 開発環境やドキュメントが充実している Composeだと こうなるのか〜🤔

Slide 9

Slide 9 text

Skip のデモ Skip Skip Run Run Run ♫ • Showcase アプリを眺めてみる • https://github.com/skiptools/skipapp-showcase • Swift to Kotlin Transpiler の実 力 を Playground を試してみる • https://skip.tools/playground • https://skip.tools/docs/swiftsupport • Xcode で SwiftUI の簡単なコードをビルド&ランしてみる • Swift Package 中 心 のプロジェクト構成 • Androidアプリも同時にビルドして 自 動的にエミュレータ等で実 行 • Transpile された Kotlin のコード

Slide 10

Slide 10 text

個 人 開発のアプリを Skip してみる try! Skip() • 付近の 高 速道路上EV充電スポットを表 示 するアプリ • SwiftUI, MapKit, CoreLocation, WebKit, … • Skip プロジェクトに組み込んでみた結果… • トランスパイルできない Swift 言 語機能の ❌ エラーと ⚠ 警告 • 未対応の iOS API は ⚠ 警告となりトランスパイルされない • 未対応の iOS Framework は ❌ エラー 👉 Android コードを書く必要あり

Slide 11

Slide 11 text

その他のトピックス • SkipZero • SkipStack のモジュールへの依存のみなら アプリからそれらを完全に取り除ける • Native Swift Tech Preview 👉 • Model コードをネイティブコンパイル する • Pricing • 個 人 開発レベルなら無料で利 用 可能 • https://skip.tools/pricing 出典: https://skip.tools/docs/native Xcode Swift Compiler SwiftPM Dependency SwiftUI Source Code ContentView.swift Compiled SwiftUI ContentView.o Packaged APK Compiled Kotlin ContentView.class Swift Model Code @Observable ViewModel.swift Xcode Swift Compiler SkipFuse Bridge Compiled Model libModel.so Skip Transpiler Xcode Plugin Skip Android Toolchain Compiled Model libModel.dylib iOS App Android App Packaged IPA Link Gradle Transpiled Kotlin Code Jetpack Compose: ContentView.kt Swift/C/C++ SwiftPM Dependencies Swift Android Libraries libSwift.so, libFoundation.so, …

Slide 12

Slide 12 text

まとめ 現時点では簡単な個 人 開発なら試してみたいなぁという感想 • SwiftUIで開発したiOSアプリが、Androidアプリとして動くのは魅 力 的 • 未対応の Swift 言 語機能はビルド時エラーで気づいて修正してこう • 未対応の iOS 機能については Android 機能のコードを書く必要あり