WebAssemblyは使いやすさ目的ではない

2023-03-28 | からatode.net | ファイル: ゲーム - 開発環境.

C# + monogameをベースとしたWindowsゲームの開発は一番やりやすいけれども、安全に一般配布するためにはコードサイニング証明書が必要なことがわかった。
勝手気ままにアプリを作って全世界に一般配布できる、何年放置しても(運が良ければ)そのまま動作するのはWebアプリだけ。事務手続きも審査も不要。リリース後の保守更新も不要。

WebアプリといえばJavaScriptだが、JavaScriptはプログラミング言語としてはクセが強い。
ブラウザが標準対応しているアプリ環境としては JavaScript以外にWebAssemblyがある。
WebAssemblyはJavaScriptに代わるものなのか?

JavaScriptにはいくつかの側面がある。
1.プログラム記述言語
2.プログラム実行環境
3.ブラウザの持つ各種入出力機能を制御する制御装置

WebAssemblyはこのうち
2.プログラム実行環境
 この側面しか持たない。JVM(Java仮想マシン)のようにバイトコードを実行できるだけ。
3.ブラウザの持つ各種入出力機能を制御する制御装置
 WebAssemblyはJVMのような外部との入出力機能は持たない。※1
 画面表示も、タッチ入力も、音を出すことも、ネットワーク通信も、ファイルアクセスもできない。
1.プログラム記述言語
 WebAssembly自身はプログラミング言語ではない。RustやC++でWebAssembly向けのプログラムを開発する。

※1 WebAssembly起動時に渡されたJavaScript関数のみ呼び出し可能。

入出力が無いので使い道は限られる。計算はJavaScriptより早いので、ブロックチェーンや

WebAssemblyはJavaScriptを置き換えるのではなく、JavaScriptから呼び出すライブラリやサブルーチン的な使い方が向いていそう。ブロックチェーンやAI、暗号化、データベース処理とか?
もちろん重たいゲームのロジック部分を動かすのにも向いているけど、そこまでCPU性能は求めていない、単にC++でプログラムが組めれば楽だ、程度の目的には向いていなかった。

WebAssemblyに入出力機能まで持たせてしまうと、万能すぎてセキュリティー的に極めて危険なので、将来はWebAssemblyがバージョンアップしてどんどん便利になる…といったことは無いのだろう。VisualStudioがうまく隠ぺいしてくれて、WebGL含めた入出力もC#で組めるようにしてくれたらいいけども。


  • 全ての投稿は一般論ではなく完全主観の独断偏見であり「いや違う / お前が知らないだけ / 例外が沢山あるぞ / その要素よりこっちの方が重要 / 言ってることが矛盾してる / 人それぞれだろ / 作りたいもの作るだけだろ」etcは無限にあるし、それ承知の上だから突っ込まれても困る。


コメントは締め切りました。