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
生成AIで盛り上がる半導体市場、日本企業も活躍
IT関連
2023-06-06 04:52
Instagram、嫌がらせDMリクエストを見ないで削除できる機能を追加
アプリ・Web
2021-04-23 12:42
HashiCorp、「HCP Packer」にパイプラインメタデータ追跡機能–「SLSA」レベル1に準拠
IT関連
2024-08-08 20:46
「iPadOS 18」で「M4」チップ搭載「iPad Pro」が「文鎮化」–一部ユーザーが報告
IT関連
2024-09-20 14:50
セールスフォース・ドットコム、教育機関向けCRM基盤の国内提供を開始
IT関連
2021-05-07 18:06
株価の日米格差はなぜ?–米国株はバイデン増税に要注意
IT関連
2021-04-30 17:35
首に巻くエアコンが進化 富士通ゼネラルの水冷ウェアラブルデバイス
くらテク
2021-05-19 03:42
カインズ、Dynamics 365でECの受発注を統合管理
IT関連
2022-03-01 14:33
Windows 11チェックプログラムに「アップデートできない理由」が分かる新機能
企業・業界動向
2021-06-29 20:03
満足度は高いプログラミング言語「Go」–一部機能の不足に不満も
IT関連
2021-05-08 12:15
カプコン、不正アクセス被害の調査結果を公表 旧型VPN装置にサイバー攻撃
セキュリティ
2021-04-15 00:01
Firefox 111、Webアプリからローカルファイルにアクセスできる「Origin Private File System」が正式機能に。これでChrome、Safari、Firefoxが対応
Firefox
2023-03-20 02:43
NFT総合マーケットLINE NFTが4月13日開始―吉本興業など17コンテンツと提携・Web3への入口を目指す
IT関連
2022-03-25 20:28
株主優待で人気のJR4社–悲観の底に沈む「JR東日本」に今、注目する理由
IT関連
2021-03-16 17:57