使いたくなったときにサッと使えるようにメモ。Docker イメージを用意しておいて docker run すればコンパイルできる、という形にしたい。 プログラムが小さいうちはわざわざ事前コンパイルしなくても問題ないのですが、大きくなってくると事前コンパイルすることによる時間短縮が効いてきますし、source map ありでデバッガが使えて捗ります まずは Dockerfile。Opal と DXOpal を含んだイメージを作ります。素の DXOpal ではなく、フォークして修正を加えたブランチを使っているのがポイント(後述)。 # Dockerfile FROM ubuntu:22.04 RUN apt-get update \ && apt-get install -y --no-install-recommends \ git \ ruby \ && apt-get clean \ &
インストール不要!Rubyでゲーム、ビジュアルアート開発ができる新環境「rbCanvas/p5」の紹介Rubyゲーム制作初心者向けp5.jsrbCanvas rbCanvas/p5 https://rbcanvas.net/p5/ (rbCanvas/p5公式ページ より) 1. はじめに Rubyでゲームプログラミングというと、DXRubyライブラリが多く使われてきました。また、DXRubyと互換性のある統合開発環境として、rbCanvasや DXOpalなどもあります。 今回紹介する「rbCanvas/p5」は、上記のrbCanvasと姉妹関係にありますが、グラフィックの表現力がより強力で多彩になり、3D表現もできるようになりました。 これは、ビジュアルアートの分野で使われているProcessingや p5.js の力をRubyから使うことにより実現しています。そのため、これまで以上に
require "opal" builder = Opal::Builder.new builder.build("./sample.rb") compiled_source = builder.to_s compiled_source += "\n" + builder.source_map.to_data_uri_comment File.write("sample.js", compiled_source) ちなみに、 opal コマンドを使って opal -c sample.rb のようにコンパイルした場合はデフォルトで source map を生成してくれます( --no-source-map オプションで無効化できる)。 参考
crisp-game-libというゲーム制作体力が残り10%でもゲームが書けるJavaScriptのライブラリがあるのだが、それをOpal に移植してRubyで書けるようにした。(画面クリックで遊べます) 2色のりんご🍎が落ちてくるので、同じ色を取ると得点、違う色は避ける、画面タップでプレイヤーの色が変わるので状況によって使い分けよう。モバイルの場合は両手プレイで移動と色替えの操作の手を分けると遊びやすいかも。 コード https://github.com/ongaeshi/crisp-opal-test/blob/master/fall/main.rb setup( title: "FALL", description: <<~EOS, [SWIPE] Move [TAP] Color EOS characters: [ <<~EOS, llllll ll l l ll l l lll
We are proud to announce an immediate availability of Opal 1.4! Opal is a Ruby to JavaScript (ES5) compiler allowing you to write frontend code in pure Ruby (and a lot more!). This version of Opal is about compatibility with Ruby 3.1 and lots of internal improvement around performance, code size, and readability of the generated code. Opal 1.3 was released just about 2 months ago, but we really wa
はじめに この記事はRuby Advent Calendar 2020 19日目の記事です。 さて、突然ですが、最近僕の娘がハイキュー!!というアニメのカードを集めるのにハマり始めました。 このカードは1枚110円で、全部で55種類あります。 当然ながら娘は全種類集めたい!と言います。 僕が調べた範囲では特にレアカードの設定はないようなので、「どのカードも出てくる確率は同じ」と仮定した上でカードを買い続けたら、いったいどれくらいの枚数を買うことになるんだろう?と思いました。 そこでRubyを使って簡単なシミュレーションプログラムを作ってみました。 require 'set' class Simulator NUMBER_OF_TYPES = 55 def self.simulate set_of_cards = Set[] all_types = (1..NUMBER_OF_TYPES).
RubyからJavaScriptへのトランスパイラ「Opal」チュートリアル最新改訂版!『実践Opal』発行 技術の泉シリーズ、5月の新刊 インプレスグループで電子出版事業を手がける株式会社インプレスR&Dは、『実践Opal』(著者:大崎 瑶)を発行いたします。 最新の知見を発信する『技術の泉シリーズ』は、「技術書典」や「技術書同人誌博覧会」をはじめとした各種即売会や、勉強会・LT会などで頒布された技術同人誌を底本とした商業書籍を刊行し、技術同人誌の普及と発展に貢献することを目指します。 『実践Opal』 https://nextpublishing.jp/isbn/9784844378822 著者:大崎 瑶 小売希望価格:電子書籍版 1800円(税別)/印刷書籍版 2000円(税別) 電子書籍版フォーマット:EPUB3/Kindle Format8 印刷書籍版仕様:B5判/カラー/本文1
RubyのコードをJavaScriptに変換するOpalというソフトウェアがある。Opal自身はRubyで書かれていて、gemでインストールできる。これを使ってRubyコードをJavaScriptに変換してWebサイトにアップロードすると、手元でRubyで書いたコードがブラウザ上で動作してしまう、という話である。 Opalはすでにかなり開発が進んでいて、組み込みライブラリや標準ライブラリが実装されている。RailsやSinatraとの連携、jQueryのバインダなどもあり、Opal用ゲームライブラリまである。 逆に欠点はと言うと、変換する都合で直接JavaScriptを書くよりも遅いとか、文字列の破壊的変更ができないとか、そんな感じ。文字列の破壊的変更はそもそもあんまりやらないので基本的には違和感はあまり無い。 opal-parser.js OpalはRubyで書かれたソフトウェアなので、
require 'native' %x{ var foo = new Object(); foo.bar = function() { return 'bar'; }; foo.baz = 'baz'; } n = Native(`foo`) puts n.bar puts n.baz こんなプログラムを実行してみましょう。n.barもn.bazもそれぞれ文字列を返します。 Rubyのこれらの呼び出しはすべてメソッド呼び出しになります。 一方、JavaScriptではプロパティに関数だったり、文字列だったりをアサインすることができます。 Nativeは関数であれば関数を実行した結果を返すし、文字列などの値であればその値を返すようになっています。 それでは、これらがどのように実装されているか見てみましょう。 Nativeはstdlib/native.rbに定義されています。 まずはNativ
Opal によってrubyの各種gemを利用してJavaScriptで実装したブラウザ上で動作するアプリケーションを作ることができます。 私は スモウルビー3 (GitHub) というScratch 3.0 ベースのビジュアルプログラミングツールを開発しているのですが、ユーザーが入力したRubyスクリプトを解析して命令ブロックに変換する機能を実現するために Opal を使って parser gem 0.11.4 をJavaScriptから利用しています。 <script src="static/javascripts/opal.min.js" onload="Opal.load('opal')" /> <script src="static/javascripts/opal-parser.min.js" onload="Opal.load('opal-parser'); Opal.load
$ head -20 foo.rb.js (function(undefined) { // @note // A few conventions for the documentation of this file: // 1. Always use "//" (in contrast with "/**/") // 2. The syntax used is Yardoc (yardoc.org), which is intended for Ruby (se below) // 3. `@param` and `@return` types should be preceded by `JS.` when referring to // JavaScript constructors (e.g. `JS.Function`) otherwise Ruby is assumed. //
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く