本記事は
ブログ書き初めウィーク
3日目の記事です。
📝
2日目
▶▶ 本記事 ▶▶
4日目
📅

はじめに
はじめまして。新入社員の安島です。
社会人としての時間の流れの速さに驚きながら、気がつけば年を越していました。そして今年はついに、お年玉をあげる側になり少しだけ大人になった気分です。
配属直後の8月から3ヶ月はReactやNext.jsを用いたフロントエンド開発、現在はJavaを用いたバックエンド開発を担当しています。
右も左も分からなかった配属直後、一番悩んだのは「どう学べば、現場で使える知識が身につくのか」ということでした。
そこで今回は、多くの初学者が敬遠しがちな、公式ドキュメントとの向き合い方について、Reactでの経験を交えながらその重要性を深掘りしていきます。
二次情報の限界
学習を始めた当初はUdemyや、Qiita、TechBlogといった二次情報を参考にTodoListアプリを開発してきました。
二次情報は要点が日本語でまとめられており「動くコード」を提供する逆引きとしては非常に優秀ですが、実務に近い応用を求められると以下のような課題にぶつかります。
- 「マネ」から「理解」への躍進が難しい
- 記事を真似すれば動くが、なぜそのHooksを使うのかという設計思想が抜け落ちているため応用が利かない。
- 前提知識のギャップ
- 著者の環境や個人の解釈に依存しており自分の開発環境で再現できない、あるいは特定の書き方に偏ってしまう。
- 情報の鮮度
- React 18で導入された自動バッチ処理などの最新仕様が反映されていない記事も多く、記事通りの挙動にならないため、原因究明に時間をとられる。
こうした不確実性を排除し、技術の本質を理解するために重要なのが公式ドキュメントです。
実際、インストラクターの先輩からも「まずは公式ドキュメントを見ながら進めてみて」と何度も言われました。当時は効率を優先して二次情報ばかり頼っていましたが、要件が少し複雑になると手戻りが発生しやすいという限界が待っていて、素直に聞いておけばよかったなとすぐに後悔した覚えがあります。
次章では、Reactの公式ドキュメントを通じて学んだ「一次情報の価値」について具体的に紹介します。
Reactの公式ドキュメントから学ぶ「一次情報」の価値
Reactの公式ドキュメント(英語版・日本語版)には、単なる使い方の説明だけではなく、開発者の設計思想や意図が言語化されています。
「体験」から始まるチュートリアル
Reactの公式ドキュメントにはブラウザ上でコードを書き換えられるサンドボックスが埋め込まれています。
特にTic-Tac-Toe(三目並べ)の作成を通して学ぶチュートリアルは、環境構築という作業をスキップしてすぐにコーディングからスタートできます。
このチュートリアルが面白いのは、ただ見た目を作るだけではなく「手順の履歴をさかのぼる(タイムトラベル機能)」といった少し複雑な処理を実装する中でReactの重要概念が自然と登場する点です。
例えば、以下のような要素です。
- Immutability(不変性)の維持
- なぜStateを直接書き換えず、コピーを作成してから更新するのか。
- コンポーネントによるカプセル化とリフトアップ
- 状態をどこまでリフトアップ(共有)し、どこで閉じるべきか。
二次情報を元に開発をしていた時の「なんとなくこう書く」という曖昧な知識が、手触りのある納得に変わっていきました。
技術の裏付け
例として「Learn」セクションの「Render and Commit」という概念の解説を挙げます。
多くの解説記事ではuseStateを単に値を書き換えるためのものと説明しますが、公式ドキュメントではReactが描画のリクエストを受けて(Render)から、実際にDOMに反映する(Commit)までのプロセスを段階的に記述しています。
ReactはUIのスナップショットを比較して差分だけを適用するという仕組みをもつことを理解できたことで、副作用(useEffect)が実行されるタイミングやレンダリングの最適化についても理屈をもって実装できるようになります。
公式ドキュメントを味方にするルール
とはいえ、情報量が膨大な公式ドキュメントをやみくもに読むのは非効率です。
そこで、今の私が実践している「公式ドキュメントを味方につけるルール」を3つ紹介します。
① Whyは公式、Howは二次情報
APIの呼び出し方やUIの構築はブログ等を参考にしつつ、なぜその技術が推奨されるのかは公式で確認。
②まずはサンプルコードを
長文を読んで理屈を詰め込む前に、公式のサンプルコードをいじったり正解のコードを壊しながら遊んでみる。
「公式の推奨パターン」を手に馴染ませることが一番の近道。
③ 深追いを管理する
知らない単語に出会ったら、リンクを辿って迷子にならないように30分で切り上げてメモに残す。
実践例
これらのルールに沿って公式ドキュメントを参照したことで改善した、TodoList開発でのTodo削除処理の実際のコードを紹介します。
Before spliceを使用してindexから削除する
const onClickDelete = (index) => { const newTodos = [...incompleteTodos]; newTodos.splice(index, 1); setIncompleteTodos(newTodos); };
二次情報を参考にした実装では、JavaScriptの標準的なメソッドであるspliceを用いて元の配列を直接書き換える処理をしています。
JavaScriptとしては正しく動作しているはずなのに、いざ使ってみると削除ボタンを押しても更新されません。先輩からもReactではspliceはあまり使われていないとの助言を受けて、そこで初めて公式ドキュメントを読みにいきました。
実際に「Updating Arrays in State(state内の配列の更新)」セクションには、Reactにおけるspliceは「避けるべき破壊的メソッドであり、予期せぬ挙動の原因となる」と記されています。
After filterを使用してindex以外を残す
const onClickDelete = (index) => { setIncompleteTodos(incompleteTodos.filter((_, i) => i !== index)); };
こちらはfilterを用いて「削除する要素を除いた、全く新しい配列」を作成しています。元の配列を壊さない(不変性を保つため)非破壊的な更新処理とすることで、変化の検知を確実にして正しく再レンダリングをさせることができます。
このように膨大な公式ドキュメントをすべて読まずとも、この1セクションを読むだけで「Reactとしての正解」が明確に理解ができます。
おわりに
いかがだったでしょうか。
初学者としての試行錯誤の記録ですが、どこか一つでも参考になれば嬉しいです。
Reactの学習で得た「公式ドキュメントに立ち返る癖」は、言語が代わっても大きな武器になっています。
公式ドキュメントを読む努力は、一見すると遠回りに見えるかもしれませんが、長期的には最速の学びです。誰かがかみ砕いた情報だけに頼らず、自ら「情報の源泉」に触れてみることが、エンジニアとしての自走力を育てるのだと実感しています。
ぜひ皆さんも、新しい技術を習得するときには公式ドキュメントを覗いてみてください。
最後までお読みいただき、ありがとうございました。