dorivenの日記

気がついたら社会人。気になる技術的なことについて少しずつ書いていけたらと思っております。

【書評】React入門 React・Reduxの導入からサーバーサイドレンダリングによるUXの向上まで

TL;DR

本書は入門とは書いてあるがプログラミング初心者向けの本ではなく、ネットなどで調べつつ改変をしながら写経を行える程度の実力(中級者と呼ぶべきか)が必要な本である。 写経をするにしてもコードの全体像が見えづらく、素直に写経をさせてくれず遠回りをさせられることも多くReactを学びたいという中級者も苦労する部分がある。 また技術的な変遷が早い分野を取り扱っているのもあり、いくつかの紹介されている技術は古いのでもしあるのであれば本書よりも新しい別なReact + Reduxを扱っている入門書を取ったほうが良いと感じた。

この本を手にとった理由

最近のフロントエンドのトレンドにまったく触れていないのでそろそろ触らなきゃいけないかな、と重い腰を上げて読み始めたのが理由。 最近はフロントエンドに触る機会がほとんどなく、触ったとしてもReactなどが使われているシステムではない。
昨今Reactの仮想DOMという考えがフロントエンドに大きな旋風を巻き起こして、そこかしこからやれReactだ、React + Reduxだという話は聞こえてくるがフロントエンド界隈のエコシステムの変化が激しすぎて学習コストが高そうであえて触れてこなかった。 最近はそこらへんの変遷もある程度落ち着きを見せてきたと感じたのでようやく触れ始めた次第。

私の読書前の知識

私がどれだけの知識を持ってこの本を読み、書評を書いたかはこの記事を読んだ人の参考になると思うので書き記す。

  • プログラミング言語
    • いくつかの言語を業務レベルで使いこなせる程度
  • フロントエンド
    • 主に触っていたのはjQuery時代
    • CommonJSやAltJSという言葉が出てきて、Browserifyを使ったのが自分の中の最新の技術
    • この本を読む前にReactチュートリアルを読んでみて、特に苦労なく読み進められる程度の実力
      • (それまではJSXをmixiのAltJSの事と勘違いしていたくらいReactは知らなかった)

書評

フロントエンドの技術を包括的にまとめていてこれ一冊を理解すれば簡単なフロントエンドのアプリは作れるくらいにはなれる本であるが、著者と編集者の怠慢がなければもっと良い本になったであろう惜しい本、という印象。

評価点

  • ただ触るだけでなくReactやRedux(Flux)の概念について理解できる
  • webpack、UIライブラリや非同期ライブラリなどフロントエンドの様々なライブラリが包括的に紹介されている
  • React + Reduxと掛け合わせて実際に簡単なAPIを用いたアプリの例が紹介されており、これ一冊でAPIを用いた簡単なSPAを作れるようになる
  • ライブラリの使い方だけを紹介するにとどまらず、どういう仕組みやライフサイクルで動作しているのかをしっかり説明しているものもある

惜しい点

著者や編集者の怠慢(校正チェックが甘い)によって出てきた部分が多いと個人的には感じた。 特に写経をしながら実際に手を動かして理解をしながら進めていく人にとってはあまり良い本ではない。

  • 写経をしようとすると色々と二の足を踏む (以下実例)
    • 本の内容で触れていないのに既にファイル分割をしていて、当然のようにimportされている
    • コードに誤りがありそのままでは動かないことがある
  • kindle版だとソースコードのフォントがバラバラ
  • React + Redux以外のツールは良くも悪く浅く広くなため、業務で使うレベルまで掘り下げるには別な書籍や記事を参考にする必要がある
  • コードに一貫性がない(章をまたぐと書き方が変わっている)
    • TODOアプリで扱っているオブジェクトのプロパティ名が変わっていた
    • ActionCreatorでシンプルなオブジェクトを返す時にreturnを使う方式とそうでない方式が混ざっている
  • 発売から2年前ということもあり本の内容が本の内容に古さを感じる(仕方ないことなんだけど)
    • ReactHooksやReduxHooksを使った方式が出てこない
    • 使われているライブラリのバージョンが古く、記載されているコードの通りだと動かない
      • せめてバージョン番号の記載が欲しい

おわりに

この本だけではまだ業務に活かせるレベルにはなっていないので、これに加えてHooks周りやReact + Redux + TypeScriptで記述できるような方法を学んでいきたい。