利用者が増え続ける「WebAssembly」、ブラウザ実行できる4つ目の言語の魅力とは:サーバレスやコンテナ化で使われている
ソフトウェアコンサルティング会社のScott Logicは、「WebAssembly」の使用状況に関する2回目の年次調査を実施、結果を発表した。WebAssemblyは「HTML」「CSS」「JavaScript」に続き、Webブラウザで実行可能なコードを作成できる4つ目の言語と位置付けられている。
ソフトウェアコンサルティング会社の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ツールも利用できる。
2022年の調査では、この質問の回答選択肢にJavaScriptを新たに加えたところ、JavaScriptが2番目に使われていることが分かった。JavaScriptはWebAssemblyにコンパイルできないが、JavaScriptエンジンをWebAssemblyにコンパイルし、これを使ってコードを実行できる。これは、非常に実用的だ。
また、2022年の調査では、WebAssemblyをよく使っていると答えた回答者が67%に達しており、前年調査の47%から大きく上昇している。
次の図は各言語を「よく使っている」「時々使っている」回答者の割合を前回調査と今回調査で比較したものだ。
Rustの使用率が着実に上昇しているが、最も上昇したのはBlazorとPythonだ。「AssemblyScript」の使用率が最も低下したのは、少し意外だったという。
WebAssembly開発にどの言語を使いたいか
WebAssembly開発に使いたい言語を尋ねたところ、意外ではないが、回答者の大部分がRustを「大いに使いたい」「やや使いたい」と答えた。Rustは開発者向けQ&Aサイト「Stack Overflow」の年次開発者調査でも、7年連続で「最も愛されている言語」となっている。
2022年の調査と2021年の調査を比較すると、次のようになった。
Blazorの上昇が最も大きく、「Go」がそれに続いている。
どのような目的で使っているのか
「WebAssemblyを現在、どのような目的で使っているのか」を尋ねたところ、Web開発に使っている回答者が圧倒的に多かった。この質問は複数回答可、自由回答可だ。
回答結果を2021年の調査と比較したところ、大きな変化が見られた。
サーバレスやコンテナ化でWebAssemblyを使う人が増えている。2021年の調査では回答選択肢に含まれていなかったプラグイン環境としての使用も、コンテナ化に迫る回答率を獲得している。WebAssemblyは、信頼できないコードを安全な環境でホストするためのランタイムとして使われている。
どのWebAssemblyランタイムを使っているか
WebAssemblyの非ブラウザベースの使用が増加していることを考慮し、2022年の調査では新たに、幾つかのWebAssemblyランタイムについて、聞いたことがあるかどうか、使っているのかどうかを尋ねた。
標準化団体のBytecode Allianceが開発している「Wasmtime」(WasmとはWebAssemblyの省略語)が最も広く使われており、新興企業Wasmerが開発している「Wasmer」がこれに次いで使われている。
どの機能に関心が高いのか
WebAssemblyはW3Cが管理する公開提案プロセスに従っている。2022年の調査では、フェーズ2(仕様公開)とフェーズ3(実装)の段階にあり、成熟した提案がなされている機能について、関心度を尋ねた。
共有リニアメモリとアトミクスを追加するスレッド機能への関心が最も高く、例外とガベージコレクションのサポートがこれに続いた。
WebAssemblyにシステムレベルの統合APIを追加する「WebAssembly System Interface」(WASI)の重要性が増していることから、提案されているWASIの機能に対する関心度も尋ねた。
I/Oタイプへの関心が最も高く、ソケット、ファイルシステム、ネイティブスレッドがこれに続いた。
さらに、WebAssemblyが今後成功するために何が必要だと思うのかも尋ねた。
非ブラウザAPIと、デバッグサポートの改善が必要だとの回答が特に多く、全体的に、WASIへの関心の高さと、WASIの重要性が浮き彫りになった。
回答者の属性は?
今回の調査では、299人が回答した。回答者のスキルレベルは広範囲にわたる。
2022年の調査では2021年の調査と比べて、バックエンド開発能力が高い回答者が多かった。
さらに、WebAssemblyの使用経験が長い回答者が多くなっている。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 第4のWebブラウザ用言語「WebAssembly」、誰がどのように使っているのか
ソフトウェアコンサルティング会社のScott Logicが第4のWebブラウザ用言語「WebAssembly」の使用状況について、調査結果を発表した。WebAssemblyアプリケーションの作成に使われている言語やWebAssemblyの使用目的、今後大きな影響を与える分野、改善を要する分野などが明らかになった。 - 2021年に躍進したWeb技術は?
Q-SuccessはさまざまなカテゴリーのWeb技術について、2022年1月1日と2021年1月1日の使用Webサイト数を比較し、最も増加数が大きかった上位3つの技術を「Web Technologies of the Year 2021」として発表した。コンテンツ管理システムやサーバサイドプログラミング言語、JavaScriptライブラリなど17種類の技術が対象だ。 - なぜわざわざ学習コストを払ってまでRustを採用するのか? Webエンジニア目線でRustを考察
Web開発者としての興味、関心に基づきRustを端的に紹介し、その強みや弱みについて理解を深める本連載。第1回では、Rustを採用するモチベーションとは何かを整理、考察します。