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
ソフトウェアサプライチェーンのセキュリティ向上へ–Linux Foundationらが発表した署名サービス
IT関連
2021-03-17 05:07
KPMGコンサルティング、ローコードで現場主導のシステム内製化を支援
IT関連
2022-07-14 21:29
“まるで本物”日本刀、花札の3DCGを作る少数精鋭集団 こだわりでリアルさ追求 「目指すはナンバーワン」 (1/2 ページ)
アプリ・Web
2021-02-02 10:47
HashiCorp、「Terraform Cloud」の「Ephemeral workspaces」をパブリックベータ公開
IT関連
2023-08-24 10:55
JBS、全社会議をメタバースで開催–従業員約2300人が参加
IT関連
2022-11-17 04:13
東北電力、新経理システムにSAP S/4HANAを採用
IT関連
2023-11-22 19:08
三原市、LGWAN環境のクラウド利用を「A10 Thunder CFW」で改善
IT関連
2024-06-01 03:01
「BONX WORK」が「LINE WORKS」と機能連携–音声とテキストでチームワーク向上へ
IT関連
2022-01-22 08:46
ポケモンGO、米国などでポケストップを回せる距離をコロナ禍前の仕様に戻す 反対署名14万件を無視と波紋
くらテク
2021-08-04 18:42
クラフトビール醸造所向けITサービスのBest Beer Japanが7000万円のシード調達、業務店向けクラフトビールEC事業開始
IT関連
2022-02-04 22:31
Facebook、モバイルアプリでニュースフィードを新着順(逆時系列)に表示できる「フィードフィルターバー」を追加
アプリ・Web
2021-04-02 22:57
ITとOTが融合したセキュリティの将来
IT関連
2023-04-11 12:46
静岡銀行、Snowflakeやブレインパッドと生成AIチャットボットを開発
IT関連
2024-10-31 21:15
日本はフィッシング攻撃の標的として世界第3位–ゼットスケーラー調査
IT関連
2024-09-05 13:25