【りあくてぃぶぷろぐらみんぐ】

リアクティブプログラミング とは?

最終更新:
💡 変化を察知して自動で連鎖、スプレッドシートのような反応型プログラミング

データの変化やイベントを、定義した依存関係や処理の流れに沿って伝えるプログラミングの考え方。依存する計算やUIの更新、非同期イベントの処理などに使われる。

📌 このページのポイント
リアクティブ:変化を処理へ伝える Observableの値を処理する例 値を発行 1, 2, 3 map 2倍にする filter 4以上だけ 購読者 受け取る 1, 2, 3 → 2, 4, 6 → 4, 6 購読した処理へ、条件に合う値が届く 表計算の例 A1:3 → 4 B1 = A1 × 2:6 → 8 更新の仕組みが必要 通常の変数すべてを 自動追跡するわけでない
RxJSのストリーム処理とUIの更新は関連する考え方ですが、更新方法は仕組みごとに異なります。
ひよこ ひよこ
リアクティブプログラミングって何が反応するの?
ペンギン先生 ペンギン先生
データの変化に、依存する処理が反応するんだ。表計算でA1を参照する数式を設定しておくと、A1の変更で数式の結果も再計算される、というイメージだよ
ひよこ ひよこ
普通の変数も自動で更新されるの?
ペンギン先生 ペンギン先生
そうではないよ。普通のJavaScriptでb = a * 2と計算しても、後でaを変えるだけではbは再計算されないんだ。変化を検知して処理へ伝える仕組みと、依存関係の定義が必要だよ
ひよこ ひよこ
RxJSって関係あるの?
ペンギン先生 ペンギン先生
RxJSではObservableを購読し、届く値をmapで変換したりfilterで選んだりできるよ。イベントを処理する流れを組み立てる方法で、UIの更新だけに限らないんだ
ひよこ ひよこ
ReactやVueも同じ仕組みなの?
ペンギン先生 ペンギン先生
Vueはrefなどへのアクセスを追跡して依存する処理を更新するよ。ReactのuseStateはsetterで更新を要求する仕組みなんだ。どちらもUI更新に使うけれど、通常の変数の代入だけで同じように動くわけではないよ
ひよこ ひよこ
リアクティブマニフェストとは同じもの?
ペンギン先生 ペンギン先生
関連する考え方だけど対象が違うよ。マニフェストは応答性・耐障害性・弾力性・メッセージ駆動を備えるシステムの設計を述べているんだ。データの変化を伝えるプログラミングを使うだけで、そのすべてを満たすわけではないよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リアクティブプログラミング」って出てきたら「データの変化を依存先の処理へ伝える考え方」と思えばだいたいOK!
📖 おまけ:英語の意味
「Reactive Programming」 = 反応型プログラミング
💬 Reactive は「反応する」という意味で、データの変化に反応して処理が動くイメージだよ

参考資料

← 用語集にもどる