<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Tdd on hdknr blog</title><link>https://hdknr.github.io/blogs/tags/tdd/</link><description>Recent content in Tdd on hdknr blog</description><generator>Hugo -- 0.157.0</generator><language>ja</language><lastBuildDate>Mon, 16 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hdknr.github.io/blogs/tags/tdd/index.xml" rel="self" type="application/rss+xml"/><item><title>AI時代のQA：「決定論から確率論へ」のパラダイムシフト</title><link>https://hdknr.github.io/blogs/posts/2026/03/ai%E6%99%82%E4%BB%A3%E3%81%AEqa%E6%B1%BA%E5%AE%9A%E8%AB%96%E3%81%8B%E3%82%89%E7%A2%BA%E7%8E%87%E8%AB%96%E3%81%B8%E3%81%AE%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%82%B7%E3%83%95%E3%83%88/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/ai%E6%99%82%E4%BB%A3%E3%81%AEqa%E6%B1%BA%E5%AE%9A%E8%AB%96%E3%81%8B%E3%82%89%E7%A2%BA%E7%8E%87%E8%AB%96%E3%81%B8%E3%81%AE%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%82%B7%E3%83%95%E3%83%88/</guid><description>&lt;p&gt;AI の進化により、ソフトウェアの品質保証（QA）が根本的な転換期を迎えている。従来の「OK/NG を明確に判定する」決定論的なテストから、「明らかに間違っているものを排除する」確率論的なアプローチへ。このパラダイムシフトが QA エンジニアの役割をどう変えるのかを考える。&lt;/p&gt;
&lt;h2 id="決定論から確率論へ"&gt;決定論から確率論へ&lt;/h2&gt;
&lt;p&gt;従来のソフトウェアテストは決定論的だった。入力に対して期待される出力が一意に定まり、テスト結果は OK か NG かの二択。しかし、AI を組み込んだシステムでは、同じ入力に対しても出力が毎回異なる可能性がある。&lt;/p&gt;
&lt;p&gt;MIT Technology Review でも報じられているように、コンピューティングの世界全体が決定論的アプローチから確率論的アプローチへ移行しつつある。QA もこの流れと無縁ではない。&lt;/p&gt;
&lt;p&gt;AI システムのテストでは、「正解を一つ定義して合否を判定する」のではなく、「明らかに間違っているものを排除し、許容範囲内に収まっているかを評価する」アプローチが求められる。&lt;/p&gt;
&lt;h2 id="テストコードの-ai-丸投げが危険な理由"&gt;テストコードの AI 丸投げが危険な理由&lt;/h2&gt;
&lt;p&gt;「AI にテストコードを書かせれば効率的」と考えるのは自然だが、ここには大きな落とし穴がある。&lt;/p&gt;
&lt;p&gt;AI が生成するテストコードは、実装コードに対して表面的にフィットするテストを作りがちだ。つまり、実装の動作を追認するだけのテストになりやすい。本来テストが担うべき「仕様に対する検証」や「境界値・異常系の網羅」といった設計意図が欠落する可能性がある。&lt;/p&gt;
&lt;p&gt;テスト設計とは「何をテストすべきか」を決める行為であり、テストコードの記述は「どうテストするか」の実装に過ぎない。AI に丸投げして効率化できるのは後者であり、前者は依然として人間の判断力が不可欠だ。&lt;/p&gt;
&lt;h2 id="テスト設計スキルの希少性"&gt;テスト設計スキルの希少性&lt;/h2&gt;
&lt;p&gt;テスト設計ができるエンジニアは 100 人中 5 人程度とも言われる。この希少性は AI 時代においてむしろ差別化要因になる。&lt;/p&gt;
&lt;p&gt;MagicPod のブログでも指摘されているように、AI が代替するのは定型的な作業だ。テスト設計・実行の自動化や不具合記録などの繰り返し業務は急速に自動化されている。一方で、以下のようなスキルは AI では代替が難しい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;リスク分析に基づくテスト戦略の策定&lt;/strong&gt; — どこに重点的にテストリソースを配分すべきかの判断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ビジネスコンテキストの理解&lt;/strong&gt; — 技術的な正しさだけでなく、ビジネスインパクトを考慮した品質判断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;探索的テスト&lt;/strong&gt; — 仕様書に書かれていない暗黙の要件やエッジケースの発見&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="テスト設計情報の少なさと-ai-の学習限界"&gt;テスト設計情報の少なさと AI の学習限界&lt;/h2&gt;
&lt;p&gt;テスト設計に関する公開情報は、コーディングに関する情報と比較して圧倒的に少ない。Stack Overflow や GitHub にはコードは大量にあるが、「なぜそのテストケースを選んだのか」「どのようなリスク分析に基づいてテスト戦略を決めたのか」といったテスト設計の知見は体系的に蓄積されていない。&lt;/p&gt;
&lt;p&gt;つまり、AI はテスト設計を学習するための十分なデータを持っていない。これは裏を返せば、テスト設計のスキルを持つ人材の価値が AI 時代にも維持される理由でもある。&lt;/p&gt;
&lt;h2 id="日本のテスト分析設計の強み"&gt;日本のテスト分析・設計の強み&lt;/h2&gt;
&lt;p&gt;日本はソフトウェアテストの分析・設計の分野で国際的にリードしている。組み合わせテスト技法、状態遷移テスト、デシジョンテーブルテストなど、体系的なテスト設計手法の発展に貢献してきた。&lt;/p&gt;
&lt;p&gt;しかし、この強みが十分に活かされているとは言い難い。テスト設計の知見が暗黙知にとどまり、コミュニティ全体で共有・活用される仕組みが不足している。AI 時代にこの強みを活かすためには、テスト設計の知見をより体系的に言語化・公開していく取り組みが重要になるだろう。&lt;/p&gt;
&lt;h2 id="ai-エージェントによるテスト設計実行の実践"&gt;AI エージェントによるテスト設計・実行の実践&lt;/h2&gt;
&lt;p&gt;では、実際に AI エージェントをテスト設計・実行にどう活用すべきなのか。この分野では理論と実践の両面で急速に知見が蓄積されつつある。&lt;/p&gt;</description></item><item><title>「決定性のないソフトウェア」の設計と評価 × t_wada氏の視点とskill-creatorが実装したTDD→EDD移行パターン</title><link>https://hdknr.github.io/blogs/posts/2026/03/%E6%B1%BA%E5%AE%9A%E6%80%A7%E3%81%AE%E3%81%AA%E3%81%84%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E8%A8%AD%E8%A8%88%E3%81%A8%E8%A9%95%E4%BE%A1-t_wada%E6%B0%8F%E3%81%AE%E8%A6%96%E7%82%B9%E3%81%A8skill-creator%E3%81%8C%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%9Ftddedd%E7%A7%BB%E8%A1%8C%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/%E6%B1%BA%E5%AE%9A%E6%80%A7%E3%81%AE%E3%81%AA%E3%81%84%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E8%A8%AD%E8%A8%88%E3%81%A8%E8%A9%95%E4%BE%A1-t_wada%E6%B0%8F%E3%81%AE%E8%A6%96%E7%82%B9%E3%81%A8skill-creator%E3%81%8C%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%9Ftddedd%E7%A7%BB%E8%A1%8C%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3/</guid><description>&lt;h1 id="決定性のないソフトウェアをどう設計し評価するか--t_wada-氏の視点と-skill-creator-が実装した答え"&gt;「決定性のないソフトウェア」をどう設計し評価するか &amp;mdash; t_wada 氏の視点と skill-creator が実装した答え&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/t_wada/status/2029390103462986212"&gt;和田卓人（@t_wada）氏が X で言及&lt;/a&gt;した、skill-creator の設計に関するコメントが注目を集めています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;skill-creator いい感じで動作すると思っていたら中身がこのようになっていたのか。決定性のないソフトウェアをどう実践的に設計して評価するかといった観点でも参考になるエントリ。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;t_wada 氏は、テスト駆動開発（TDD）の日本における第一人者であり、Kent Beck 著『テスト駆動開発』の翻訳者、power-assert-js の作者として知られるプログラマです。その t_wada 氏が「決定性のないソフトウェアの設計と評価」という観点で skill-creator を評価しています。&lt;/p&gt;
&lt;p&gt;元記事は&lt;a href="https://nyosegawa.github.io/posts/skill-creator-and-orchestration-skill/"&gt;逆瀬川ちゃん氏のブログ「skill-creator から学ぶ Skill 設計と、Orchestration Skill の作り方」&lt;/a&gt;です。本記事では、t_wada 氏の指摘する「決定性のないソフトウェア」の設計問題に焦点を当て、skill-creator がどのような解を実装しているかを解説します。&lt;/p&gt;
&lt;h2 id="決定性のないソフトウェアとは何か"&gt;「決定性のないソフトウェア」とは何か&lt;/h2&gt;
&lt;h3 id="従来のソフトウェアとの違い"&gt;従来のソフトウェアとの違い&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;決定的ソフトウェア（従来）:
入力 A → 常に出力 X
入力 B → 常に出力 Y
→ 「2 + 2 = 4」を assert できる
非決定的ソフトウェア（LLM ベース）:
入力 A → 出力 X1, X2, X3...（毎回異なる）
入力 B → 出力 Y1, Y2, Y3...（毎回異なる）
→ 「正解」が一意に定まらない
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;LLM の出力は&lt;strong&gt;確率的&lt;/strong&gt;です。同じプロンプトを送っても、temperature やサンプリングの影響で異なる結果が返ります。従来の &lt;code&gt;assertEqual(expected, actual)&lt;/code&gt; というテスト手法が通用しない世界です。&lt;/p&gt;</description></item><item><title>「テスト書いて」と「テスト駆動で実装して」は全く別物 — AI×TDD で品質が劇的に変わる構造的理由</title><link>https://hdknr.github.io/blogs/posts/2026/03/%E3%83%86%E3%82%B9%E3%83%88%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%A8%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%81%AF%E5%85%A8%E3%81%8F%E5%88%A5%E7%89%A9-aitdd-%E3%81%A7%E5%93%81%E8%B3%AA%E3%81%8C%E5%8A%87%E7%9A%84%E3%81%AB%E5%A4%89%E3%82%8F%E3%82%8B%E6%A7%8B%E9%80%A0%E7%9A%84%E7%90%86%E7%94%B1/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/%E3%83%86%E3%82%B9%E3%83%88%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%A8%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%81%AF%E5%85%A8%E3%81%8F%E5%88%A5%E7%89%A9-aitdd-%E3%81%A7%E5%93%81%E8%B3%AA%E3%81%8C%E5%8A%87%E7%9A%84%E3%81%AB%E5%A4%89%E3%82%8F%E3%82%8B%E6%A7%8B%E9%80%A0%E7%9A%84%E7%90%86%E7%94%B1/</guid><description>&lt;h1 id="テスト書いてとテスト駆動で実装しては全く別物--aitdd-で品質が劇的に変わる構造的理由"&gt;「テスト書いて」と「テスト駆動で実装して」は全く別物 — AI×TDD で品質が劇的に変わる構造的理由&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/neurostack_0001/status/2028788224231927975"&gt;@neurostack_0001 氏のポスト&lt;/a&gt;が、AI にテストを書かせる際の決定的な違いを指摘し、大きな反響を呼んでいます（いいね 267、ブックマーク 222）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;3ヶ月AIにテストコード書かせてわかったこと。&lt;/p&gt;
&lt;p&gt;「テスト書いて」と「テスト駆動で実装して」は全く別物だった。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3ヶ月間の実体験から導き出された結論は明快です。AI に「テストを書いて」と頼むのと「テスト駆動で実装して」と頼むのでは、&lt;strong&gt;出力されるテストの品質が根本的に異なる&lt;/strong&gt;。本記事では、なぜこの違いが生まれるのか、その構造的な理由と実践的なワークフローを解説します。&lt;/p&gt;
&lt;h2 id="テスト書いてが失敗する構造"&gt;「テスト書いて」が失敗する構造&lt;/h2&gt;
&lt;h3 id="テスト後付けバイアス"&gt;テスト後付けバイアス&lt;/h3&gt;
&lt;p&gt;ポスト主が最初に経験した失敗パターンは、多くの開発者に共通するものです。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最初はClaude Codeに「この関数のテスト書いて」と頼んでた。構文は完璧。でも実行すると半分以上落ちる。テスト対象もモックしてたり、存在しないメソッド呼んでたり。「テストっぽいもの」を量産してただけ。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この問題は&lt;strong&gt;テスト後付けバイアス&lt;/strong&gt;と呼ばれる LLM の構造的な弱点に起因します。LLM が実装コードを見てからテストを生成する場合、テストは「コードが何をすべきか」ではなく「コードが何をしているか」を検証するものになりがちです。&lt;/p&gt;
&lt;p&gt;具体的に発生する問題は以下の通りです。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;問題&lt;/th&gt;
&lt;th&gt;説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;テスト対象のモック化&lt;/td&gt;
&lt;td&gt;テストすべき関数自体をモックしてしまい、実際のロジックを検証していない&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;存在しないメソッド呼び出し&lt;/td&gt;
&lt;td&gt;LLM のハルシネーションにより、実在しない API やメソッドをテストで使用する&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;実装への密結合&lt;/td&gt;
&lt;td&gt;内部実装の詳細に依存するテストが生成され、リファクタリングで壊れる&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;網羅性の欠如&lt;/td&gt;
&lt;td&gt;エッジケースや異常系のテストが不足し、正常系のみカバーする&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="なぜ-llm-はテストっぽいものを量産するのか"&gt;なぜ LLM は「テストっぽいもの」を量産するのか&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://codemanship.wordpress.com/2026/01/09/why-does-test-driven-development-work-so-well-in-ai-assisted-programming/"&gt;Codemanship の記事&lt;/a&gt;が、この問題の本質を指摘しています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The more things we ask models to pay attention to, the less able they are to pay attention to any of them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;LLM は「次の最も確率の高いトークン」を予測する仕組みです。既存の実装コードをコンテキストに含めてテストを生成すると、モデルは&lt;strong&gt;実装の構造を模倣したテスト&lt;/strong&gt;を生成します。テストとしての妥当性ではなく、「テストとして見た目がそれらしいもの」を出力するのです。&lt;/p&gt;
&lt;p&gt;これは LLM の根本的な限界であり、プロンプトの工夫だけでは解決できません。&lt;/p&gt;
&lt;h2 id="テスト駆動で実装してが品質を変える理由"&gt;「テスト駆動で実装して」が品質を変える理由&lt;/h2&gt;
&lt;h3 id="テストファーストが生む構造的な違い"&gt;テストファーストが生む構造的な違い&lt;/h3&gt;
&lt;p&gt;ポスト主が発見した転機は、TDD のループを AI 自身にやらせることでした。&lt;/p&gt;</description></item><item><title>リクルート新卒研修の React 資料が「無料で最高の教材」と言われる理由</title><link>https://hdknr.github.io/blogs/posts/2026/03/%E3%83%AA%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%88%E6%96%B0%E5%8D%92%E7%A0%94%E4%BF%AE%E3%81%AE-react-%E8%B3%87%E6%96%99%E3%81%8C%E7%84%A1%E6%96%99%E3%81%A7%E6%9C%80%E9%AB%98%E3%81%AE%E6%95%99%E6%9D%90%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%82%8B%E7%90%86%E7%94%B1/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://hdknr.github.io/blogs/posts/2026/03/%E3%83%AA%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%88%E6%96%B0%E5%8D%92%E7%A0%94%E4%BF%AE%E3%81%AE-react-%E8%B3%87%E6%96%99%E3%81%8C%E7%84%A1%E6%96%99%E3%81%A7%E6%9C%80%E9%AB%98%E3%81%AE%E6%95%99%E6%9D%90%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%82%8B%E7%90%86%E7%94%B1/</guid><description>&lt;h1 id="リクルート新卒研修の-react-資料が無料で最高の教材と言われる理由"&gt;リクルート新卒研修の React 資料が「無料で最高の教材」と言われる理由&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://x.com/sigumataityouda/status/2028111546975760640"&gt;sigumataityouda 氏のポスト&lt;/a&gt;が、リクルートの新卒研修資料を「React を語る上で欠かせないもの」「完成度が非常に高い」と紹介しています。リクルートは 2017 年から毎年、新卒エンジニア向け研修資料を無料公開しており、React 研修資料は特に業界で高く評価されています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;React語る上で欠かせないものとしてリクルートの新卒研修資料というのもがある。完成度が非常に高い。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="リクルートの-react-研修資料とは"&gt;リクルートの React 研修資料とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://speakerdeck.com/recruitengineers/react-yan-xiu-2024"&gt;React 研修 (2024)&lt;/a&gt; は、リクルートのエンジニアコース新卒研修「BootCamp」で使われている講義資料です。約 170 スライド以上で構成され、Speaker Deck で無料公開されています。&lt;/p&gt;
&lt;h3 id="研修の位置づけ"&gt;研修の位置づけ&lt;/h3&gt;
&lt;p&gt;リクルートの新卒エンジニアは配属前に約 3 ヶ月間の BootCamp を受講します。&lt;a href="https://techblog.recruit.co.jp/article-4635/"&gt;2024 年度は 24 講座以上&lt;/a&gt;が開講されており、React 研修はフロントエンド技術スタックの中核として位置づけられています。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;研修カテゴリ&lt;/th&gt;
&lt;th&gt;主な講座&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;フロントエンド&lt;/td&gt;
&lt;td&gt;JavaScript、TypeScript、&lt;strong&gt;React&lt;/strong&gt;、Next.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;バックエンド&lt;/td&gt;
&lt;td&gt;データベース設計、API 設計&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;品質・テスト&lt;/td&gt;
&lt;td&gt;テスト駆動開発（講師: t_wada 氏）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;セキュリティ&lt;/td&gt;
&lt;td&gt;セキュリティ演習&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;テキスト生成 AI 活用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;マインドセット&lt;/td&gt;
&lt;td&gt;ソフトウェアエンジニアとしての姿勢と心構え&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最初の講座「ソフトウェアエンジニアとしての姿勢と心構え」は、技術顧問の t_wada 氏が担当し、「技術の学び方を学ぶ」ことに重点を置いています。&lt;/p&gt;
&lt;h2 id="資料の構成"&gt;資料の構成&lt;/h2&gt;
&lt;p&gt;React 研修資料は 5 つのセクションで構成されています。&lt;/p&gt;
&lt;h3 id="1-web-アプリ開発の変遷"&gt;1. Web アプリ開発の変遷&lt;/h3&gt;
&lt;p&gt;React を学ぶ前に、Web アプリケーション開発がどう進化してきたかを整理します。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;世代&lt;/th&gt;
&lt;th&gt;アーキテクチャ&lt;/th&gt;
&lt;th&gt;特徴&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;第 1 世代&lt;/td&gt;
&lt;td&gt;MPA（クラシック SSR）&lt;/td&gt;
&lt;td&gt;サーバーが HTML を生成、ページ遷移ごとにリロード&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;第 2 世代&lt;/td&gt;
&lt;td&gt;MPA + jQuery&lt;/td&gt;
&lt;td&gt;DOM 操作で部分的な動的 UI を実現&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;第 3 世代&lt;/td&gt;
&lt;td&gt;SPA（CSR のみ）&lt;/td&gt;
&lt;td&gt;クライアントで描画、リッチな UX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;第 4 世代&lt;/td&gt;
&lt;td&gt;SPA（CSR + 事前レンダリング）&lt;/td&gt;
&lt;td&gt;SSR / SSG で初期表示を高速化&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;この変遷を理解することで、「なぜ React が必要になったのか」という文脈が掴めます。jQuery 時代の命令的 UI と React の宣言的 UI の違いを、歴史的な流れの中で説明しているのが特徴です。&lt;/p&gt;</description></item></channel></rss>