<feed xmlns="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/">
	<title>List of React [text.Baldanders.info]</title>
	<link rel="alternate" type="text/html" href="https://text.baldanders.info/tags/react/" />
	<link rel="self" type="application/atom+xml" href="https://text.baldanders.info/tags/react/index.xml" />
	<id>tag:text.Baldanders.info,2025-05-09:/tags</id>
	<updated>2025-05-09T07:34:18+09:00</updated>
	<subtitle>帰ってきた「しっぽのさきっちょ」</subtitle>
	<icon>https://text.baldanders.info/images/avatar.jpg</icon>
	<logo>https://text.baldanders.info/images/avatar.jpg</logo>

	<entry>
		<title>Node.js v24 がリリースされた</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/release/2025/05/nodejs-v24-is-released/" />
		<id>tag:text.Baldanders.info,2025-05-09:/release/2025/05/nodejs-v24-is-released/</id>
		<published>2025-05-08T22:34:18+00:00</published>
		<updated>2025-05-16T12:10:03+00:00</updated>
		<summary>Node.js v24 は 2025-10 以降に LTS になる予定である。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;最近仕事で React なんか弄ってるもんで &lt;a href=&#34;https://nodejs.org/&#34; target=&#34;_blank&#34; title=&#34;Node.js — Run JavaScript Everywhere&#34;&gt;Node.js&lt;/a&gt; の動向も押さえておこうかな，と。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v24.0.0&#34; target=&#34;_blank&#34;&gt;Node.js — Node v24.0.0 (Current)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この記事について &lt;a href=&#34;https://text.baldanders.info/remark/2025/04/kagi-assistant-for-all-users/&#34; target=&#34;_blank&#34; title=&#34;Kagi Assistant が全ユーザに解放&#34;&gt;Kagi Assistant&lt;/a&gt; に要約してもらった。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote&gt;&lt;p&gt;Node.js 24.0.0のリリース内容を要約します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;リリース日&lt;/strong&gt;: 2025年5月6日&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主な更新点&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;V8 JavaScriptエンジンがバージョン13.6にアップデート
&lt;ul&gt;
&lt;li&gt;新機能例: Float16Array, 明示的リソース管理, RegExp.escape, WebAssembly Memory64, Error.isErrorなど&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;npmがバージョン11にアップデート
&lt;ul&gt;
&lt;li&gt;パフォーマンス向上やセキュリティ改善、最新JavaScriptパッケージとの互換性強化&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;WindowsでのビルドにMSVCサポートを廃止し、ClangCLが必須に&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AsyncLocalStorage&lt;/code&gt;がデフォルトで&lt;code&gt;AsyncContextFrame&lt;/code&gt;を使用し、非同期コンテキスト追跡の効率化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;URLPattern&lt;/code&gt; APIがグローバルオブジェクトに追加され、URLパターンマッチングが容易に&lt;/li&gt;
&lt;li&gt;パーミッションモデルの改善（実験的フラグが&lt;code&gt;--experimental-permission&lt;/code&gt;から&lt;code&gt;--permission&lt;/code&gt;に変更）&lt;/li&gt;
&lt;li&gt;テストランナーの改善でサブテストの自動待機が可能に&lt;/li&gt;
&lt;li&gt;HTTPクライアントライブラリUndiciがバージョン7に更新&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非推奨・削除&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;url.parse()&lt;/code&gt;のランタイム非推奨（WHATWG URL APIの使用推奨）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tls.createSecurePair&lt;/code&gt;の削除&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SlowBuffer&lt;/code&gt;のランタイム非推奨&lt;/li&gt;
&lt;li&gt;REPLのnewなしインスタンス化の非推奨&lt;/li&gt;
&lt;li&gt;Zlibクラスのnewなし使用の非推奨&lt;/li&gt;
&lt;li&gt;&lt;code&gt;child_process&lt;/code&gt;の&lt;code&gt;spawn&lt;/code&gt;や&lt;code&gt;execFile&lt;/code&gt;での&lt;code&gt;args&lt;/code&gt;パラメータの非推奨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LTS移行予定&lt;/strong&gt;: 2025年10月にLTSへ移行予定（現在はCurrentリリース）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このリリースはNode.jsのプラットフォームの進化を促進する重要なアップデートであり、開発者は新機能の活用や非推奨APIの置き換えを検討することが推奨されています&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://nodejs.org/en/blog/release/v24.0.0#:~:text=Full%20document,more%20information.&#34; target=&#34;_blank&#34;&gt;Node.js — Node v24.0.0 (Current)&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;/figure&gt;
&lt;p&gt;というわけで &lt;a href=&#34;https://nodejs.org/&#34; target=&#34;_blank&#34; title=&#34;Node.js — Run JavaScript Everywhere&#34;&gt;Node.js&lt;/a&gt; v24 は 2025-10 以降に LTS になる予定である。
&lt;a href=&#34;https://nodejs.org/&#34; target=&#34;_blank&#34; title=&#34;Node.js — Run JavaScript Everywhere&#34;&gt;Node.js&lt;/a&gt; の LTS は通常30ヶ月間サポートされる。
現在 LTS として運用されているバージョンは v22 と v20 である（v20 は 2026-04 まで）。
また v18 は 2025-04 に EoL (End-of-Life) になっている。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/03/a-study-in-react/&#34; target=&#34;_blank&#34;&gt;React のお勉強&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考文献&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4814401094?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/41wCuCl0r-L._SL160_.jpg&#34; width=&#34;125&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4814401094?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Effective TypeScript 第2版 ―型システムの力を最大限に引き出す83項目&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Dan Vanderkam (著), 今村 謙士 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;オライリー・ジャパン 2025-04-08 (Release 2025-04-08)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4814401094 (ASIN), 9784814401093 (EAN), 4814401094 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;4&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;far fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;TypeScript のお勉強用に購入。版元で &lt;a href=&#34;https://www.oreilly.co.jp/books/9784814401093/&#34;&gt;PDF 版&lt;/a&gt;が買える。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2025-05-03&#34;&gt;2025-05-03&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- Effective TypeScript 第2版 --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4297129167?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51j0YP8UrAL._SL160_.jpg&#34; width=&#34;126&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4297129167?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;手島 拓也 (著), 吉田 健人 (著), 高林 佳稀 (著)&lt;/dd&gt;
    &lt;dd&gt;技術評論社 2022-07-25 (Release 2022-07-25)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4297129167 (ASIN), 9784297129163 (EAN), 4297129167 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;4&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;far fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;仕事用に購入。版元で&lt;a href=&#34;https://gihyo.jp/dp/ebook/2022/978-4-297-12917-0&#34;&gt;電子版&lt;/a&gt;が買える。必要なところだけつまみ食い的に参照している。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2023-11-26&#34;&gt;2023-11-26&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発 --&gt;
