BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kotlin NativeがObjective-Cとの相互運用性とWebAssemblyサポートを追加

Kotlin NativeがObjective-Cとの相互運用性とWebAssemblyサポートを追加

原文(投稿日:2017/11/28)へのリンク

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

Kotlin/Native 0.4でiOSやmacOSのネイティブアプリをビルドできるようになった。JetBrainsのKotlin/NativeテックリードであるNikolay Igotti氏が作っている。加えて、WebAssemblyプラットフォームへの実験的サポートを導入した。

Objective-Cとの相互運用性はKotlin/NativeのiOS/macOS開発サポートへの鍵である。JetBrainsはKotlinで書かれたとても単純なでもアプリケーションの公開さえしている。Apple StoreGoogle Playの両方で動作する。

このスニペットはiOSフレームワークにアクセスする方法を示している。

import kotlinx.cinterop.*
import platform.Foundation.*
import platform.objc.*
import platform.osx.*

fun readResource(resourceName: String): ByteArray {
    val filePath = NSBundle.mainBundle.pathForResource(resourceName, ofType = null)
  val fileData = NSData.dataWithContentsOfFile(filePath!!)
  ?: throw Error("failed reading resource $resourceName")
  return fileData.bytes!!.readBytes(fileData.length.toInt())
}

新しいplatform.ライブラリに秘密がある。根底にあるオペレーティングシステムインタフェースにアクセスできるようにしてくれる。またそれを提供するプラットフォーム上のPOSIX OSレイヤを使える。たとえばfopenfread呼び出しなどだ。根底にあるプラットフォームとの相互運用には相互運用スタブを前もって明示的に生成することが必要となる。

他の新しい機能は、KotlinオブジェクトをC APIとともに簡単に使えるようにする目的のための、オブジェクトの固定である。これはC APIから使われるときにメモリ内にオブジェクトがロックされることを保証するために使う。

Kotlin/Nativeは現在WebAssemblyをサポートしている。これはKotlinをブラウザベースのアプリケーション向けに使うことができるということである。サポートは実験的利用に限られている。これはブラウザのサポートに制限があるためであると、Igotti氏は述べている。

ツールの面では、デバッグが実行時の変数のほとんどに対してインスペクションをサポートしている。そして、大事なことを忘れていたが、新しいプラグインがCLionでのKotlin/Nativeサポートを提供している

Kotlin/NativeはKotlinにおいてはごく新しい開発で、もともとJVMベースの言語であるKotlinをVMなしで実行するネイティブバイナリにコンパイルできる。これでiOSや組み込みのようなプラットフォームにとくに適したものとなった。そこではVMは許可されていないか望ましくない。Kotlin/Nativeは現在WindowsとLinux、macOS、iOS、Android、WebAssemblyをサポートしている。

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

BT