Re: React.js界隈の人に聞きたい
前提
Reactより前に僕がやりたかったこととして、冪等性の担保の為に毎フレーム document.body.innerHTML を書き換えたかったがパフォーマンス的にそれが許されなかったが、Reactは擬似的にそれを達成させてくれたという圧倒的感謝🙏がある
— ダイナモポグラマ (@mizchi) 2016年5月23日
SPA
世の中にSPAの需要があるのか?という点考えていたけど、需要がないからSPA技術がいらない、というのはたぶん間違ってて、SPA技術を持たない人が多いからその発想もなく、SPAで達成できることがイメージ出来ないのがアプリケーション設計の縛りになっている、という感じな気がする
— ダイナモポグラマ (@mizchi) 2016年5月23日
GmailやTrelloやPivotalやグラブルは異常な技術の集大成ではなく、個別に分解可能な技術で作られていて、Gmailの時代は大量のエネルギーが必要だったが、今では比較的簡単に作れる手段が提供されていて、その手段の1つがReactなりなんなりですよ、という話になる
— ダイナモポグラマ (@mizchi) 2016年5月24日
SPAの技術を使って既存と同じものを作る必要は全く無いんだけど、まあ多少楽になる部分もあるし、複雑性が局所化してる部分(たとえば異常にボタンが多いフォーム)ではSPA技術を使って解決することは出来る。他人が作ったものを使うだけなら、枯れたものじゃないと選択肢は得られない。
— ダイナモポグラマ (@mizchi) 2016年5月24日
他人が作ったものを使うだけならブラックボックス化された中身は知る必要はないので jQuery だろうが React なりどっちでもよく、枯れてる方でエコシステムが回れば良い、となるのはわかる。とはいえライブラリ提供者は勿論メンテナンス性が高いものの方で書きたいし…という気持ち
— ダイナモポグラマ (@mizchi) 2016年5月24日
フロントエンドでは Google や Facebook のせいでどんどん要求水準があがってるから(そう思うとTwitterはクソUIばかりでなんら貢献してないが)、その要求エコシステムを満たすための土台として jQuery はこれから先生きのこることが辛い
— ダイナモポグラマ (@mizchi) 2016年5月24日
フロントエンドでは React に代表される仮想DOM技術は現在主流になりつつあり、 React が死んでも仮想DOM技術はおそらく生き残る。仮想DOM技術とjQueryは思想的にも実装的にも共存することが出来ないため、排他するなら将来見据えて jQuery 殺したいよね、となる
— ダイナモポグラマ (@mizchi) 2016年5月24日
まとめると、SPA技術で既存と同じものを作る必要はない。SPA技術は現状では競争力を持つための差別化要素である。また、SPA技術は複雑性の局所化に使うことも出来るので、既存のものに対しても無駄ではない。SPA技術の背景には仮想DOMがあり、仮想DOMとjQueryは共存できない。
— ダイナモポグラマ (@mizchi) 2016年5月24日
JSX について
僕もjsxには否定的だったんだけど、エコシステムがそっちで回ってるので jsx 使わざるを得なくなってる
— ダイナモポグラマ (@mizchi) 2016年5月21日
簡易DSLとして $ = React.createElement などがあります
— ダイナモポグラマ (@mizchi) 2016年5月21日
jQuery React 辛さ
すべてのjQueryが辛いんじゃなくて、他人が書いたjQueryは辛い、ということです
— ダイナモポグラマ (@mizchi) 2016年5月23日
他人が書いたReactは辛くないのか?というと、他人が書いたjQueryを読み解くのは精神を重篤に汚染されるが、他人が書いたReactは多少の息切れ、めまい程度で済む、という程度問題です
— ダイナモポグラマ (@mizchi) 2016年5月23日
Fluxの設計部分で精神汚染されることはある
— ダイナモポグラマ (@mizchi) 2016年5月23日
他、jQuery 捨てたい理由として、ほとんどのプラグインが npm 以前のモジュール化される前のもので、githubでバージョン管理すら上がってなかったり、基本的に品質が低く、予想できない副作用を発生させることがある、という問題があります。もはや jQuery プラグイン = 品質が低い といってもいいぐらいです。最近書かれるものは nodeでも動くように jQuery 非依存だったり、DOMのライブラリでも jquery に依存しない形で書かれることが多い気がします。jQuery依存が発生すると、+120kb を要求するわけですからね。
AltJS
AltJSがなければ今のES2015もBabel もなかったんで、一定の役割は果たしたと思ってます。coffee の仕様のうち、いくつが採用されたことか。 ただ個人的には最近 babel にリソースが集約されすぎててゲテモノがなくてつまらんという感覚があります。wasm はやくこないかなぁ
まとめ
フレームワークは廃れるけど、そこに至る思想は廃れないので、徳を積みましょう
— ダイナモポグラマ (@mizchi) 2016年5月23日