Zli × サイバーエージェント 合同LT 2024/07/14
https://zli.connpass.com/event/319572/
ReactやSwiftUIのような宣言的UIの「原理」を、10分のLTになんとか詰め込んでみました。
Reactフックは名詞起点 = オブジェクト指向を促す設計になってるよねって話とか。
まあ促しているというよりは、そもそもオブジェクト指向UIの原則を「グラフィック」によって適用したものがGUIなので、必然的に行き着く先ではあるんですが。
モードレスについての重要な資料 : https://www.sociomedia.co.jp/10046
---
(要約)
宣言的 UI とは、取りうる「視覚状態」を記述する方法で実装された UI のこと。命令的 UI とは、「変化」を細かく管理する方法で実装された UI のこと。宣言的 UI の利点は、UI 要素や操作方法を追加・変更しても他の既存実装が壊れにくく、システムが将来的に大規模化したり複雑になっても壊れにくいことといわれている。
なぜ宣言的 UI は壊れにくいのか?命令や手続きは「モード」を発生させる。モードとは、辞書的な意味では、1. 方法。型。2. 同じ入力でも他の設定の場合とは異なる結果を生じる設定。また、モードがあることを「モーダル」いい、モードがないことを「モードレス」という。モードは「モードエラー」を引き起こす。例えば、命令的 UI が変更時に矛盾を抱えて壊れることはモードエラーに相当する。一方、宣言的 UI は前の状態に関わらず次の視覚状態が決まるためモードレスであり、モードエラーがなく、変更時に壊れにくい。「宣言的」という概念の本質は「モードレスネス」である。
モードレスにするコツは「名詞」起点、すなわちオブジェクト指向。例えば、React は開発者がオブジェクトを指向するように「目当てになる有用な概念か?」「メンタルモデルと一致する粒度か?」という検討を随所で促す設計になっている。React フックは「オブジェクト(名詞)を宣言する」ものであって、「ロジック(動詞)を切り出す」ものでは決してない。