Kotlin/Wasmでサーバサイドアプリケーションを開発するフレームワーク「KoWasm」が登場。WebAssemblyのガベージコレクションやコンポーネントの活用を想定

今回は「Kotlin/Wasmでサーバサイドアプリケーションを開発するフレームワーク「KoWasm」が登場。WebAssemblyのガベージコレクションやコンポーネントの活用を想定」についてご紹介します。

関連ワード (今後、図左、環境等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


JetBrainsでKotlinの開発を担当するZalim Bashorov氏と、VMwareでSpring Frameworkのコミッタとして働くSébastien Deleuze氏は、Kotlinで書かれたコードをWebAssemblyバイナリにコンパイルする機能を備えた「Kotlin/Wasm」を用いて、WebAssemblyベースでサーバサイドアプリケーションを開発するフレームワーク「KoWasm」を発表しました。

fig

KoWasmの開発にはKotlinおよびKotlin/Wasmの開発元であるJetBrainsのKotlin/Wasmチームと協力しているとのことです。

Kotlin/WasmはWebブラウザ上のアプリを想定していた

KoWasmの説明の前にKotlin/Wasmについて説明しましょう。Kotlin/Wasmは、Kotlinで書かれたコードをWebAssemblyバイナリとするコンパイル機能を搭載した、Kotlinのマルチプラットフォーム対応プロダクトの1つです。

今年(2023年)2月のKotlin 1.8.20ベータ版で、KotlinにKotlin/Wasmが加わりました。

参考:KotlinからWebAssemblyバイナリを生成するコンパイラ搭載、「Kotlin/Wasm」が試験的プレビュー公開。Kotlin 1.8.20ベータ版で

ただし現時点でKotlin/Wasmを利用するには、WebAssemblyのガベージコレクション機能が要求されます。そのため、Google ChromeもしくはFirefoxで開発者向けのフラグを操作してWebAssemblyのガベージコレクション機能を設定する必要があります。

  • WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
  • FirefoxもWebAssemblyのガベージコレクション機能を実装中であることが明らかに

KotlinはもともとJavaVM言語の1つとして登場し、2017年にAndroidの正式な開発言語になったことで急速に注目度を高めました。

その後、Kotlinの開発元であるJetBrainsは、iOSやWindowsアプリケーションの開発に対応するKotlin/Nativeや、サーバアプリケーションの開発に対応するKotlin/JVM、Webアプリケーションの開発に対応しJavaScriptを生成するKotlin/JSなどマルチプラットフォームに対応した言語への進化を進めてきました。

Kotlin/WasmはそうしたKotlinのマルチプラットフォーム戦略の1つであり、Webブラウザ上で実行されるWebAssemblyアプリケーションをKotlinで開発することが想定されていました。

WebAssemblyのガベージコレクションやコンポーネントの活用を想定

しかしガベージコレクション機能がChromeやFirefoxなどのWebブラウザだけでなく、Node.jsのJavaScriptエンジンであるV8や、スタンドアロンのWebAssemblyランタイムであるWasmtimeやWasmEdge、Wasmerでもサポートされることを想定すると、Kotlin/Wasmを用いてサーバサイドのアプリケーション開発が現実味を帯びてきます。

KoWasmはWebAssemblyのガベージコレクション機能だけでなく、OSなどのプラットフォームを抽象化してアクセスできるWASI(WebAssembly System Interface)やWebAssemblyのコンポーネント機能など、現在仕様策定や開発が進められている技術が機能し始める状況を想定したサーバサイド向けのフレームワークだと説明されています。

参考:WebAssemblyの「WASI Preview 2」で、WebAssemblyコンポーネントの組み合わせによるアプリケーション開発を実現へ

下記はそのビジョンを示した図で、次のような想定がなされていることを示しています。

  • WebAssemblyのガベージコレクションが機能するようになればKotlinを始めとしたJava言語での利用がはじまる(図右)
  • Webブラウザだけでなくクラウドやエッジサーバなどの環境でスタンドアロンのWebAssemblyランタイムが稼働することで、WebブラウザのフロントエンドとクラウドやエッジのバックエンドのどちらでもWebAssemblyのアプリケーションが実行可能になる(図左)
  • バックエンドではWASIによってファイルシステムなどプラットフォームの機能が抽象化されてアクセスできるようになる
  • WebAssemblyコンポーネントによって、Node.jsのnpmのように、さまざまな言語(主に低レベル)で作られたWebAssemblyベースのさまざまなコンポーネントが利用可能になる
  • WebAssemblyコンポーネントのリポジトリとしてWargが使われる
fig

KoWasmは、Kotlinのマルチプラットフォーム対応のライブラリを基盤に、HTTPルーティング機能やKotlin DSLによるHTMLコンテンツの生成機能などが含まれる見通しです。

現時点ではKoWasmのアプリケーションはWASIとWebAssemblyガベージコレクションが試験的に実装されているNode.jsを用いてデプロイします(下図左)。

今後スタンドアロンのWebAssemblyランタイムにもWebAssemblyガベージコレクションが実装されるようになれば、WASIを使ってHTTPを実装できるようになるため、Node.jsに依存せず、さまざまなスタンドアロンのWebAssemblyランタイムにデプロイできるようになることが想定されています(下図右)。

fig

代表的なコンテナランタイムであるcontainerdには、WebAssemblyランタイムをコンテナとみなすインターフェイス「runwasi」が統合されているため、Kubernetesなどのコンテナ環境にもそのままWebAssemblyサーバアプリがデプロイできそうです。

参考:コンテナランタイムのcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が統合。これからのコンテナランタイムはWebAssemblyと統合されていく

KoWasmは5月にバージョン0.1のリリースを目指しているとのことです。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
わずか8分でストレスを軽減できるTrippのサイケデリックVR瞑想アプリ
VR / AR / MR
2021-06-27 08:37
コロナ禍によるIT支出の影響は西日本で大きく–IDC
IT関連
2021-01-19 13:07
M1 Mac miniのディスプレイ不具合、Big Surアップデートで修正 Bluetooth不具合も
IT関連
2021-02-03 01:10
進化するブレインコンピューターインターフェース–実用化への期待と課題
IT関連
2022-03-29 14:52
従業員エンゲージメント低下の一因は上司にあり–Gallup調査
IT関連
2022-07-02 23:42
コンテナーの保護にVM関連技術を応用–「Rust」ベースの新ソリューション「Edera」
IT関連
2024-04-19 12:51
EV充電施設のEVgoがSPACとの合併を通じて上場へ
モビリティ
2021-01-24 23:31
マイクロソフト受注の米国防総省「JEDI」クラウド、判事がアマゾンの異議棄却せず
IT関連
2021-04-30 08:56
イーロン・マスク氏、テスラのカリフォルニア工場で組合投票を実施するよう全米自動車労働組合に挑む
IT関連
2022-03-05 00:05
イーサリアムデベロッパーの迅速な分散型アプリ開発をサポートするTenderlyが約17億円調達
IT関連
2021-08-02 20:20
さくらインターネット、「高火力 DOK」で「NVIDIA H100プラン(β版)」提供
IT関連
2024-08-29 21:23
可視化から得る「洞察」をどう業務改善に用いるか
IT関連
2022-08-03 15:29
チームで働く現代の開発者、それを支える生成AI
IT関連
2023-06-29 11:11
ブロードコム・ヴイエムウェアが主軸に据える「VMware Cloud Foundation」の展開
IT関連
2024-09-04 02:50