利用者が増え続ける「WebAssembly」、ブラウザ実行できる4つ目の言語の魅力とはサーバレスやコンテナ化で使われている

ソフトウェアコンサルティング会社のScott Logicは、「WebAssembly」の使用状況に関する2回目の年次調査を実施、結果を発表した。WebAssemblyは「HTML」「CSS」「JavaScript」に続き、Webブラウザで実行可能なコードを作成できる4つ目の言語と位置付けられている。

» 2022年07月01日 15時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 ソフトウェアコンサルティング会社のScott Logicは2022年6月20日(英国時間)、「WebAssembly」の使用状況に関する2回目の年次調査を実施、結果をまとめたレポート「The State of WebAssembly 2022」を発表した。

WebAssemblyとは何か?

 WebAssemblyはWebブラウザを含むモダンな実行環境での効率的なコード実行とコンパクトなコード表現を実現する安全でポータブルな低レベルフォーマットだ。World Wide Web Consortium(W3C)がコア仕様をW3C勧告として公開している。「HTML」「CSS」「JavaScript」に続き、Webブラウザで実行可能なコードを作成できる4つ目の言語と位置付けられている。

 WebAssemblyは低レベルなアセンブリ風言語だが、人間が読み書きでき、デバッグもできるテキストフォーマットで保存される。ただし基本的に、開発者が直接記述することを想定しておらず、「C」「C++」「Rust」といった言語のコンパイル対象となるように設計されている。こうした各種言語で記述されたコードを、Web上でネイティブに近い速度で実行可能だ。

 さらにWebAssemblyは、JavaScriptと並行して動作するように設計されており、両者を連携できる。

調査で分かったこととは?

 Scott Logicは、調査のハイライトとして次の8点を挙げている。

Rustの使用率と使用希望者の割合がともに上昇した
「Python」の使用率が大幅に上昇した
JavaScriptがWebAssemblyの有力な言語となった
「Blazor」の使用率と使用希望者の割合がともに上昇した

最も広く使われているランタイムは「Wasmtime」(後述)だ
サーバレス、コンテナ化、プラグインホストといった目的でのWebAssemblyの使用率が大幅に上昇した
WebAssemblyをよく使っている回答者の割合が大きく上昇した
WebAssemblyの成功には、非ブラウザAPIが必要だと考える回答者が最も多い

WebAssembly開発にどの言語を使っているか

 「WebAssembly開発にどの言語を使っているか、また、試したことがあるか」を尋ねたところ、Rustが最も使われていることが分かった。回答者の45%が、Rustを「よく使っている」「時々使っている」と答えている。

 この結果は驚きではない。ほとんどのWebAssemblyランタイムはRustで書かれており、WebAssemblyベースのさまざまなプラットフォームも同様だからだ。また、Rustでは優れたWebAssemblyツールも利用できる。

WebAssembly開発に使っている言語 Rust、次いでJavaScriptやC++が多い(提供:Scott Logic)

 2022年の調査では、この質問の回答選択肢にJavaScriptを新たに加えたところ、JavaScriptが2番目に使われていることが分かった。JavaScriptはWebAssemblyにコンパイルできないが、JavaScriptエンジンをWebAssemblyにコンパイルし、これを使ってコードを実行できる。これは、非常に実用的だ。

 また、2022年の調査では、WebAssemblyをよく使っていると答えた回答者が67%に達しており、前年調査の47%から大きく上昇している。

 次の図は各言語を「よく使っている」「時々使っている」回答者の割合を前回調査と今回調査で比較したものだ。

WebAssembly開発に各言語を「よく使っている」「時々使っている」割合の変化(提供:Scott Logic)

 Rustの使用率が着実に上昇しているが、最も上昇したのはBlazorとPythonだ。「AssemblyScript」の使用率が最も低下したのは、少し意外だったという。

WebAssembly開発にどの言語を使いたいか

 WebAssembly開発に使いたい言語を尋ねたところ、意外ではないが、回答者の大部分がRustを「大いに使いたい」「やや使いたい」と答えた。Rustは開発者向けQ&Aサイト「Stack Overflow」の年次開発者調査でも、7年連続で「最も愛されている言語」となっている。

WebAssembly開発に使いたい言語(提供:Scott Logic)

 2022年の調査と2021年の調査を比較すると、次のようになった。

WebAssembly開発に各言語を「大いに使いたい」「やや使いたい」回答者の割合の変換(提供:Scott Logic)

 Blazorの上昇が最も大きく、「Go」がそれに続いている。

どのような目的で使っているのか

 「WebAssemblyを現在、どのような目的で使っているのか」を尋ねたところ、Web開発に使っている回答者が圧倒的に多かった。この質問は複数回答可、自由回答可だ。

WebAssemblyの使用目的 Web開発、サーバレス、コンテナ化が多かった(提供:Scott Logic)

 回答結果を2021年の調査と比較したところ、大きな変化が見られた。

WebAssemblyの使用目的の変化(提供:Scott Logic)

 サーバレスやコンテナ化でWebAssemblyを使う人が増えている。2021年の調査では回答選択肢に含まれていなかったプラグイン環境としての使用も、コンテナ化に迫る回答率を獲得している。WebAssemblyは、信頼できないコードを安全な環境でホストするためのランタイムとして使われている。

どのWebAssemblyランタイムを使っているか

 WebAssemblyの非ブラウザベースの使用が増加していることを考慮し、2022年の調査では新たに、幾つかのWebAssemblyランタイムについて、聞いたことがあるかどうか、使っているのかどうかを尋ねた。

WebAssemblyランタイムの使用状況(提供:Scott Logic)

 標準化団体のBytecode Allianceが開発している「Wasmtime」(WasmとはWebAssemblyの省略語)が最も広く使われており、新興企業Wasmerが開発している「Wasmer」がこれに次いで使われている。

どの機能に関心が高いのか

 WebAssemblyはW3Cが管理する公開提案プロセスに従っている。2022年の調査では、フェーズ2(仕様公開)とフェーズ3(実装)の段階にあり、成熟した提案がなされている機能について、関心度を尋ねた。

提案されているWebAssemblyの機能への関心度(提供:Scott Logic)

 共有リニアメモリとアトミクスを追加するスレッド機能への関心が最も高く、例外とガベージコレクションのサポートがこれに続いた。

 WebAssemblyにシステムレベルの統合APIを追加する「WebAssembly System Interface」(WASI)の重要性が増していることから、提案されているWASIの機能に対する関心度も尋ねた。

提案されているWASIの機能への関心度(提供:Scott Logic)

 I/Oタイプへの関心が最も高く、ソケット、ファイルシステム、ネイティブスレッドがこれに続いた。

 さらに、WebAssemblyが今後成功するために何が必要だと思うのかも尋ねた。

WebAssemblyの成功には何が必要だと思うか(提供:Scott Logic)

 非ブラウザAPIと、デバッグサポートの改善が必要だとの回答が特に多く、全体的に、WASIへの関心の高さと、WASIの重要性が浮き彫りになった。

回答者の属性は?

 今回の調査では、299人が回答した。回答者のスキルレベルは広範囲にわたる。

回答者のスキルレベル(提供:Scott Logic)

 2022年の調査では2021年の調査と比べて、バックエンド開発能力が高い回答者が多かった。

WebAssemblyを使用してきた年数、または知っている年数(提供:Scott Logic)

 さらに、WebAssemblyの使用経験が長い回答者が多くなっている。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。