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
大阪府豊中市とNEC、デジタル活用のフレイル・介護予防サービスを開始
IT関連
2023-03-22 05:53
自動車業界向けAWSリファレンス、「WP.29 UN-R 155」対応を支援
IT関連
2024-06-09 00:44
ストライプ、不正防止ソリューションの機能を向上–クレジットカード不正使用増加に伴い
IT関連
2023-02-18 10:03
バイドゥ、自社の生成AIが中国の軍事システム訓練に用いられたとする報道を否定
IT関連
2024-01-18 22:46
WebサービスやSaaS開発で気をつけるべき認証認可におけるロジックの脆弱性。どのようなもので、どう対策すべきか?[PR]
PR
2023-05-25 11:44
富士通、2022年度第1四半期決算は増収減益–中計達成に暗雲も見通し明るく
IT関連
2022-08-02 14:38
PCデポ、HISから出向受け入れ 最大400人、顧客の“デジタル担当者”に
企業・業界動向
2021-02-09 05:56
りそな銀行ら、AI insideの「Developer's API」を採用–請求書から支払データを自動作成
IT関連
2022-07-06 21:32
効率アップにつながる「Slack」のおすすめスラッシュコマンド
IT関連
2023-06-13 14:02
AWS上で開発環境一式、コードリポジトリからテンプレートコード、IDE、CI/CDパイプラインまでを丸ごと提供する「Amazon CodeCatalyst」が正式サービスに
AWS
2023-04-26 12:24
マイクロソフト、1万人の人員削減へ–過去8年間で最大規模
IT関連
2023-01-20 04:41
AIがヒット曲を量産? 人気曲の特徴を学習、メロディやコード進行を自動生成するアプリ登場
ネットトピック
2021-02-23 07:00
音楽を利用して脳卒中患者の歩行能力を改善させるMedRhythms
ヘルステック
2021-08-02 06:37
建ロボテックが鉄筋結束作業を行う「全自動鉄筋結束トモロボ」を開発、年内量産開始を目指す
ロボティクス
2021-07-13 16:55