Topics

・関数型プログラミングとオブジェクト指向のパラダイムとしての対立 国内の【自称】関数型コミュニティと海外の論調の違い

ガラパゴス・ネットスラング=「関数型ポエム」という呪詛、先入観的読書と、フェアなレビューの登場

Qiitaの騒動から派生して、東北大学の住井 英二郎@esumii氏、らくだの卯之助@camloeba氏その他が、犯罪者集団に合流して2ちゃんねるでの誹謗中傷チームの「8賢者」「ウィザード組」とかアホなことをやってる件について

JavaScriptではES6+とReact-JSXからES5へのトランスパイルが標準に / ATOMエディタで最速環境構築 厳選パッケージ 3 + 3 2015年夏バージョン

2016年のnode、ES6、React、Babel、Atomエディタ界隈の方向性

Dockerじゃないsystemd-nspawn+machinectlが非常に良い

99%のプログラマがIQ145のJKに「ダサい」と言われてしまう理由とは?【その1】「計算機科学のほんとうの基礎」を理解していない。IQ145のJKと同じ事を語るMITの権威とSICPという聖典の権威を借りてマインドコントロールを解いてみよう

99%のプログラマがIQ145のJKに「ダサい」と言われてしまう理由とは?【その2】関数型プログラミングのイミュータブルな世界観とイミュータブルな実世界を完全に統合

10年先を行く斬新な関数型(FRP)データベースについて説明する 99%のプログラマがIQ145のJKに「ダサい」と言われてしまう理由とは?【その3】

