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
アカデミアの技術・研究成果の事業化を目指しサムライインキュベートが東北限定「事業化人材発掘大学キャラバン」開催
IT関連
2022-02-01 18:53
グローバル企業が「スマート製造」の拠点を構えるアイルランド
IT関連
2025-01-28 09:47
「SoftEther VPN」などにサイバー攻撃 開発者の登大遊さん、アップデートと設定確認を呼び掛け
セキュリティ
2021-08-17 10:16
フェイスブックがバグ懸賞プログラムに「支払い遅延ボーナス」を追加
セキュリティ
2021-07-15 20:20
セールスフォースやグーグル、「気候変動の説明責任」に関する取り組みを強化
IT関連
2022-02-19 06:31
DNP、「Okta」採用–海外拠点のITインフラ整備の迅速化とガバナンス強化を実現
IT関連
2022-11-22 17:16
芸能界の“Netflix詣で”急加速 魅力的な世界配信と高額ギャラ
IT関連
2021-01-28 04:41
“定番PC”を目指すために“当たり前”を見直した「VAIO」新製品の肝
IT関連
2023-03-31 10:41
飲食店向けSaaS「delico」を手がけるフードテックキャピタルが1.4億円のシード調達、事業強化と加盟開発事業加速
IT関連
2022-03-19 03:00
テラスカイが打ち出した「経営幹部候補の募集・育成プロジェクト」の背景
IT関連
2021-06-25 15:20
富士通と東海大学、非破壊で冷凍マグロの鮮度を評価–超音波AI活用
IT関連
2022-12-23 03:16
Facebook、スマートウォッチを来年発売か──米報道
企業・業界動向
2021-02-16 17:17
AIによる頭髪診断・対策支援から専門家への相談まで可能な国内初のAGA・男性型脱毛症アプリHIXが4000万円調達
ヘルステック
2021-02-25 10:16
2023年上半期の国内ソフトウェア市場、前年同期比9.5%の成長–IDC調査
IT関連
2023-11-28 17:24