Chiba.rb の皆様
きっと鴨川市でたった一人のRubyユーザの高梨です。一昨年の4月には震災
直後にも関わらず、多くの方に足をお運びいただきまして、誠にありがとう
ございました。m(__)m
ところで、最近 Emscripten (
https://github.com/kripken/emscripten) という面白
い実装があることを知りました。ご存じの方も多いと思いますが、LLVM (
http://j.mp/111UUCn)
の中間段階(LLVM IR)をjavascriptに翻訳する、というものです。
本来は「CをJavaScriptに翻訳するもの」として開発が始まったようですが、C
を読み取るのは LLVM clang 任せであり、Emscripten の本質的機能は上記にな
ります。なぜJSに落とすかといえば、やはりV8の威を借りる」ためだったり、ブ
ラウザで動かしたいロジックを移植するため、なのでしょう。
で、Google App Engine 好きな私は考えたのですが、最終出力をJSではなくGo
にできたら、ステキじゃないかなぁ、と。
なぜなら、GAEではGoバイナリを動かせるからです。(未だExperimental扱いですが)
バイナリと書きましたが、手元でコンパイルしたものを直接アップロードする
のではなく、ソースをあげてGAEにコンパイルしたものを動かせる、という意味
です。
仮に LLVM IR を Go に翻訳するツールがあったら、
- C, C++, Java, Ruby, Python etc... の LLVM 実装は既にあります。それらの言
語をGAEで動かせるようになる。
- GAEの縛りで今まで使えなかった(Cで書かれた)ネイティブライブラリがGAE
で動かせるようになる。(例えば re2 を Rubyから使う、とか)
- LLVM はその中間段階全てにおいて最適化をかけるので、少々Goの最適化が
いけてなくてもおk。
などのことができるようになるわけです。
LLVM IRの文法を深く知っているわけではないのですが、その性質上、アセンブ
ラコードに近く、さほど複雑なものではなさそうです。
Emscripten 自体は、やはりJSで書かれているようですが、翻訳器自身は何で書か
れていようが構わないわけで、ここはやはり使い慣れた Ruby を使いたいところ。
要するに「LLVM IR を Go に変換する、Rubyで書かれたプログラム」を作りた
いわけです。わかりやすいですよね?w
「いいね!やっちゃいなよ、YOU!」とおっしゃる方もいるかもしれませんが、
ちょっと一人で始めるのは心もとない。。。そもそもインタプリタもコンパイラ
も作ったことないですし。(書籍はいろいろ買ってるけど、ほぼ積ん読 orz)
というわけで、Chiba.rbの皆様におうかがいのメールを送っている次第です。
どなたか一緒に始めませんか?構想段階で、コードは1バイトも書いていない
ので、そこからのスタートですけど。
この案に対するご意見・ご感想などもお聞かせいただければと思います。Ruby
*にも*関係する話題なので、突然の投稿お許しください。
P.S.
ところでまつもとさんから「MOONGIFTで取り上げられている」とお知らせいた
だいた当社「NHK語学ラジオ番組キャプチャツール」、今年度のリリースから
「きゃぷる★しゃべる」と改称し(笑)、おかげさまで多くの方からご好評いただ
いております。
実は今年度のものは(今の所)ソースを公開しておりません。というのも約2年間
オープンソースにしてましたが、その間、一片のコードもパッチも寄せられる
ことはなかったから。。。
開発よりも、むしろサポート(不具合やら「動きません」対応)の方が大変で、
今後、年度末・年度始めはバタバタしそうです。
--
(有)高梨IT製作所 高梨 忍 (たかなし しのぶ)
〒299-5503 千葉県鴨川市天津1538-3
Tel.04-7094-2051 / 090-4743-8675
URL:
http://www.takanashi-it-factory.com
Email:
si...@takanashi-it-factory.com
Mobile:
sino...@gmail.com
Twitter: @sinobbish