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#で組めるようにしてくれたらいいけども。
コメントは締め切りました。