リアクティブプログラミング
データの変化を自動的に伝播させ、非同期データストリームを宣言的に処理するパラダイム
リアクティブプログラミングとは
リアクティブプログラミングは、データの変化を自動的に伝播させ、非同期データストリームを宣言的に処理するパラダイムである。RxJS、React の状態管理、Kotlin Flow が代表例。
命令的 vs リアクティブ
命令的と リアクティブ のコード例を比較する。
// 命令的: 手動でデータの変化を追跡
let a = 1;
let b = 2;
let c = a + b; // 3
a = 10;
// c は 3 のまま (自動更新されない)
// リアクティブ: データの変化が自動伝播
// React の例
const [a, setA] = useState(1);
const [b, setB] = useState(2);
const c = a + b; // a や b が変わると c も自動更新
RxJS の Observable
RxJS の Observable のコード例を示す。
import { fromEvent, debounceTime, map, switchMap } from 'rxjs';
// 検索ボックスの入力をリアクティブに処理
fromEvent(searchInput, 'input').pipe(
debounceTime(300), // 300ms 待つ
map(e => (e.target as HTMLInputElement).value), // 値を取得
switchMap(query => fetch(`/api/search?q=${query}`)), // API 呼び出し
).subscribe(results => renderResults(results));
// 入力 → デバウンス → API → 表示 が宣言的に記述
React のリアクティブ性
React のリアクティブ性のコード例を示す。
function PriceCalculator() {
const [quantity, setQuantity] = useState(1);
const [unitPrice] = useState(1000);
// quantity が変わると自動的に再計算・再レンダリング
const total = quantity * unitPrice;
const tax = total * 0.1;
return (
<div>
<input type="number" value={quantity} onChange={e => setQuantity(+e.target.value)} />
<p>合計: {total} 円 (税込: {total + tax} 円)</p>
</div>
);
}
リアクティブストリームの操作
リアクティブストリームの操作を以下にまとめる。
| 操作 | 説明 |
|---|---|
| map | 値を変換 |
| filter | 条件に合う値だけ通す |
| debounceTime | 一定時間待ってから最後の値を通す |
| switchMap | 新しいストリームに切り替え |
| merge | 複数のストリームを合流 |
| retry | エラー時にリトライ |
リアクティブ vs コールバック vs async/await
リアクティブとコールバック vs async/await の違いを以下にまとめる。
| 方式 | 適用 |
|---|---|
| コールバック | 単発のイベント |
| async/await | 1 回の非同期操作 |
| リアクティブ (Observable) | 連続するデータストリーム |
リアクティブプログラミングの関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
オブザーバーパターン
オブジェクトの状態変化を複数の依存オブジェクトに自動通知するデザインパターン
ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
非同期プログラミング
I/O 待ちの間に他の処理を進め、システムのスループットを向上させるプログラミング手法
カナリアリリース
新バージョンを少数のユーザーに先行公開し、問題がないことを確認してから全体に展開するデプロイ手法
レトロスペクティブとは - スプリント振り返りの進め方とファシリテーション
レトロスペクティブはスプリント終了後にチームで改善点を洗い出すアジャイルの儀式。KPT/Start-Stop-Continue 等のフォーマットと効果的な進行方法を解説
Kinesis
AWS のリアルタイムデータストリーミングサービスで、大量のデータを収集・処理・分析する
関連する記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
年収を上げた 1 冊 - エンジニア 50 人に聞いたキャリアを変えた本
エンジニアのキャリアに転機をもたらした本にはどんな共通点があるのか。50 人の回答から見えてきた、キャリアを変える本の 3 つの特徴を分析します。
技術書がエンジニアのキャリアを変える - 読書習慣と年収の関係
技術書の読書習慣がエンジニアのキャリアアップに影響する 3 つの経路と、ジュニア・ミドル・シニア各段階に応じた読書戦略を具体的に解説します。