Reactで実際にアプリケーションを作ってみて感じたこと

日本語でReactについて述べられている記事はまだまだ少なく、英文サイトを読む時間も多い現状ですが、その現状で実際にReactを使ってアプリケーションを作ってみて感じたことを、ありのままに語ってみようと思います。

現在、日本人でReactを触っている人たちはアーリーアダプター(初期採用者)層に当たるためか、レベルの高い人が多いです。記事に含まれる専門用語の多さや、語り口の難しさからそういった印象を受けます。自分のように趣味プログラマーに毛の生えたレベルの人間で、Reactを触っている人は他にいないんじゃないかと思えてくる日々ですが、それでもなんとか頑張っています。

Reactを触ってみて感じたのは、仮想DOMという仕組みはとても優れているということです。サクサク更新されて、一度Viewの部分を作ると、以後は状態を更新するだけで自動的にViewも更新されるのが非常に素晴らしいです。サイトの規模が大きくなってくると、自分の脳内でDOMを組み立てるのが辛くなってくるので、そこに労力を割かなくてよくなるのはすごく楽です。

こんな感じにReactが優れている点について述べられている記事は多いですが、悪い点について述べられている記事はあまりないように思いますので、自分はReactのダメな部分について簡単に語ってみようと思います。

自由度が高すぎる


ReactはViewの部分だけを担うというコンセプトで作られています。View部分だけなのでアプリケーションを作るときに必要になるパッケージは別途入れなければならないのです。良いように言えば、作り手が好きなパッケージを採用して自由度の高い構成にすることができるということになるのですが、実際のところ、あれこれ入れるのは非常にめんどくさく感じます。他パッケージごとに情報を調べて、それが必要かどうかを判断し、また必要なら学習コストを支払わなければならないのです。

例えばReactについて調べてるとよく名前が上がるパッケージに、Redux、Immutable.jsなどがあると思いますが、Reactユーザー中で、これらのパッケージを採用している人と採用していない人に別れることになります。当然、双方コードの書き方は変わってきます。同じ部分について書かれているのに書き方が違うのです。自分のような初心者は情報を調べているときによく混乱させられるのですが、とにかく一貫性とまとまりがないのです。

非同期通信のやり方でもredux-thunk、redux-saga、コンテナに直接書く派に分かれており、本当にややこしい。必要最低限の機能を揃えるための道筋が複数あるので、各自がバラバラに進んでいて、複数人で作業するときは大変だろうなと思わされます。

学習コストが高い


React界隈はとにかく覚えることが多いです。普通にアプリケーションを作ろうとするだけで、各パッケージの公式サイトや、GitHubにアクセスして英語のドキュメントを眺める作業を強制される状態に陥ります。ひとつの高いハードルを超えれば終わりという感じではなくて、中サイズのハードルを何度も超えさせられる感じになるのが、逆にしんどいです。

日本語でReactの記事を書いているプログラマーの方々からは、それらをさも簡単にこなしているような印象を受けるのですが、僕のような末端のプログラマーには本当に辛い作業なのです。概念が難しい、英語の理解に苦しむ、そもそも情報がない。一通りできるようになるまで、あちこち調べ回る作業をこなさなければなりません。

基本パッケージにまとめて欲しい


自由度が高いせいで、あちこち駆けずり回ることを強制され、学習コストが高くなっている。これらの問題を解決するために npm install react –save 全部これだけで済むようにして欲しいです。ReduxとImmutableは本体に取り込んで、後は非同期通信の方法を公式でしっかり定めて、みんながその方法で実装するようにしてくれればいろいろ楽になりそうなんですが。

ReactはViewだけを担うというコンセプトのせいか、できるだけ小さくなろうとしていて、そのせいで逆に複雑になってしまっているように感じます。

僕のようなレベルの人間がサクサクとReactを扱えるようにならないと、本当の意味での普及は難しいのではないかと思います。Facebookにいる優秀な開発者の方々には底辺プログラマーの気持ちはわからないかもしれませんが、切実に願います!

最後に


文句が多いのでReactについて調べている人が読むと、印象が悪くなってしまうかもしれませんが、Reactを導入するメリット自体はとても大きいです。現在、オリジナルのソーシャルボタンを作れるアプリケーションを作っているのですが、途中で方針転換があり、jQueryで書いていた部分をReactに書き直しています。

そこで感じたのは、我流のDOM管理が、React (&Redux)のルールに従って管理されるようになるので、構成がシンプルでわかりやすくなって、ごちゃごちゃしなくなります。ここが一番のメリットですね。Viewを各部品ごとに作っていき、それを一回配置すると、後は状態を更新するだけでDOMに反映されるようになる。昔ながらの手作業をルール化、システム化したような感じです。

学習コストが高くしんどいことも多いですが、その分見返りもあるので、チャレンジする価値はあると思います。ただし、現状は環境がいいようには思えないので気軽には勧めにくいです。頭の良さか、学習意欲の高さ・モチベーションが必要になります。

自分の場合はjQueryをベースにサイトを作っていた結果、グチャグチャになってしまって、新しい技術を導入せざるを得ない状況になってReactを始めました。僕と同じような状況に陥った方なら、賢くなくてもモチベーションでなんとかできるのではないかと思います。

一度、簡単にでも使えるようになると良さを感じられるので、興味のある方はぜひチャレンジしてみてください。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)