RedScript : Ruby 風の JavaScript 変換言語

今回は JavaScript 変換して使う Ruby っぽい RedScript について紹介します。

RedScript とは

RedScript は Ruby 風の言語で、 JavaScript に変換して使います。 変換後の JavaScript のコードが読みやすいといった特徴を持っています。

という風に説明すると "それってもう CoffeeScript があるじゃん" と思う人もいるかもしれません。
確かにそのとおりなのですが、 RedScript は CoffeeScript よりも、もっと Ruby よりです。 Ruby を知っていれば、かなり学習コストの低い言語になっていると思います。 Python 由来のあのインデントブロックなんかもありません。

位置づけとしては CoffeeScript のような JavaScript の軽いラッパーにあたるのではないかと思います。
これは別にラッパーだから劣っているというような意味ではないです。ラッパーにはラッパーの良さがあります。 Ruby から JavaScript からの変換というと Opal というツールもあります。
こちらは逆にガッツリと Ruby で、 ラッパー感がなくなり、 JavaScript への変換を意識したコーディングというものができなくなります。
RedScript はその辺の間を狙った言語ではないかなと思います。
また、言語のホームページによれば、 クライアントサイドの JavaScript というよりも Node.js で使うコードとして使うことをメインに想定しているようです。

RedScript の特徴

RedScript のサイトには、多くのサンプルコードが変換後の JavaScript と一緒に載せられています。 Ruby と JavaScript の知識があれば、眺めているだけでなんとなく書き方は分かるのではないでしょうか。

ここでは、その中からいくつか抜粋して紹介したいと思います。


静的クラスでの定義や継承ができます。
ただ、 end の後の , や ) はちょっと気持ち悪いです。
 class Animal
   def init(name)
     @name = name
   end,
 
   def sayHi
     puts "Hello"
   end
 end)
 
 class Duck < Animal
   def init
     super name
     alert("#{@name} is alive!")
   end,
 
   def sayHi
     super
     puts "Quack"
   end
 end)
 
 duck = new Duck('Darick')
 duck.sayHi()
クラスではなく、 オブジェクトを直接作ることもできます。
プロトタイプへのメソッドの追加用に >> なども用意されています。
 object auto
   wheels: 4,
   engine: true,
 
   def honk
     puts "hoooonk"
   end,
 
   def sayHi(msg)
     puts msg
   end
 end
 
 # object ブロック外での定義
 def auto.add(x, y)
   return x + @wheels
 end
 
 # プロトタイプへのメソッド追加
 def Car >> sub(x,y)
   return x - y
 end
無名関数を渡す場合に do ... end ブロックを使うことができます。
 getUser('/users/1', do
   alert(user)
 end)

インストール

Windows でのインストール方法について説明します。 Node.js の npm を使うので、他の環境でもあまり変わらないと思います。

Node.js 上で動作するので、先にインストールしておく必要があります。 Node.js のインストール方法については以下の記事を見て下さい。 npm を使ってインストールします。 コマンドとして使うので、 -g が必要です。
~/lang/rs $ npm install -g redscript
これでインストールは完了です。 redscript(.cmd) で動作します。

使い方

コマンド引数にソースファイルを指定して実行すると、拡張子を js にした JavaScript ファイルが生成されます。
ただ、出力に制御コードを使っているらしく、対応していないターミナルだと変な文字が出ます。
 ~/lang/rs $ redscript test.rs 
 笨\224 Writing test.js
引数なしで実行すると Usage が表示されます。
 ~/lang/rs $ redscript
  No RedScript files specified, type --help for more info 
  redscript [filename1] [filename2] 
  redscript watch [filename1] [filename2]
"--help" で詳しい情報と出てますが、ヘルプはまだ実装されていないらしく、エラーとなります。

感想

ちょっと使ってみたところバグがボロボロと出てきました。(Ver. 0.1.0)
ただ、そこはまだ開発段階みたいなので、今後は直っていくのではないかと思います。

ブロックの表現に関して、私はブレース {} と end が適度に混ぜられる Ruby が一番読みやすいと思っています。 ブレースばっかり、 end ばっかりは読みづらいです。インデントだけなんてのは論外でしょう。
RedScript も多少 ブレース {} と end の組み合わせはできます。 ただ、 end の後に対応のない ) とかが気持ち悪く、 ここは改良して欲しいところです。

また、 Ruby の優れている点の一つとしてエレガントなコードブロックがあります。
関数の引数に無名関数を渡すところは do ... end を差し込むのではなくて、 もっと Ruby っぽいコードブロックになるといいのになと思います。


RedScript はまだまだ問題点の多い言語ですが、 Ruby っぽく JavaScript が書けるのは魅力的です。 CoffeeScript にとって代わるくらいに頑張ってほしいです。


関連記事
スポンサーサイト



Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
39位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
7位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。