For IE10+ / Chrome 36+?
これは何?
C++とかのコードをJavaScriptにコンパイルしてしまうemscriptenというツールを使って華和梨をブラウザで動くようにしました。
SAORIとかファイルいじりとか外部干渉するものを除いてDLL版華和梨でできることは全てできるはずです。
library / demo files
- kawari.js (emscripten KAWARI)
- kawarishiori.js (emscripten KAWARIの便利なインターフェースを提供)
- encoding.js (kawarishiori.jsで使用する文字コード変換ライブラリ)(polygonplanet/encoding.js · GitHub)
demo code
resources
references
- Download and install - Emscripten 1.25.2 documentation
- Zopfli を Emscripten で移植した際の備忘録 : document
- ホイール欲しい ハンドル欲しい >> Emscripten C++/OpenGL ES 2.0 (9) C関数呼び出しと FileSystem
- Emscripten: Pointers and Pointers
DEMO
一連のSHIORIの流れを手動操作できます。
kawarirc.kis
華和梨の初期化辞書ファイルkawarirc.kisを記述しましょう。
これはHTML5 FileSystem API上の"/home/web_user/kawarirc.kis"に保存されます。
これを書き終えたらSHIORIの起動をします。
load()
SHIORI load(dir)を実行します。
dirの値はディレクトリでいいはずですが、今回なぜかfilepath+"/kawarirc.kis"を呼んでくれないので、"/home/web_user/kawarirc.kis"を渡しています。修正しました。
このボタンは正確にはloadを実行する前にkawarirc.kisを保存してからload()しています。
RESULT:
request()
SHIORI request()を実行します。
いわゆるSHIORI/3.0のイベントはここで投げます。いろいろ投げてください。
unload()
SHIORI unload()を実行します。
RESULT:
all result console
つまるところ
既存ゴーストが動作するWebベースウェアは作成可能ということ。
API Documentation
kawari.jsを使う方法について。
kawari JS interface
kawari.jsについて
class Kawari
クラスKawariをエクスポートしています。
var kawari = new Kawari(); var Module = kawari.Module; var FS = kawari.FS;
このModuleとFSの詳細についてはemscriptenのドキュメントをご覧ください。
Moduleからはload, unload, requestの各関数が呼べます。
kawarishiori.js
load, unload, requestの呼び出しにはポインタへのメモリ確保、文字コード変換など煩雑な手順が必要です。
これについてラップし、使いやすいインターフェースを提供します。
依存
kawari.jsとencoding.jsを先に読み込んでください。
<script src="encoding.js"></script> <script src="kawari.js"></script> <script src="kawarishiori.js"></script> <script> var kawarishiori = new KawariShiori(); var Module = kawarishiori.Module; var FS = kawarishiori.FS; </script>
class KawariShiori
load(dirpath)
load()です。なぜかemscripten KAWARIはload時のdirpathに'/kawarirc.kis'を付加しないファイルを読みに行くみたいなので、下記のような指定をすることになると思います。
var ret = kawarishiori.load('/home/web_user/kawarirc.kis');
unload()
unload()です。
var ret = kawarishiori.unload();
request(str)
request()です。
var response = kawarishiori.request('GET SHIORI/3.0\r\nID: version\r\n\r\n');
実例
test.js (demo code)をご覧ください。