Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin/Native With Unity

あるど
November 20, 2019

Kotlin/Native With Unity

あるど

November 20, 2019
Tweet

More Decks by あるど

Other Decks in Technology

Transcript

  1. Kotlin/Nativeとは Kotlin/Native is a technology for compiling Kotlin code to

    native binaries, which can run without a virtual machine. It is an LLVM based backend for the Kotlin compiler and native implementation of the Kotlin standard library. Kotlin / Nativeは、Kotlinコードをネイティブバイナリにコンパイルするための技術で あり、仮想マシンなしで実行できます。KotlinコンパイラおよびKotlin標準ライブラリの ネイティブ実装用のLLVMベースのバックエンドです。 (Google先生翻訳) 参考: https://kotlinlang.org/docs/reference/native-overview.html#why-kotlinnative
  2. Kotlin/Nativeとは Target Platforms • iOS (arm32, arm64, simulator x86_64) •

    MacOS (x86_64) • Android (arm32, arm64) • Windows (mingw x86_64, x86) • Linux (x86_64, arm32, MIPS, MIPS little endian, Raspberry Pi) • WebAssembly (wasm32) 参考: https://kotlinlang.org/docs/reference/native-overview.html#target-platforms
  3. 検証の流れ Unity Kotlin/Native 各プラットフォーム 描画 url渡す response返す Unity Kotlin/Native 各プラットフォーム

    描画 メソッド呼 び出し Platform毎の 返り値返す Platform名取得 HTTP通信GETメソッドで文字列取得
  4. 結果 文字列やりとり Windows Mac Android iOS js ローカル処理 〇 〇

    〇 〇 ? 非同期処理 (ktor) 〇 〇 〇 × ? ※GitHubで探すとiOSで非同期処理やれてる人もいるので自分の書き方が悪いようだが修正間に合わず …
  5. 他にも大変だったところがちょろちょろ • gradleわからん • Kotlin/Native + Unity の情報ないし!Kotlin/Nativeの情報も多くない! • iOSはsuspendCoroutineが使えない(kotlinの非同期処理の書き方のひとつ)

    • Nativeの吐き出したファイルは変換が必要 ◦ WindowsのWrapperを作るときはdllから一旦libに変換(手順)して最終的にdllにする ◦ macOSのWrapperを作るときはdylibからbundleへの変換が必要 (Xcodeで可能) • Windowsで非同期通信する `ktor-client-curl` の導入がわからなかった ◦ 公式のgradleを見てcurlのインストールpathが固定なのを確認 Windowsの環境変数をいじる羽目になった ◦ msys64のpathを取得しないといけないのに GitBashのcurlへpathが優先されてしまってエラーで導入できなかった ◦ msys64のpathを見てもcurlがきちんと導入されてないと行けなかった (Kotlin/Native公式GitHubに手順があった )
  6. まとめ • Kotlin/Native + Unityとりあえず動く! • 需要がどこにあるかわからない! • ラッパーとか書くフローがどうにかなれば結構良いのじゃないだろうか •

    Kotlin/Nativeのパフォーマンスは今後に期待?(独自GCで遅いというのも見か けた) • 興味を持った人は色々試して公開してってください! • 需要やパフォーマンス、フローが緩和されたら「いつか使える」はず!