WebAssembly -「こんにちは、世界」

こんにちは、将来のプログラマーたち!今日は、WebAssemblyの世界への興奮的な旅に出発します。これまでにコードを書いたことがないとしても心配しないでください。私たちは最初から順を追って進め、ステップバイステップで学びます。このチュートリアルの最後に、あなたは「こんにちは、世界」というクラシックなメッセージを表示する最初のWebAssemblyプログラムを作成したことになります。それでは、始めましょう!

WebAssembly - “Hello World”

WebAssemblyとは?

コードを書く前に、まずWebAssemblyとは何かを理解しましょう。WebAssembly、しばしばWasmと略されますが、スタックベースの仮想機械のためのバイナリ命令形式です。C、C++、Rustなどの高水準言語のコンパイル先として設計されており、ウェブでのクライアントおよびサーバーアプリケーションへのデプロイを可能にします。

WebAssemblyは、ウェブブラウザ内で高性能のコードを実行する方法として考えられ、あなたのウェブアプリケーションにスーパーパワーを与えるようなものです。

開発環境の設定

WebAssemblyを始めるために、開発環境を設定する必要があります。このチュートリアルでは、WasmFiddle(https://wasmldedle.net/)というシンプルなオンラインツールを使用します。このツールは、ブラウザ内でWebAssemblyコードを書き、コンパイル、実行することができます

最初のWebAssemblyプログラム

ステップ1: Cコードの書き込み

まず、シンプルなCプログラムを作成し、「こんにちは、世界」と表示してみましょう。Cに慣れていない方も心配しないでください。各行を説明します。

#include <stdio.h>

int main() {
printf("こんにちは、世界!\n");
return 0;
}

これを分解すると:

  1. #include <stdio.h>: この行はコンパイラに標準入出力ライブラリを含めるように指示します。ここで使用するprintf関数が含まれています。
  2. int main(): これはプログラムの実行が開始されるメイン関数です。
  3. printf("こんにちは、世界!\n");: この行は「こんにちは、世界!」をコンソールに表示します。末尾の\nは改行を追加します。
  4. return 0;: これはプログラムが正常に終了したことを示します。

ステップ2: WebAssemblyへのコンパイル

このCコードをWebAssemblyにコンパイルしましょう。WasmFiddleでは、Cコードを左パネルに貼り付け、\"Build\"をクリックすると、WebAssemblyコードが中央パネルに表示されます。

ステップ3: WebAssemblyの実行

WasmFiddleには、右側にJavaScriptパネルが提供されており、ここでWebAssemblyコードを実行するコードを記述します。

Module.onRuntimeInitialized = function() {
Module._main();
};

このコードは、WebAssemblyモジュールが初期化されたときに私たちのmain関数を実行するようにブラウザに指示します。

出力

WasmFiddleの\"Run\"をクリックすると、ページの下部のコンソール出力に\"こんにちは、世界!\"が表示されるはずです。おめでとうございます!あなたは初めてのWebAssemblyプログラムを実行したのです!

どのようなことが起こったのか理解する

少し時間をかけて、刚刚起こったことを理解しましょう:

  1. 私たちはシンプルなCプログラムを書きました。
  2. そのCプログラムはWebAssembly、つまり低水準言語にコンパイルされました。
  3. 私たちはJavaScriptを使用して、WebAssemblyコードを読み込んで実行しました。
  4. WebAssemblyコードは私たちのprintf関数を実行し、コンソールに\"こんにちは、世界!\"を表示しました。

まるで私たちがブラウザに新しい言語を教え、その言語を使って世界に\"こんにちは\"と言ったようなものです!

WebAssemblyを使用する理由

おそらく、「JavaScriptを使うだけで十分じゃないの?」と思っているかもしれません。素晴らしい質問です!WebAssemblyにはいくつかの利点があります:

  1. パフォーマンス: WebAssemblyは近いネイティブスピードで実行できるため、計算密集型のタスクにおいてJavaScriptよりもはるかに速くなります。
  2. 言語の選択: C、C++、Rustなどの言語でコードを書くことができます。特定のタスクや開発者にとってより適している場合があります。
  3. セキュリティ: WebAssemblyはサンドボックス環境で実行されるため、セキュリティの追加層を提供します。

結論

おめでとうございます!あなたは初めてのWebAssemblyプログラムを書き、実行しました!私たちはWebAssemblyの可能性の一部しか触れていませんが、このチュートリアルがこの強力な技術に興味を持たせたことを願っています。

忘れないでください、すべての専門家もかつては初心者でした。練習を続け、好奇心を持ち、実験を恐れずにください。誰もが知らない、あなたが開発する次の革新的なウェブアプリケーションが、今あなたが身に付けているWebAssemblyのスキルから生まれるかもしれません!

次のレッスンでは、より複雑なWebAssemblyの例を探求し、HTMLとCSSと統合してインタラクティブなウェブページを作成する方法を学びます。それまでに、お楽しみに!

メソッド 説明
#include <stdio.h> 標準入出力ライブラリを含める
int main() プログラムの実行が開始されるメイン関数を定義
printf() フォーマットされた出力をコンソールに表示
return 0; プログラムが正常に終了したことを示す
Module.onRuntimeInitialized WebAssemblyモジュールが準備できたときにコードを実行するJavaScriptメソッド
Module._main() WebAssemblyモジュールのメイン関数を呼び出す

Credits: Image by storyset