いけむランド

はてダからやってきました

JavaScript で勉強がてらに何かしらのデスクトップアプリケーションを書こうとした時に思ったこと

例えば、ちょっと前まで流行ってたオレオレ言語インタプリタを書こうとすると、オレオレ言語で記述されたソースコードをどうやって読み込めばいいのか?つまり、ファイル I/O ってどうやるの?という疑問。


普通に JavaScript を使いこなしている人は

  • script タグにオリジナルの MIME タイプを指定して、その MIME タイプをキーにして、タグ内の文字列を取得する。*1
<script type="application/x-mylang">
  オレオレ言語で記述されたソースコード
</script>
var scripts = document.getElementsByTagName("script");
for (var i = 0, len = scripts.length; i < len; i++) {
    if (scripts[i].type == "application/x-mylang") {
        interpret(scripts[i].text);
    }
}
  • textarea タグで生成される領域に入力された文字列を取得する。*2
<textarea id="mylang">オレオレ言語で記述されたソースコード</textarea>
interpret(document.getElementById('mylang').value);

みたいな方法で実装してるわけだけど、これって HTML 経由で文字列としてオレオレ言語のソースコードを貰っているのだから、JavaScript インタプリタで読み込んでいるわけではないと思う。

だけど、みんなこのように書いているということはやっぱり JavaScript インタプリタのみではデータの読み込みはできないということなのだろう。*3

ということは JavaScript はデスクトップアプリケーションを書くには向いていない言語なのかもしれない。

*1:参考 : http://svn.coderepos.org/share/lang/javascript/naoscheme/naoscheme.js

*2:参考 : http://blog.livedoor.jp/dankogai/archives/51005691.html の真ん中あたりの textarea

*3:そもそも JavaScript でローカルのファイルを自由に読み込めたら、セキュリティもクソもないということになるだろうし。