Skip to content

React 宣言的なUIの説明の追加#932

Open
Yokomi422 wants to merge 8 commits intomainfrom
react-session-declarative-ui
Open

React 宣言的なUIの説明の追加#932
Yokomi422 wants to merge 8 commits intomainfrom
react-session-declarative-ui

Conversation

@Yokomi422
Copy link
Copy Markdown
Contributor

@Yokomi422 Yokomi422 commented Feb 28, 2026

変更点

  • 宣言的UIを説明するための具体的な状態を持つTODOアプリの画像およびその説明を追加

画像 v1
declarative-ui drawio

画像 v2

  • 上のStateA, StateBを状態A, 状態Bに変更
  • 図をタイトにした
    declarative-ui-2 drawio
    画像 v3

declarative-ui drawio

画像v4

declarative-ui drawio

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Feb 28, 2026

Deploying utcode-learn with  Cloudflare Pages  Cloudflare Pages

Latest commit: 17c0339
Status: ✅  Deploy successful!
Preview URL: https://e2d68588.utcode-learn.pages.dev
Branch Preview URL: https://react-session-declarative-ui.utcode-learn.pages.dev

View logs

Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Comment thread docs/4-advanced/04-react/declarative-ui.drawio.svg
Yokomi422 and others added 2 commits April 25, 2026 20:40
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Yokomi422 Yokomi422 force-pushed the react-session-declarative-ui branch from 150c02b to 11dc3fd Compare April 25, 2026 11:43
@Yokomi422 Yokomi422 requested a review from chvmvd April 25, 2026 12:24
ところが、アプリケーションの本質的な状態というのは、一般的にそこまで多いものではありません。例えば、ToDoリストアプリケーションであれば、各ToDoを表す`string`の配列`string[]`がひとつだけあれば、アプリケーションの状態は全て表現できていることになるはずです。

**宣言的UI**は、こういった性質に着目します。より具体的に説明するのであれば、アプリケーションの状態$S$に対し、関数$f(S)$によりUIの状態を表現できるのであれば、開発者の関心を$S$の変化と$f$の定義のみに絞ることができるというわけです。
**宣言的UI**は、こういった性質に着目します。より一般的に説明するのであれば、アプリケーションの状態$S$に対し、関数$f(S)$によりUIの状態を表現できるのであれば、開発者の関心を$S$の変化と$f$の定義のみに絞ることができるというわけです。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここはもとのままで合っているような気がします。

「宣言的UIは、こういった性質に着目します。」という説明を、「より具体的に」説明すると、「アプリケーションの状態$S$に対し、...」という説明になるという論理展開になっているかと思います。
ここで2つの文の関係を考えます。「宣言的UIは、こういった性質に着目します。」という説明はぼんやりとした曖昧な説明となっており、後続の「アプリケーションの状態$S$に対し、...」という説明によって「こういった性質」の中身を一段詳しく説明しているという関係になっているかと思います。
そのため、たしかに、1文目の説明を2文目の説明がより具体的に説明しているので、ここでは「より一般的に」ではなく、「より具体的に」と書くのが正しいような気がします。

<ViewSource url={import.meta.url} path="_samples/todo-declarative" />

これにより、アプリケーション全体の状態が変数`state`に集約され、開発者が意識すべき状態のパターンを大幅に減らすことに成功しました。
これにより、アプリケーション全体の状態が変数`state`に集約され、開発者が意識すべき状態のパターンを大幅に減らすことに成功しました。このコードでは、状態$S$は変数`state`に、関数$f(S)$は`render`関数に対応しています。例えば、`remove("寝る")`によって`state`が変化すると、`render`関数が再び呼ばれ、新しい状態に応じたUIが描画されます。
Copy link
Copy Markdown
Contributor

@chvmvd chvmvd Apr 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここでは、この文より上にある説明で用いられているコード(addTodo関数やremoveTodo関数が宣言されているコード)と、図の中で用いられているコード(remove関数が用いられているコード)の2種類が存在しているかと思います。
そのため、ここでの「コード」という表現が、この文より上にある説明で用いられているコードと、図の中で用いられているコードのどちらを指しているか、かなり曖昧になっています。実際に、「これにより、アプリケーション全体の状態が変数stateに集約され、...」という文が指しているコードは前者のことを指しており、「このコードでは、状態$S$は変数stateに、...」という文が指しているコードは後者のことを指しているというように、1文目と2文目でまったく異なるものを指してしまっています。
また、画像ではadd("寝る")となっていて、説明ではremove("寝る")となっており、ずれているかと思います。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

骨格はいいと思います!ただ、上下左右で位置がずれている箇所や、余分な空白があるところ、余白が狭いところなどがあるので、例えば、#954 みたいな感じにするのはどうでしょう?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants