VSCode for Web、WebAssembly版言語ランタイムやシェルを拡張機能として実験的に実装。Webブラウザローカルでコードやシェルを実行可能に

今回は「VSCode for Web、WebAssembly版言語ランタイムやシェルを拡張機能として実験的に実装。Webブラウザローカルでコードやシェルを実行可能に」についてご紹介します。

関連ワード (対応、部分、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

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


Visual Studio Code(VSCode)をWebブラウザで利用可能にしたVSCode for Webは、ローカルマシンにVSCodeをインストールすることなく、WebブラウザさえあればGitHub上のソースコードなどを編集可能にする便利なサービスです。

ただし、VSCode for WebはWebブラウザ上で実行されているため、コードを実行するにはサーバなど、言語のランタイムがインストールされている別のマシンが必要となります。

この点は、ローカルマシン上のランタイムを用いてコードを実行できる、デスクトップアプリケーションとしてのVSCodeと比べた場合の、VSCode for Webの欠点といえます。

そこでこの欠点を補うべく、WebAssembly化したPythonなどのランタイムをVSCode for Webの拡張機能として利用できる「WASM execution engine extension」(WASM実行エンジン拡張機能)および、そのランタイムを操作できるシェルを拡張機能とする「Web Shell extension」(Webシェル拡張機能)の実験的実装が、VSCodeのブログに投稿された記事「Run WebAssemblies in VS Code for the Web」で公開されました。

これらを用いることで、まるでローカルマシン上のVSCodeのように、VSCode for Webで外部のマシンに依存することなくWebブラウザローカルでPythonを実行し、ターミナルからシェルを操作できるようになります。

VSCodeからWebAssemblyを実行するエンジンを拡張

ブログの説明によると、WASM実行エンジン拡張機能は、VSCode API上にWebAssemblyのクロスプラットフォーム対応のランタイム仕様であるWASI(WebAssembly System Interface)を実装したものだと説明されています。

これによりWASIに対応したPythonランタイムを別のワーカースレッドで実行し、それをVSCode for Webと連携させています。

下記はVSCode for WebでPythonのWASI対応ランタイムを用いてPythonコードを実行したときのデモ動画の画面です。たしかにターミナル部分に「Hello, World」が出力されています。

fig

Webシェル拡張機能の方は、UNIXのシェルをWebAssembly化しようとするとOSのプロセス生成機能などに依存する実装のために困難だったとして、基本的な機能はTypeScriptで実装し、lsやcatといった主要なコマンドをWebAssebly化したと説明されています。

下記は同じくデモ動画から。

fig

WASIの次バージョンへの対応やPOSIX対応に注目

開発チームは、現在策定が進行中のWASIの次バージョンとなるWASI Preview 2のサポートも予定しているとのことです。

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

また、Webシェル拡張機能の実装についても、Wasmerが提唱するWASIをPOSIX対応に拡張したWASIX仕様について注目しているとのこと。

参考:WebAssemblyをPOSIX対応に拡張した「WASIX」登場、bashやcurl、WebサーバなどLinuxアプリが実装可能に。Wasmerが発表

言語のランタイムについても、WebAssemblyバイナリ化されたPHPやRubyのランタイムの動作などを確認していくとしています。

WebブラウザをOSレイヤ化していくWebAssembly/WASI

1つ前の記事では、DockerコンテナイメージをWebAssemblyに変換する「container2wasm」を紹介しました。これを用いてVSCodeを組み込んだLinux版のDockerコンテナをWebAssembly化すれば、(いまは無理でもいずれ)Linux OSを入れたローカルマシン上でVSCodeを動かすのと同じように、Webブラウザ上でLinuxのローカルマシンを動かし、そこでVSCodeを実行できるようになるかもしれません。

今回のVSCode for Webはそれとは異なるアプローチとして、VSCode上でWebAssemblyを用いて言語のランタイムやOSのシェルを実装していますが、いずれにせよ、Webブラウザの上でローカルマシン上のアプリケーションの動きを再現しようとしているわけです。

そのいずれの実装においてもカギとなっているのはWebAssemblyとWASIです。この2つの技術は、さまざまなアプローチでWebブラウザ(およびWebAssemblyランタイム)をアプリケーションにとっての新たなOSレイヤとしていく推進力になっています。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
AWS、無料のアプリ開発トレーニングシリーズ–Twitchで毎週配信
IT関連
2021-02-03 08:38
NVIDIA、AIチャットボットの安全利用を支援する「NeMo Guardrails」を発表
IT関連
2023-04-27 06:11
拡張現実をさらに拡張する「AAR」 頭上のプロジェクターからARで見えているものを投影 :Innovative Tech
イラスト・デザイン
2021-03-13 14:03
フォードの電気自動車F-150 Lightningは停電時には家庭に電力を供給
モビリティ
2021-05-22 19:29
Docker DesktopからGitHub Actionsビルドの詳細が参照可能に。Windows on Arm版も登場したDocker Desktop 4.31正式版リリース
Docker
2024-06-19 17:02
Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に
Python
2023-09-11 00:40
全社DX推進後のゴールイメージを視覚化・言語化する
IT関連
2022-02-22 20:05
生成型AIは業務の生産性向上に貢献する–全米経済研究所の調査
IT関連
2023-04-26 02:08
グーグル、「ゼロデイ攻撃」の分析結果と6つの推奨策を提示
IT関連
2024-04-17 04:30
若い世代は対面よりデジタル体験を重視–アドビ調査
IT関連
2022-06-09 19:12
富士通、「エンタープライズ生成AIフレームワーク」を開発–特化型生成AIを自動生成
IT関連
2024-06-06 02:38
リスキリング後の昇給に前向きな企業は約7割–パーソルイノベーション「学びのコーチ」調査
IT関連
2023-03-15 03:38
サステナビリティーはビジネスで進める–SAPの最高責任者に聞くポイント
IT関連
2022-07-12 20:31
NECプラットフォームズ、甲府事業所に太陽光発電システムを導入
IT関連
2021-08-04 00:31