WASI とは?
多様な環境にわたってオペレーションの効率化を目指す経営者にとって、統合は大きな課題です。ツールが孤立していると、従業員は非効率やフラストレーションに直面し、その結果、機会を逃す可能性があります。
Web ブラウザ外で WebAssembly モジュールを実行するための共通規格を提供することで、WebAssembly System Interface(WASI)はソリューションを提供し、企業で使用されている他のシステムやソフトウェアとのよりスムーズな統合を可能にします。
以下では、WASI に関する詳細と、WASI を導入することでプロセスを最適化し、開発者の生産性を高め、ビジネスを新たな高みに導く方法をご紹介します。
WASI とは?
WebAssembly System Interface(WASI)は、 WebAssembly(Wasm)がブラウザの外部で実行できることを拡張するために設計された取り組みです。Wasm モジュール向けの標準化されたシステムインターフェイス(API)を提供し、一貫した動作を維持しながら、さまざまなプラットフォームでシステムリソースと安全かつ効率的にやり取りできるようにします。
Wasm と WASI
Wasm と WASI は似ているように見えるかもしれませんが、オペレーションの最適化に貢献する異なる目的を持っています。それぞれの違いを理解することは、それらを組み合わせた強みを活用するうえで重要です。早速、詳しく見てみましょう。
Wasm
Wasm によって、あらゆる CPU でコードを迅速かつ効率的に実行できるようになるため、どこでも優れたパフォーマンスを発揮するアプリケーションの開発が可能になります。その主な目的は、多様なハードウェアでバイナリ命令を実行することです。
以下は主な特徴の一部です。
汎用的な利用: 一度コードを書くだけで WebAssembly をサポートするあらゆる環境で実行できます。
速度: コンパクトな形式で、直接コンパイルできるため、ネイティブに近いパフォーマンスを達成できます。
セキュリティ:コードを保護された領域に隔離し、脆弱性を軽減します。
モジュール性: 作業を再利用可能なコンポーネントに分割できます。
基本的に、WebAssembly は業界全体で使用されているさまざまな CPU を抽象化し、これらの CPU 間でコードを移植できるようにします。
WASI は Wasm をどのように強化しますか?
WASI は、コードが基盤となるシステムとやり取りできるようにすることで、WebAssembly の機能を拡張します。Wasm がプラットフォーム間での迅速な実行に重点を置く一方で、WASI は追加の機能を提供します。
主な強みは以下のとおりです:
システムアクセス:ファイルの読み取りと書き込み、ネットワーキングなどを可能にします。
標準化:一貫性のある API により、プラットフォーム間で一貫した動作が保証されます。
セキュリティ: 必要な権限のみを付与することでリスクを最小限に抑えます。
柔軟性:モジュール式のアプローチにより、必要なシステムインタラクションのみを実装します。
Wasm と WASI には違いがあるものの、連携して動作するように設計されています。Wasm は効率的でユニバーサルな実行を担い、WASI はシステムレベルの機能を提供することで、コードが重要なタスクを実行するあらゆる場所で機能を強化します。両方を併用することで、要件に合わせてカスタマイズされた強力なクロスプラットフォーム・アプリケーションを作成できます。
WASI の目的は何ですか?
WASI は、WebAssembly(Wasm)が企業の間で普及するにつれて生じた特定の課題に対処するために開発されました。Wasm はプラットフォーム間でコードを効率的に実行することに優れていますが、その制約によってより広範な採用が妨げられています。
そこで Wasm の制約について見てみましょう。
アクセス制限:Wasm は安全な環境で動作します。これは、特にブラウザにおいてセキュリティ上重要です。ただし、これは Wasm がファイルやネットワークなどのシステムリソースに直接アクセスできないことを意味します。
限定的なネイティブインタラクション: 主に Web 向けに設計されている Wasm は、システム機能とのインタラクションが最小限に限られています。システム API に直接アクセスできない Wasm モジュールは、ファイルシステムへのアクセスやブラウザ外でのネットワーク通信などのタスクを実行できません。
断片化されたツール:Wasm がリソースとやり取りする標準化された方法がなかったため、開発者は環境固有の拡張機能やカスタムソリューションに頼ることになりました。これらの多様なアプローチによりツールが断片化され、Wasm モジュールの動作が環境によって異なり、クロスプラットフォーム開発が複雑になりました。
Wasm がブラウザ外でも普及するにつれ、統一されたシステムインターフェイスの需要が大きく高まりました。そして、このような需要が WASI の開発へとつながったのです。WASI は以下の目的に欠かせません。
断片化への対応:WASI は、さまざまなプラットフォームで使用できる単一の API セットを提供し、Wasm モジュールがどこで実行されても同じように動作することを保証します。これにより開発が簡素化され、互換性の問題が軽減されるため、サーバーやエッジ デバイスなど向けのアプリケーションを構築できるようになります。
セキュリティとポータビリティの向上: システム間のインタラクションのための標準インターフェイスを定義することで、 セキュリティも強化されます。機能ベースのセキュリティモデルに従い、Wasm モジュールには必要な権限のみを付与することで、リスクを低減します。
WASI の API
WASI は、WebAssembly アプリケーションを実行するための強力な環境を提供するために連携して動作する、いくつかの重要な要素で構成されています。これらのコンポーネントは WebAssembly の機能、セキュリティ、柔軟性を強化し、ブラウザ以外の多くの用途に適したものにします。以下はその主なコンポーネントです:
API
WASI インターフェイスは、WebAssembly モジュールが基盤となるシステムとやり取りできるようにする API を提供します。これらの API は、モジュールがさまざまなタスクを実行するためのインターフェイスとして機能し、モジュールがその環境で効果的に動作するために必要なツールを確実に利用できるようにします。主要 API には以下が含まれます。
ファイル I/O: WASI を通じてモジュールはホストシステム上でファイルを読み書きできるようになります。この機能により、モジュールは データストレージ、設定ファイル、ユーザーが作成したコンテンツを管理できるようになります。これは、永続的なデータに依存するアプリケーションにとって不可欠です。
ネットワーキング:インターフェイスにはネットワーク API が含まれており、モジュールがネットワーク接続を確立および管理できるようになります。この機能は、インターネットまたはローカルネットワークを介して通信する必要があるアプリケーションにとって非常に重要であり、単純な HTTP リクエストからより複雑なネットワークオペレーションまでのタスクをサポートします。
Time: このインターフェイスにより、WebAssembly モジュールはシステムクロックと通信して現在時刻を取得したり、時間間隔を測定したりすることが可能になります。この API は、イベントのログ記録やタスクのスケジュール管理、オペレーションにかかる時間の測定などのタスクに不可欠です。
ランダム性: このインターフェイスは、暗号化キーを生成する、一意の識別子を作成する、または安全なプロトコルを実装するなど、質の高いランダム性を必要とするタスクに最適です。
ターミナルの入出力: これらの API は標準入力、標準出力、および標準エラーストリームを扱い、コンソールまたはその他の I/O ストリームとのインタラクションを可能にします。
WASI の未来
WASI 0.2 は進化を続けており、 新機能を導入する継続的な取り組みや、ソケット、HTTP、キー・バリューおよび BLOB ストレージ、設定、メッセージング、暗号化、コンポーネントモデルなどの機能が追加されています。多くの業界や組織が、クロスプラットフォーム開発を簡素化し、ビジネスアプリケーションのセキュリティとパフォーマンスを強化するために WASI を採用しています。
今後、互換性と組み合わせやすさという基本原則が、WASI のバージョン間の移行を導くことになります。これらの原則により、システムアクセスを必要とする既存の WebAssembly アプリケーションは、 WASI の進化に伴っても機能し続けます。現行の WASI API を使用して今アプリケーションを構築することで、今後の機能を組み込むための選択肢も維持できます。
Fastly と WASI
Fastly は Wasm と WASI の開発と採用に大きく貢献しており、World Wide Consortium (W3C) と Bytecode Alliance における標準化とオープンソース実装への貢献を継続しています。
Fastly がオープンソースをどのようにサポートしているかと、Fastly Compute が開発者によるエンドユーザー向けの最高のエクスペリエンスの構築をいかに容易にするかについて、詳しくご覧ください。今すぐ無料トライアルを開始しましょう。




