懸案だったJotaのマクロ言語組み込みの件。やっといい感じの方向性を思いついた。
とりあえず去年はJota+にRhino(Javaで書かれたJavaScript実装)を組み込んでみて、とりあえず呼び出せるレベルの動作確認はしておいたわけなんだけど、どうにもこうにも安定した実装のイメージが湧かないまま放置になっていました。
軽くまとめるとこんな感じ。
案1. JotaにRhinoを組み込む
長所 直接呼び出せる。単一の実装。
短所 フットプリントの増大。よく分からないものを抱え込むことに依る不安定化。
案2. WebViewのJavaScriptを使う
長所 直接呼び出せる。フットプリントが小さい。
短所 実装が多岐にわたるので互換性の確保が難しい。メモリ消費が大きい。
どーしたもんかな、と放置していたわけです。
で、今日思いついたのがこんな感じ。
案3.外部アプリとしてRhinoを組み込んだアプリを作る
長所 単一実装。Jotaのフットプリント・メモリ空間は喰わない
短所 外部アプリとの接続にオーバーヘッドが発生。
この場合、スクリプトエンジンとのインタフェースをきっちり定義しなきゃいかんわけだけど(ああめんどくさい)、Jota側には外部接続の口だけ作ればいいので、単体アプリとしての負荷は減る、と。
ついでに、俺的はブラックボックスなRhinoを丸ごと外部アプリに隔離することが出来ると。
多分この方式なら安定する。と思う。
ここまで決まれば、あとは仕事している最中に実装イメージ沸いてくるだろということで、今週のJotaは終わり。
えっと、androidのアプリは作った事ないので、半端な知識ですみませんが、外部アプリにした場合、AIDLでプロセス間通信するって感じになるんでしょうか?
Jota側がActivityで、マクロ言語を処理する側がServiceってことかな…。Service側からCallbackでJota側の機能を呼び出せるなら、独自のマクロ言語とか作って実装できそうだけど。
この辺↓の情報見て思っただけなので、なんか間違ったこと思っちゃっているかもしれないけど…
http://xfutures.jp/2009/07/20/92/
Jota側のカーソル位置の制御、指定領域のテキストの取得や挿入・置換、テキストの表示位置の制御あたりがマクロ言語アプリ側から出来れば、面白いこと出来そうな気がするんですけどね。