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として従来、こうなっていたものが
こうなる
わけで、これが上記の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プログラミングできるようになりません。いつまでたっても「理論」を説かれるだけで、けして実用レベルに到達できない、というリスクがあります。
では、あきらめたほうが良いのか?
選択の一つとしては、リスク・リターンを考えてそれは十分にアリだと思います。
しかし、世界の潮流を俯瞰しながら、古い考え方、枠組みに囚われず、スキルの蓄積をチャラにすることを厭わず新しい技術の習得を続けるのが本来の技術者のあり方ですから、上記のリスクを検討しながら納得して先に進む人も多いでしょう。
そして幸いなことに状況は日々改善してきています。
そのことを続く記事に書きたいと思います。
0 コメント:
コメントを投稿