Gunosy React Meetupに参加しました #gunosyreact

2015/3/30に株式会社グノシーオフィスで開催された、Gunosy React Meetupに参加しました。

Gunosy React Meetup – connpass

今回のミートアップでは、合計6名の方によるReact.jsおよびその関連技術に関するプレゼンテーションを聴くことができました。内容やスライドの紹介は他の参加者による以下の記事が詳しいのでどうぞ。

Gunosy React Meetup行った #gunosyreact – pirosikick’s diary

また、Meetup中のツイートがTogetterにまとめられているので、あわせて御覧ください。

Gunosy React Meetup #gunosyreact – Togetterまとめ

参加理由

まず、自分にはReact.jsを使ってプロダクションコードを書いた経験はありません。(というか、最近はJavaScript自体をほとんど書いていません。)以下の記事を参考に、ちょろっと写経をした程度。

Using TDD with React.js

ここ最近、自分の中でJavaScript熱が再燃しておりまして、何か面白そうなフレームワークやライブラリを探していました。そんな折、ちょうどReact.jsが界隈で盛り上がっているのを目の当たりにし、なんだか興味がわいてきた、というのが今回のミートアップ参加理由になります。

「Write once, run anywhere vs Learn once, write everywhere」ではない

React Nativeについて感じたことをメモ。

React.jsのスタイルでiOSのネイティブアプリが開発できる「React Native」についての発表がいくつかありました。ついこの間Facebookが公開したばかりのツールなので、すごくタイムリー。

今までの類似技術(Titanium Mobileなど)は、「Write once, run anywhere」、つまり「一度書けば、どんな環境でも動く」ことを理想やポリシーとして掲げていました。

一方、今回のReact Nativeは「Learn once, write everywhere」という思想のもとに開発されたツールです。つまり、「一度書き方を覚えれば、どんな環境でも同じ書き方で開発できる」ということを謳っています。

これからは両者を比較して、「Titanium Mobile等」 vs. 「React Native」=「Write once, run anywhere」 vs. 「Learn once, write everywhere」のような構図で語られることもありそうです。

でも、「Write once(略)」と「Learn once(略)」だけに焦点をあてて比べることに、あまり大きな意味はないように思います。

数年前、自分が数年前にTitanium Mobileを使ってアプリを開発していた時は、ツールに対して「Write once(略)」だけではなく「Learn once(略)」的な側面も期待していたように記憶しています。

「Write once(略)」が実現できているツールは、おのずと「Learn once(略)」も実現できているのではないでしょうか。だとすると、「Write once(略)」から「Learn once(略)」に変わったことで、できることの範囲が狭くなっただけのように感じます。

いくつかのプレゼンを拝見しながら、「React Nativeをつかってネイティブアプリを開発するという判断に、どういう状況・環境だったらたどり着くのかな?と考えていたのですが、あまりいい答えは浮かばずモヤモヤ。

『「Write once(略)」→「Learn once(略)」への移行』として、今回のReact Nativeの登場を捉えるのは良くないことだと思います。(誰もそんな風に考えていないかもしれませんが、自分はそう考えてしまいそうになりました。)React.js自体がもつ思想や哲学を、ネイティブアプリ開発の世界に持ち込もうとしているのが、React Nativeなんでしょう。

自分のように、React.jsの表面的な仕様しか理解していない人にとっては、React Nativeを使うことで得られるメリット・便利なユースケースはイメージしにくいです。だから、モヤモヤしてしまったというわけです。

おわりに

React Nativeを使おうかどうか検討している人は、React.jsの仕様を表面的な理解だけではなく、何が、どう嬉しいのか、その思想や哲学をちゃんと理解する必要があります。その上で、React.jsの思想や哲学をネイティブアプリ開発に持ち込むことで、自分たちがどのような恩恵を受けることができるのか、ちゃんと考えなければなりません。

React.jsについてまだまだわかっていないので、もう少し勉強してから出直します。おしまい。