この広告は、90日以上更新していないブログに表示しています。
『React.js&Next.js超入門 第2版』を読んだので読書記録&感想です。
表紙は色合いも水色で似ていますが無印が2019年、2021年に出たこの第2版はタイトル「超入門」の文字の右横に黄色で第2版と示してあります。古いほうを買わないようご注意ください。(自分は以前Kindleのセール中に間違って買っちゃいました…w)
1-1 Reactを動かそう!
VSCode
やBrackets
,Atom
あたりから向いたものを使おうとなっています。react.development.js
,react-dom.development.js
を読み込んで、ボディ部の<script>
タグ内でReactを書いていくという非常に原始的なところから始まります。挫折した方はこのへんからしっかり見直していくのもよいのではないでしょうか。1-2 プロジェクト開発をしよう
Node.js
やnpm
、Create React App
の話など。npx
のことをパッケージ管理ツールの一種でnpmがより便利になったもの…と描写しているのがちょい気になりました。npmの5.2.0以降の新しいバージョンに同梱されているコマンドで、ローカルをインストールで汚さずに各種パッケージを実行できるものですから、npmとまた別のものだみたいな説明はちょっと違いますね。Developer Tool
の使い方も説明してあるのがありがたい。npmからインストールするスタンドアローン版もあるんですね。1-3Visual Studio Codeを用意しよう
VSCode
一択ということで、初心者向けに詳しく導入方法を解説しています。2-1 Reactの基本を復習しよう
<script>
タグ内のJSコードで、React.createElement
メソッドでタグの中に値を当てはめていく…というめっさ基本から、JSXの基本を学んでいきます。2-2 Bootstrapでデザインしよう
Bootstrap 4.5
(今の最新は5.0.1) の一番基本部分を使って、Reactが作っている画面の各要素に色をあてていきます。2-3 JSXを使おう!
react.development.js
,react-dom.development.js
のほかにbabel.min.js
も追加。<script type="text/babel">
~</script>
で囲ったJSコード中にJavaScript式としてもうJSXが書けるんですね。実際の仕事レベルではまず使わないでしょうが、本当の初心者の方にはこういう基本の基本からやった方が理解しやすいのかもしれません。2-4 JSXの構文的な使い方
&&
の比較演算子や二項演算子で表示を切り替える方法、配列やmap
など。2-5 表示の更新とイベント
3-1コンポーネントを作ろう
3-2 プロジェクトでコンポーネント開発!
Create React App
で作ったプロジェクトフォルダに移り本格的に。public/index.html
やindex.js
、App.js
などの中身も詳しく解説してくれているのがありがたいですね。3-3 ステートを使いこなそう
this.state=
で定義、コード中でthis.setState()
する従来通りのやり方です。3-4コンポーネントの様々な機能
createContext
した値を変数で持つ方法が登場。値を変えたいときはJSXで<XxxContext.Provicer value={}>
で囲って配下のコンポーネントで使える方法も紹介しています。React Hooks
のキーワードは影も形もありません。Context
だけ紹介しているので中途半端だな…と思ったら、次の4章がまるごとHooks
なんですね。章末でも大事な要点を振り返り、他は後回しでOK!と気軽に述べながら、今はReactの関数コンポーネントでもステートが使えるようになったので…とようやく今っぽいReactになっていきます。初心者をターゲットにした説明の順序だての都合上、こういう構成をとっていたのですね。
4-1 フックを使ってみよう
React Hooks
が登場します。useState
を説明し、関数コンポーネントでは持っておきたい変数は全部ステートで…と進んでいきます。4-2 関数コンポーネントを使いこなす
props
で値を渡したりuseState
を介して親→子/子→親へも動的な値も渡せるよという説明。event.preventDefault()
で打ち消し、画面要素の値をすべてuseState
でJSON形式でまとめて保存するやり方が解説されています。4-3 副作用フックの利用
useEffect
。useEffect
を複数使い、そのうちひとつがuseState
でJSXをレンダリングして無限ループの例を見せてから、第二引数にはステートの配列を渡すとよいよ、という説明の仕方をしています。4-4 独自フックを作ろう
useCounter()
という独自フックを作成。呼び出し側からはconst [counter, plus] = useCounter();
という形ですっきり呼べるやり方。useTax()
やuseCalc()
という独自フックの例。確かにこのへんを実際に動かして試していくと、処理の綺麗な切り出し方が学べると思います。4-5 ステートフックの永続化
usePersist()
を別に実装、ユーザー情報フォームからこれを呼び出して利用する方法。setValue
のほかにsetSavedValue
という別関数の定義が抜けているような…?4-6 簡易メモを作る!
React Hooks
のuseMemo
か!?と思わせてここでは本物のメモアプリ。前節のusePersist()
フックを活用して、画面からメモを複数個保存、検索と削除までできるReactアプリをコンポーネントをきちんと分割して作っていきます。なかなか本格的です。4章はReact Hooks
自体の概念などの説明はあまりなく、比較的初心者目線からのよく使いそうな順での解説となっています。まあまず使ってみて慣れたら公式参照という流れなのでしょうか。せっかく実装した独自フックusePersist
も、中身は理解しなくていいよ!続きのNext.js
に行こう!となっていて、えっそれは勿体ないのでは……とちょっと思いました。
5-1 Next.jsを使おう
npx create-next-app
して作っていく方法{app_name}/pages/index.js
などにJSXを返す関数コンポーネントを作っていく。style={subTitle}
のようにしてJSXに適用するやり方。styled-jsx
を使って、JSX内に<style jsx> .. </style>
の中に直接CSSを書くやり方。{app_name}/pages/Home.modules.css
のようにCSSを置くやり方もある。5-2 複数ファイルを活用しよう
pages/
にファイルを複数置くとそのまま複数ページになる。<Link href="./hoge"> {好きな要素} </Link>
{app_name}/public/
に置いた画像へのパスは./public/{画像名}.jpg
でなく./{画像名}.jpg
5-3 外部データを利用しよう
{app_name}/public/data.json
を置くと、URLでhttp://localhost:3000/data.json でそのままGETできる。fetch
関数を使ってこのJSONを取得、一覧テーブルに表示する例。npm install swr
すると、SWR
というライブラリが使える。const{aaa, bbb} = useSWR('/data.txt', func);
のようにするとuseState感覚でサーバーから返ってきたJSONやテキストを使える。第2引数はデータの中身を解析する関数が必要な場合。
{app_name}/pages/api/
があるので中にhello.js
を作って関数を書くと、http://localhost:3000/api/hello で動くWebAPIが簡単に作れる。
{app_name}/pages/api/
にhello/[id].js
を作って関数を書くと、http://localhost:3000/api/hello/1 のようにRestfulにID指定で動くWebAPIも作れる。{app_name}/pages/api/
にhello/[...params].js
を作って関数を書くと、http://localhost:3000/api/hello/1/hogehoge のようにアクセスした時のパスも配列で取れる。5-4プログラマブル電卓を作ろう
Next.js はよくネット上にも解説記事などありますが、React関係でよく使いそうなもの全部乗せで便利そうだなと思いました。本書は初心者向けなので、あまり深堀りはせずにこんな技術もあるよ、と体感させるぐらいの深度になっていますね。
6-1 Firebaseでデータベース!
Firebase
へ。6-2 Firestoreデータベースを使おう
Cloud Firestore
とRealtime Database
が選べるが今はFirestore
ということで、試しにコレクション(≒RDBのテーブル)を作って中にデータを作っていく例。6-3JavaScriptからFirestoreを利用する
npm install firebase
して、JSコード内でFirebaseにアクセスしていく方法。import firebase from'firebase';const firebaseConfig ={各種設定};if (firebase.apps.length == 0){ firebase.initializeApp(firebaseConfig);}
useEffect()
の中で初期表示時だけFirebaseにアクセスしています。これを忘れて関数コンポーネント内に普通に書くと、ステート更新時にリロードが走るたびにFirebaseに繋ぎに行ってすぐ1日の無料枠を使い切ってしまうとのこと。こういうところは怖いですね…6-4 Authでユーザー認証しよう
const auth = firebase.auth();const provider =new firebase.auth.GoogleAuthProvider();useEffect(() =>{ auth.signInWithPopup(provider).then((result) =>{// ログイン後の処理});},[]);
request.auth
が存在する場合のみアクセス可能に書き換える。6-5 メッセージが送れるアドレスブック
Next.js
アプリを作っていきます。next/router
を使っていますね。index.js
先頭でログアウト処理がありますが、Nuxt.jsアプリでは遷移はコンポーネント切り替えなので画面全体がリロードされるわけではないので、毎回ログアウトはされない…と注釈があります。このへんサーバーサイドのフレームワークと感覚を変えないといけないですね。Reactの超入門本なのでだいたい分かった気持ちを持ってもらい、この先が本番。まずは復習して、サンプル改造、オリジナルアプリを作ったりして前進していってほしい…となっています。
AddendumJavaScript超入門!
460Pぐらいある本ですが、超入門シリーズなのでターゲットはやはり初心者、初心者目線でReactの基礎部分を触っていく本でした。今までの本では難しくて挫折してしまうような方でもゆっくりじっくり学んでいけると思います。
2019年に出た本の第2版で2021/2月に刊行。2020年10月リリースのReact v17対応なので関数コンポーネント、React Hooksに対応しているのも嬉しいですね。日本で手に入る商業React本の中では現状この本が最新です。
一方仕事で使うレベルの方、すでにReactがある程度わかる方にとっては……解説を初心者向けに端折ったり表現を砕いている部分もあるので、多少物足りないかと思います。他の情報源と合わせてパラ読みしていく感じでしょうか。1冊の本の中にNuxt.js
とFirebase
の章があるのもお得ですが、ざっと体感してみる感じまでに留まっています。まあこのへんはそもそも読者ターゲットが違うのでしょうがないですね。
掌田津耶乃さんの本はご本人なのか編集者の仕事なのか、誤植が多いことで割と有名になってしまっています。本書は日本語の文章ではそんなには間違いは目立たなかったような気がします。第4章で「フィールド」が「フィール江戸」になってるところがあって、舶来の顔本発の技なのにお江戸の心意気が必要たぁ、こいつは粋だぜ…!とちょっとツボに入りました(笑)。サンプルコードはアロー関数=>
左右のスペースがあったりなかったりするのが気になりました。
引退した元TRPGゲーマー。COBOLでもなくPL/Iの金融系レガシー紙駆動開発から脱出→国産メーカー系総合ITベンダーのITエンジニア。所謂SIerのSEだけど仕事はほぼソフトウェアエンジニア/ソフトウェアアーキテクトとして、Web開発でコードを書いたり技術を追ったり時々イベントに行ったり、楽しいエンジニアリングを目指しています。Views are my own.
お気軽にどうぞ~
リンク集:https://lit.link/iwasiman
AIイラスト関連の活動はこちら↓
https://www.chichi-pui.com/users/iwasiman/
https://pixiv.me/iwasiman
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。