Unloosenとは
RubyKaigi2022でRuby3.2がWeb Assembly対応をしたという発表がありました。
つまり、RubyがJSのようにブラウザ上で動くのです。
ただ、Ruby Wasmには以下の問題があります。
- 新機能で普及が進んでない
- 素のWasmだとRubyの書きやすさが損なわれる(JSコードを呼び出すようなコードを書かないといけないのです)
そこで、yuma sawaiさんが、Rubykaigi2023 にて上記の問題を解決するためにUnloosenというGoogle Chromeの拡張機能を作成するためのフレームワークを作成したという発表をしました。
Unloosenを使って何をしたの?
Unloosenを使ってTry Ruby Nowという拡張機能を作成しました。
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアルのページ内でRubyコードをすぐに試すことができる拡張機能です。
左のフォームにコードを入れて実行すると右にreturn値が表示されます。
コードはgithubで公開しています、簡単なコードですのでよかったら覗いてみてください。
https://github.com/NaotoCoding/try-ruby-now
どうやって作ったの?
Unloosenに関しては、とにかく以下の3つの記事を参考しました!!! 以上です。
- Unloosenのgithub
- RubyでChrome Extensionを作れるフレームワーク、"unloosen"を使ってContent Sctiptを作成した
- Ruby で Chrome Extension が作れる unloosen を (多分) 最速で試してみた
manifest.jsonの書き方は以下を参考にしてみてください。
え? eval?
入力されたRubyスクリプトを実行するのにevalメソッドを使用しています。
evalは「入力者から任意のRubyコードをサーバー上で実行される」点がよくないという認識を持っています。ただ、Wasmで、つまりブラウザ上での実行なのでサーバー側に何か悪さをされることはないのではと考え、今回は簡単にevalでRubyコードを実行しています。
PCの持ち主以外がブラウザを操作できる場合、他人がそのPCに悪意のあるRubyコードを入力することは確かに可能です。その点は反論できません。