</content>
	</entry><entry>
		<title>React のお勉強</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/03/a-study-in-react/" />
		<id>tag:text.Baldanders.info,2025-03-14:/remark/2025/03/a-study-in-react/</id>
		<published>2025-03-14T09:44:25+00:00</published>
		<updated>2025-03-14T09:44:29+00:00</updated>
		<summary>もう本当に基礎の基礎。 JSX から始めよう</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;&lt;a href=&#34;https://react.dev/&#34; target=&#34;_blank&#34; title=&#34;React&#34;&gt;React&lt;/a&gt; について勉強中。&lt;/p&gt;
&lt;p&gt;いや，今までにも &lt;a href=&#34;https://react.dev/&#34; target=&#34;_blank&#34; title=&#34;React&#34;&gt;React&lt;/a&gt; / &lt;a href=&#34;https://www.typescriptlang.org/&#34; target=&#34;_blank&#34; title=&#34;TypeScript: JavaScript With Syntax For Types.&#34;&gt;TypeScript&lt;/a&gt; なプロジェクトに参加したことはあるんだけど，ある程度お膳立てされた状態での join だったので，正直 &lt;a href=&#34;https://react.dev/&#34; target=&#34;_blank&#34; title=&#34;React&#34;&gt;React&lt;/a&gt; や &lt;a href=&#34;https://www.typescriptlang.org/&#34; target=&#34;_blank&#34; title=&#34;TypeScript: JavaScript With Syntax For Types.&#34;&gt;TypeScript&lt;/a&gt; を知らなくても（やっつけの知識で）コードは書けるしテストも出来るわけよ。
知らない言語でもコードなんて見れば分かるし。
でも，それってプロジェクトが終われば忘れるぢゃん，身に付いてないんだから。&lt;/p&gt;
&lt;p&gt;というわけで，ちょうど新しいプロジェクトのための事前学習を始めたタイミングということもあり，勤務先の有識者に最初から教えてもらえることになった。
ただし，その前に公式サイトの&lt;a href=&#34;https://ja.react.dev/learn&#34; target=&#34;_blank&#34; title=&#34;クイックスタート – React&#34;&gt;学習ページ（日本語があるのか）&lt;/a&gt;は読んでおいてね，と言われ，スキマ時間で勉強を始めたのだが&amp;hellip; JSX から始めるのか。
よしやってみよう。&lt;/p&gt;
&lt;p&gt;JSX で簡単なコードを書くだけなら特別な開発環境も要らないしフレームワークも要らないらしい。
準備として HTML の &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; 要素に以下の記述を加えればよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://unpkg.com/@babel/standalone/babel.min.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://ga.jspm.io/npm:es-module-shims@1.7.0/dist/es-module-shims.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;importmap&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;imports&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;react&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://esm.sh/react?dev&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;react-dom/client&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://esm.sh/react-dom/client?dev&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://babeljs.io/docs/babel-standalone&#34; target=&#34;_blank&#34; title=&#34;@babel/standalone · Babel&#34;&gt;@babel/standalone&lt;/a&gt; は JSX から JavaScript (&lt;code&gt;React.createElement&lt;/code&gt; の式) への変換を行うものらしい。
コードはこんな感じに記述する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;root1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text/babel&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;data-type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;module&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;React&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;react&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRoot&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;react-dom/client&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MyApp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;strong&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Hello&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;world&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&amp;lt;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/strong&amp;gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;container&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;root1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;container&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;render&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;MyApp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;強調している部分が JSX の特徴的な部分で HTML タグ風の記述（JSX 要素）が使えるため Web デザイナーでもとっつきやすいというのが売りなんだそうな。
ユーザが定義した &lt;code&gt;MyApp()&lt;/code&gt; 関数の名前をタグのように使えるのがポイント。
タグは XML と同じ仕様なので void タグについては &lt;code&gt;&amp;lt;MyApp /&amp;gt;&lt;/code&gt; のように明示する必要がある。&lt;/p&gt;
&lt;p&gt;このコードを含む HTML ファイルをブラウザで表示すると以下のような表示になる。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;div class=&#34;box left&#34;&gt;
&lt;div id=&#34;root1&#34;&gt;&lt;/div&gt;
&lt;script type=&#34;text/babel&#34; data-type=&#34;module&#34;&gt;
  import React from &#39;react&#39;;
  import { createRoot } from &#39;react-dom/client&#39;;

  const MyApp = function() {
    return &lt;strong&gt;Hello, world!&lt;/strong&gt;;
  }

  const container = document.getElementById(&#39;root1&#39;);
  const root = createRoot(container);
  root.render(&lt;MyApp /&gt;);
&lt;/script&gt;
&lt;/div&gt;
&lt;figcaption&gt;&lt;div&gt;Hello, World by React/JSX&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;うんうん。
ちゃんと動いてるな。&lt;/p&gt;
&lt;p&gt;HTML タグ記法を JSX の記法に変換する “&lt;a href=&#34;https://transform.tools/html-to-jsx&#34; target=&#34;_blank&#34;&gt;HTML to JSX&lt;/a&gt;” というツールもある。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ja.react.dev/learn&#34; target=&#34;_blank&#34;&gt;チュートリアル&lt;/a&gt;のコードをローカルで試したい場合。&lt;/p&gt;
&lt;p&gt;まずは node.js のインストールを済ませておくこと。
私は &lt;a href=&#34;https://github.com/nodesource&#34; target=&#34;_blank&#34; title=&#34;NodeSource&#34;&gt;NodeSource&lt;/a&gt; から v22 LTS 版を入れている。
最近は &lt;a href=&#34;https://bun.sh/&#34; target=&#34;_blank&#34; title=&#34;Bun — A fast all-in-one JavaScript runtime&#34;&gt;Bun&lt;/a&gt; の話もよく聞くようになった。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://ja.react.dev/learn/tutorial-tic-tac-toe&#34;&gt;
&lt;a href=&#34;https://ja.react.dev/learn/tutorial-tic-tac-toe&#34;&gt;&lt;img src=&#34;./tit-tat-toe-1.png&#34; srcset=&#34;./tit-tat-toe-1.png 713w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;チュートリアル：三目並べ – React&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://ja.react.dev/learn/tutorial-tic-tac-toe&#34;&gt;チュートリアル：三目並べ – React&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;右上にある &lt;code&gt;Fork&lt;/code&gt; を押下すると CodeSandbox のページが開く。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./codesandbox.png&#34;&gt;
&lt;a href=&#34;./codesandbox.png&#34;&gt;&lt;img src=&#34;./codesandbox.png&#34; srcset=&#34;./codesandbox.png 713w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Preview - nodebox - CodeSandbox&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;./codesandbox.png&#34;&gt;Preview - nodebox - CodeSandbox&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;左上にある &lt;strong&gt;□&lt;/strong&gt; を押下して表示されるメニューから “Download Sandbox” を選択してコードをまるごと（zip 形式）ダウンロードし，ローカルの適当なディレクトリに展開する。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm install&lt;/code&gt; を実行して依存ライブラリをインストールしようとしたのだがエラーになって怒られたので &lt;code&gt;--legacy-peer-deps&lt;/code&gt; オプションを付けてやり直す。
今度はうまく行ったが deprecated の嵐（笑）&lt;/p&gt;
&lt;p&gt;いよいよ &lt;code&gt;npm start&lt;/code&gt; でローカルサーバを起動しようとしたのだが，またしてもエラーで起動せず &lt;code&gt;orz&lt;/code&gt; どうも &lt;code&gt;npm audit fix --force&lt;/code&gt; で依存関係を更新しないといけないらしい。
しかもこれを実行するたびに状況が変わるってどうなってるの？？？&lt;/p&gt;
&lt;p&gt;ホンマ，この辺のテキトーさが node.js 開発系が嫌な理由なんだよな。
しかも依存が深すぎて？ 何をどうしていいのか分からない。
みんなこれちゃんとメンテ出来てるの？&lt;/p&gt;
&lt;p&gt;ぶちぶちと愚痴を垂れつつ &lt;code&gt;npm start&lt;/code&gt; を再実行。
とりあえず動いたかな。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./npm-start.png&#34;&gt;
&lt;a href=&#34;./npm-start.png&#34;&gt;&lt;img src=&#34;./npm-start.png&#34; srcset=&#34;./npm-start.png 713w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;npm start&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;./npm-start.png&#34;&gt;npm start&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./tit-tat-toe-2.png&#34;&gt;
&lt;a href=&#34;./tit-tat-toe-2.png&#34;&gt;&lt;img src=&#34;./tit-tat-toe-2.png&#34; srcset=&#34;./tit-tat-toe-2.png 713w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;三目並べ 実行結果&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./tit-tat-toe-2.png&#34;&gt;三目並べ 実行結果&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;動いてるっぽいな。&lt;/p&gt;
&lt;p&gt;さて，お勉強を続けますか。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://babeljs.io/docs/babel-standalone&#34; target=&#34;_blank&#34;&gt;@babel/standalone · Babel&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/murasuke/items/8dbe350c0c1c1fe269bf&#34; target=&#34;_blank&#34;&gt;babel/standaloneの使い方(文字列に格納したjavascriptソースをブラウザ内でトランスパイルする) #React - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.npmjs.com/package/es-module-shims&#34; target=&#34;_blank&#34;&gt;es-module-shims - npm&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://www.youtube.com/playlist?list=PLX8Rsrpnn3IWPoM7-1YPDksRRkamRY25k&#34; target=&#34;_blank&#34;&gt;新・日本一わかりやすいReact入門【基礎編】 - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://zenn.dev/nikaera/articles/hugo-react-dev&#34; target=&#34;_blank&#34;&gt;Hugo で React + TypeScript を利用してサクッとウェブサイトに RSS リーダーを追加する&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://zenn.dev/yamakenji24/articles/bcba86de05e5d5&#34; target=&#34;_blank&#34;&gt;BunでReact関連の開発環境を構築する&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://job-info.hateblo.jp/entry/2024/07/30/145804&#34; target=&#34;_blank&#34;&gt;ReactをBunで使用する方法 - Web開発における知見共有系ページ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://zenn.dev/taketaku/articles/ffb239c3da8613&#34; target=&#34;_blank&#34;&gt;package.jsonで時々見かけるbrowserslistとは&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考文献&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4297129167?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51j0YP8UrAL._SL160_.jpg&#34; width=&#34;126&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4297129167?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;手島 拓也 (著), 吉田 健人 (著), 高林 佳稀 (著)&lt;/dd&gt;
    &lt;dd&gt;技術評論社 2022-07-25 (Release 2022-07-25)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4297129167 (ASIN), 9784297129163 (EAN), 4297129167 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;4&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;far fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;仕事用に購入。版元で&lt;a href=&#34;https://gihyo.jp/dp/ebook/2022/978-4-297-12917-0&#34;&gt;電子版&lt;/a&gt;が買える。必要なところだけつまみ食い的に参照している。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2023-11-26&#34;&gt;2023-11-26&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- TypeScriptとReact/Next.jsでつくる実践Webアプリケーション開発 --&gt;
</content>
	</entry>
</feed>
