Posted at
OpalDay 3

A React Inspired UI framework in Pure Ruby

More than 1 year has passed since last update.

この記事はOpal Advent Calendar 2016の3日目の投稿として書いています。

今日はRubyConf Taiwan 2016の2日目です。今日はDevid Changの発表があったのでそのことについて書きます。

今回の発表はReact.rbの話をするのかと思っていたら、タイトルを見てびっくり。なんとあたらしくPure Ruby(Pure Opal?)で書きなおしたものを発表していました。

AtollとなずけられたそのライブラリはReact.rbのようなReactのラッパーではなく、Rubyだけで書かれたものでした。

わたしとしては、HyaliteのReact.rbとの差別ポイントはそのへんだったので驚きです。

使いかたもまあ当然ですが、同じような感じです。

違う点としては、これはReact.rbでもそうなのですが、component_will_mountのようなメソッドをオーバーライドするのではなく、before_mountというメソッド呼びだしでDSL的に書ける点や、JSXの替りのShortHand記法が、

h('div', {...}, h(...), ...)

のような感じで、hというメソッドの呼びだしになっているところです。このへんは好みの問題と言えるでしょう。


Learn once write anywhere

Davidの発表では、"Learn once write anywhere"というはなしがありました。

これはもちろん、React nativeのような話で、RubyMotionを使って同じような方法でモバイルのアプリケーションのUIも作れるということでした。このアイデアもわたしがRubyKaigi 2015で発表したときのアイデアがまるかぶりでびっくりしました。(わたしの発表から想起したものという話ではないようですが)


Server-side rendering

Server-side renderingの話もありました。サーバーサイドのオブジェクトはMashallしてページに埋め込むというような話をしていました。このあたりの話は具体的なことはよく分りませんでしたが、面白い発想だと思いました。


Davidと話をしてみました

Davidもわたしのトークを聴いていたようなので、声をかけて話をすることにしました。

気になっていたのは、React.rbもあって今回のAtollもあり、Hyaliteもあり他にもOpalのVirtual DOMの実装はいくつかあります。

こんなに同じようなプロダクトがたくさんある状態はどうなんだ?ということ聞いてみたら、面白いからいいんじゃないかと言っていました。

またHyaliteはReactのソースを見てRubyで書き起したものですが、AtollはPreactを元にしているということでした。こうやってちょっとずつ違うプロダクトがいくつも発生してそのうちいくつか淘汰されて生きのこったものが覇者となるのでしょうね。

これだけ沢山似たようなプロダクトがあるということは方向としては多くのひとが求めているものだということなので、この中から生きのびることが出来たらいいことがあるかもしれませんね。