[React (.js Facebook)解説 関数型プログラミングに目覚めた! IQ145の女子高生の先輩から受けた特訓5日間 サポート記事【静的HTML編】React 解説【動的HTML-FRP編】

量子コンピュータが超高速である原理と量子論とそれに至るまでの科学哲学史をゼロからわかりやすく解説01量子コンピュータが超高速である原理と量子論とそれに至るまでの科学哲学史をゼロからわかりやすく解説02

『関数型プログラミングに目覚めた!』のレビュー(Day-1)について

LISPデータ構造の問題点の指摘と抜本的解法としての新プログラミング言語の策定/純粋関数型言語「SPINOZA」

著書『関数型プログラミングに目覚めた! IQ145の女子高生の先輩から受けた特訓5日間』 [Day1]たち読み記事 無料公開中

『関数型プログラミングに目覚めた! IQ145の女子高生の先輩から受けた特訓5日間』を大変多くの方々にお買い求めいただき、感謝します。本書の全目次を公開し、質問を受け付けます。

2015年7月6日月曜日

React.jsは業務レベルで使えるのか? 実践的利用について解説

React.jsの応用・実用化について解説します。

実は、拙書の読者よりいただく質問で結構多いのがこのReactの実践的利用です。

React.jsを応用・実用化して実践的利用に取り組むことには懸念があるでしょう。

たとえばReactは関数型のコーディングであるとか「理屈」は理解したが、いざそれを本格的にECサイト構築などの業務レベルでほんとうに活用できるのか?ということです。

まず、ReactはSNS最大手のFacebookが開発リリースしており、実際FacebookサイトはReactで構築されており、SNS最大手のInstagramもReactで構築されているので、一般的な開発者にとって「潜在的」な答えは「Yes」であるのはわかります。

次に、さらに進んで、一般的な開発者、たとえば、業務でECサイト構築をする、請け負っているようなプロの開発者にとってはどうか?ここではリアルでシビアな問題、つまり「潜在的」に「Yes」でも「リスク」と「リターン」を検討しなければいけません。

結論を言うと、平均的には、一般的には、現状においては、まだリスクのほうがリターンより大きいと思います。

それはもちろんReactに技術的問題がある、というわけではなく、開発者のスキルと支援環境の問題です。

Reactは関数型・コンポーネント指向のライブラリであり、オブジェクト指向のMVCフレームワークではありません。
2015年現在、JavaScriptに限ると、巷でサイト構築するためのポピュラーなフレームワークは

  • AngularJS
  • Backbone.js
  • Ember.js
  • Knockout.js

などがありますが、これら4つはすべて、MVC系フレームワークです。
Reactで開発する方針にした場合、根本的に関数型プログラミング・コンポーネント指向で構築していくので、以上のようなオブジェクト指向、MVCフレームワークと指向性が異なります。

ReactはJustUIなので、MVCフレームワークのVとして利用できるとエクスキューズされることも多いですが、Facebook公式サイトにも本音が明示されているとおり根本的な設計としてはMVCではないので、かなり無理があります。

React (.js Facebook)解説 関数型プログラミングに目覚めた! IQ145の女子高生の先輩から受けた特訓5日間 サポート記事 静的HTML編
また、
React 解説【動的HTML-FRP編】

に解説したとおり、Reactの基本構造としては、
レガシーなHTML+JSとして従来、こうなっていたものが

enter image description here

こうなる
enter image description here

わけで、これが上記のMVCフレームワークと水と油であるのは一目瞭然、自明です。

HTMLとJavaScriptという部品をうまく連携していくのが、JavaScriptのMVC系フレームワークですが、Reactで構築する際には、HTMLやCSSは空っぽになります。連携することはなく、全部JavaScript(JSX)で一元的に構築していきます。

Facebookが大胆に独自開発したJSXというJS拡張言語あっての賜物で、2015年現在、JSXはReactと共に世界の開発者コミュニティで広く受け入れられています。

ここがReactが他のすべてのものと違って素晴らしい理由なのですが、翻ってみると、React開発は他のすべてのものとは異なる、ということになります。
つまり、これまで、オブジェクト指向をベースとした各種MVC系ライブラリで積み上げてきたスキルがまったく通用しません。一世風靡しているjQueryでさえも、まったく同じ理由で水と油の技術体系なのでスキルが通用しなくなります。
CSS3の技術も、動的な制御も基本JSXに一元化されるので、同様です。

このように、技術者・開発者にとって従来のスキルの蓄積が通用しない、チャラになってしまう、というのが、まずReactを採用するための、まず最初のリスクであり、大きな障害となります。

各種JavaScriptの各種MVC系フレームワークにしても、たかだかここ数年で台頭してきたものですが、数年経過して、ようやく安心して参入してスキルを習得した、となった途端にそれがチャラになるわけですが、これはもう昨今の開発事情っていうのは「そういうものだ」と受け入れるしかありません。特にIT技術の進歩は加速しています。だからこの技術者の「個人的」な事情リスクは甘受するしかないと考えます。

これまでのスキルの蓄積をあきらめて、いざゼロベースでReact開発をはじめる決心をしたとします。
では、Reactの習得は容易か困難か?

平均的にいうと、困難である、と評価します。
これも、困難な理由は、Reactは関数型プログラミングであり、コンポーネント指向なので、オブジェクト指向のMVCフレームワークと考え方がまったく異なっており、従来の延長にはないので、ハードルが高いです。

React開発は、従来の蓄積がチャラになるだけではなく、習得も困難です。
ついでに言うと、その根本的な理由が関数型プログラミングであり、コンポーネント指向であり、オブジェクト指向はMVCフレームワークとは考え方を切り変える必要があるのに、巷ではReactをあくまでオブジェクト指向としてMVCフレームワークのVとして使う、とか、関数型プログラミングとオブジェクト指向は対立していない、臨機応変に適材適所使い分けるというパラダイムシフトを認めたがらない風説を延々と流布している妙な人も多く、彼らのいい加減な独自主張を真に受けてしまうと、この習得は一層の困難を極めます。というよりも、この層の主張を鵜呑みにしていると決して関数型プログラミング、コンポーネント指向であるReactでGUIプログラミングできるようになりません。いつまでたっても「理論」を説かれるだけで、けして実用レベルに到達できない、というリスクがあります。

では、あきらめたほうが良いのか?

選択の一つとしては、リスク・リターンを考えてそれは十分にアリだと思います。
しかし、世界の潮流を俯瞰しながら、古い考え方、枠組みに囚われず、スキルの蓄積をチャラにすることを厭わず新しい技術の習得を続けるのが本来の技術者のあり方ですから、上記のリスクを検討しながら納得して先に進む人も多いでしょう。
そして幸いなことに状況は日々改善してきています。
そのことを続く記事に書きたいと思います。

React.jsのボタンの作成方法 ECショッピングサイトのカートの場合

0 コメント:

コメントを投稿

Popular Posts

Blog Archive