第4のWebブラウザ用言語「WebAssembly」、誰がどのように使っているのか:他の言語から呼び出して使う
ソフトウェアコンサルティング会社のScott Logicが第4のWebブラウザ用言語「WebAssembly」の使用状況について、調査結果を発表した。WebAssemblyアプリケーションの作成に使われている言語やWebAssemblyの使用目的、今後大きな影響を与える分野、改善を要する分野などが明らかになった。
ソフトウェアコンサルティング会社のScott Logicは2021年6月21日(英国時間)、「WebAssembly」の使用状況の調査結果を発表した。
WebAssemblyとは
WebAssembly(「Wasm」と略される)は、Webブラウザを含むモダンな実行環境での効率的なコード実行とコンパクトなコード表現を実現するために設計された、安全でポータブルな低レベルフォーマットだ。
企業の独自規格ではなく、World Wide Web Consortium(W3C)が2019年に標準化を完了し、コア仕様をW3C勧告として公開している。「HTML」「CSS」「JavaScript」に続き、Webブラウザで実行できるコードを作成できる4つ目の言語と位置付けられている。
WebAssemblyは低レベルのアセンブリ言語風だが、人間が読み書きでき、デバッグもできるテキストフォーマットで保存される。ただし、基本的に、開発者が直接記述することを想定しておらず、「C」「C++」「Rust」といった言語の効果的なコンパイル対象となるように設計されている。こうしたさまざまな言語で記述されたコードを、Web上でネイティブに近い速度で実行する方法を提供する。
さらにWebAssemblyは、JavaScriptと並行して動作するように設計されており、両者を連携させることができる。
Scott Logicは「最近ではもともとの用途として考えられていたWebアプリケーションだけでなく、サーバレスやコンテナ、ブロックチェーンアプリケーションでもWebAssemblyの利用が進んできたことを踏まえ、WebAssemblyの使用状況を初めて調査した」としている。
調査では、この技術がどんな分野でどのように使われているか、開発者がこの技術についてどんな見通しを持っているかを明らかにすることを目指したという。
調査で分かった4つの事実
Scott Logicは、調査のハイライトとして次の4項目を挙げている。
(1)最もよく使われている言語
「WebAssemblyアプリケーションの作成に使用している言語は何か」と質問したところ、Rustが最も多くの回答を集めた。「WebAssemblyアプリケーションの作成に今後最も使用したい言語は何か」という質問でも、Rustを挙げた回答が最も多かった。
(2)最も使用したい第2位の言語
「WebAssemblyアプリケーションの作成に今後最も使用したい言語は何か」という質問では、「AssemblyScript」が2番目に多くの回答を集めた。
(3)WebAssemblyの影響範囲
WebAssemblyは、Webやサーバレス、ゲーム、コンテナアプリケーションに大きな影響を与えると期待されている。
(4)改善点
「WebAssemblyは今後、どの分野で最も改善が必要だと思うか」という質問に対し、最も多くの回答者がデバッグサポートを挙げた。
WebAssemblyアプリに使用している言語は
「WebAssemblyアプリケーションの作成に使用している言語は何か」と質問したところ、Rust(26%)が首位となった。C++、AssemblyScript、「Blazor」「Go」が比率でRustに続いた。
Scott Logicは、Rustが最もよく使われている2つの理由を挙げた。第一に開発者の間で人気が高いことだ。StackOverflowの開発者調査では4年連続で「最も愛されている言語」の地位を獲得している。
第二の理由は、WebAssemblyの利用に際して、技術的に適しているからだという。「Rustはガベージコレクションが不要で、バイナリが軽量であり、ツールやコミュニティーのサポートが強力だ」
Rustに次いでよく使われているC++は、コンパイラツールチェーン「Emscripten」を用いてWebAssemblyへのコンパイルを行う。WebAssemblyを最初にサポートした言語であり、ゲーム開発にも広く使われている。
WebAssemblyの使用頻度については、回答者の47%近くが、「頻繁に使っている」と答えている。
今後使用したい言語
「WebAssemblyアプリケーションの作成に今後最も使用したい言語は何か」という質問でも、Rustが最も多くの回答を集めた。2位のAssemblyScriptは、WebAssembly用に設計された、TypeScript風の新しい言語だ。
3〜5位はC++、Go、Blazorで、4位のGoと5位のBlazorは、「WebAssemblyアプリケーションの作成に使用している言語」での順位と入れ替わった。Blazorは、Microsoftが2020年に正式リリースした言語であり、人気を高めている。
WebAssemblyの使用目的
「WebAssemblyをどんな目的で使用しているか」を複数回答可で質問し、自由回答も可能としたところ、「Web開発」を挙げた回答者が圧倒的に多く、ゲーム開発、サーバレス、コンテナ化、オーディオ/ビデオ処理、科学技術が続いた。
WebAssemblyが今後、影響を与える分野
「WebAssemblyは今後、どの分野に最も影響を与えると思うか」という質問に対しては、回答者の67%がWeb開発に、56%がサーバレスに、非常に大きな影響を与えるだろうと答えた。これら以外にも、さまざまな分野に非常に大きな影響を与えるだろうと見ている。
WebAssemblyがブロックチェーンに与える影響については、「分からない」という回答が多い。だが、WebAssemblyはブロックチェーンコミュニティーで注目されており、「Ethereum 2.0」のロードマップに含まれている。
WebAssemblyの機能とニーズ
「WebAssemblyに今後追加される機能の中で、何に興味があるのか」と質問したところ、「非常に興味がある」という回答が最も多かった上位3つは、スレッド、WebAssembly System Interface(WASI)、Interface Typesだった。これらの機能の概要は次の通りだ。
- スレッド WebAssemblyモジュールがスレッド化された実行環境で動作できるようにする
- WASI Bytecode Allianceが主導する仕様であり、Webブラウザ以外の実行環境に対応したさまざまな機能を追加する
- Interface Types 異なる言語で書かれたモジュール間の直接の通信を大幅に容易にする
Scott Logicは「ガベージコレクションの優先順位があまりにも低いことには少し驚いた。C#やAssemblyScriptのような言語は、WebAssemblyモジュールの一部として独自のガベージコレクタを持たなければならない。つまり、ホストのガベージコレクタとの統合への道を開き、より小さく、より効率的なモジュールが実現するだろう」と評価した。
最も改善が必要だと思う部分
「WebAssemblyについて、最も改善が必要な部分はどこか」という質問では、デバッグサポートを挙げる回答が最も多かった。実際、現状ではツールが充実しておらず、大抵の場合、ブレークポイントを用いたデバッグやスタックトレース、ローカル変数検査は不可能だ。
米国の回答者が多かった
今回の調査は2021年6月に行われ、250人が回答した。回答者は196カ国にわたり、米国在住者が全体の21.8%、中国在住者が9.1%、ドイツ在住者が9.1%を占めた。
今回の調査に回答した開発者の属性は次の通りだ。バックエンドで高い開発スキルを持つ回答者が4分の3を超えている。
WebAssemblyは登場したばかりの技術であるため、経験年数が1年未満の回答者が最も多かった。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- WebAssembly
WebAssemblyは、C/C++などで書かれたコードをWebページでも利用できるようにすることを念頭に置いたバイナリフォーマット。 - ブラウザで実行可能な言語「WebAssembly」、Webの標準へ
W3Cは、プログラミング言語「WebAssembly」の標準化を完了し、そのコア仕様をW3C勧告として公開した。高パフォーマンスWebアプリケーションを実現する助けになる。 - オープンソースのJavaScript/WebAssemblyエンジン「V8 release v8.0」が公開
オープンソースのJavaScript/WebAssemblyエンジンの最新版「V8 release v8.0」が公開された。数週間後に正式リリース予定のWebブラウザ「Chrome 80」に搭載される。メモリ消費量が減ったために高速動作する他、プログラマーがバグを作り込みにくい仕組みを取り入れた。