WebAssembly の漫画での紹介

[この記事は”A cartoon into to WebAssembly“の翻訳です]

WebAssembly は高速です。あなたはおそらくこのことは聞いたことがあるでしょう。しかし何が WebAssembly を高速に動作することをできるようにしているのでしょうか?

このシリーズでは、なぜ WebAssembly が高速に動作するのかの説明を行いたいと思います。

WebAssembly とは何ですか?

WebAssembly は JavaScript 以外のプログラミング言語で書かれたコードをブラウザ上で実行する方法です。人々が WebAssembly が高速と言っているときは、JavaScript と比較しています。

これが二者択一の状況-つまり WebAssembly を使うか JavaScript を使うかのどちらか一方-だとは暗示したくありません。実際、開発者が同じアプリケーションで WebAssembly と JavaScript の両方を使用することを期待しています。

しかし、これら2つを比較することは有益であり、WebAssembly が持つであろうインパクトを理解することができるでしょう。

パフォーマンスの歴史を少し

JavaScript は1995年に作成されました。しかし高速に動くように設計されてはおらず、最初の10年は速くありませんでした。

その後ブラウザはより競争的になりました。

2008年、人々がパフォーマンス戦争と呼ぶ期間が始まりました。複数のブラウザに JIT とも呼ばれるジャストインタイムコンパイラが追加されました。JavaScript が実行されている最中、JIT はパターンを見て、そのパターンに基づいてコードをより高速に実行することができます。

これらの JIT の導入により、JavaScript のパフォーマンスに変革がもたらされました。 JavaScript の実行速度は 10 倍になりました。

A graph showing JS execution performance increasing sharply in 2008

パフォーマンスが改良されたことにより、JavaScript は Node.js を使ったサーバーサイドプログラミングのように、これまでに使用されることが予想されなかったものに対して使用され始めました。 パフォーマンスの向上により、全く新しい種類の問題に JavaScript を使用することが可能になりました。

もしかすると我々は今、WebAssembly によって新たな変曲点にいるのかもしれません。

A graph showing another performance spike in 2017 with a question mark next to it

では、WebAssembly を高速化する要素を理解するために詳細を掘り下げてみましょう。

背景:

過去の WebAssembly:

未来の WebAssembly:

Lin Clark に関して

Lin は Mozilla Developer Relations チームのエンジニアです。 彼女は JavaScript、WebAssembly、Rust、Servo を使っています。また、コードの漫画を描きます。

Lin Clark によるその他の記事はこちら…

2 件のコメント

  1. AnonymousCoward :

    まず、翻訳していただいてありがとうございます。
    致命的な誤訳もさほど多くなく、読みやすいです。
    大変ありがたいのが、原文へのリンクがあることです。
    コメント欄もあり指摘ができるので、より良いものになるよう、誤訳を指摘させていただきます。
    世には原文も示さず指摘もできない状態で酷い訳を公開する人や組織が多く、残念なことです。

    1
    × WebAssemblyを使用しているかJavaScriptを使用しているかに関しては暗示したくありません。
    「either/or situation」の意味が取れなかった?
    → これが二者択一の状況-つまりWebAssemblyを使うかJavaScriptを使うかのどちらか一方-だとは暗示したくありません。

    ? JavaScript が実行されているため、JIT は
    そのasは「最中」と取った方が自然では。
    → JavaScript が実行されている最中、JIT は

    1. T.Ukegawa :

      ご指摘ありがとうございます。遅くなりましたが指摘内容を反映しました。