Netflixの世界で考えるRxJSの基礎
まずはNetflixの世界観でRxJSの主要な登場人物を紹介します。
1. Observable = Netflixサービス
Observableは、動画(データ)を提供するNetflixそのものです。
特徴:
- ユーザー(視聴者)が「サブスクライブ」しない限り、動画は配信されません。
- 動画は一つずつ順番に配信されます(リアルタイム感)。
Netflixが動画を「これは面白いからどうぞ!」と提供する仕組みが、Observableにあたります。
2. Observer = 視聴者
Observerは、配信された動画を楽しむ視聴者そのものです。
特徴:
- 動画を受け取って視聴(next)。
- エラーが発生すれば文句を言う(error)。
- 「今日はもう見終わった!」と満足する(complete)。
3. Subscriber = Netflix愛好会メンバー
Subscriberは、Netflixサービスと視聴者をつなぐ架け橋。
特徴:
- 「サブスクライブ」することで、動画配信がスタート。
- 「退会」すれば、もう配信されません(unsubscribe)。
サンプルコード
以下の例で、Netflixのサービスと視聴者の関係をイメージしてください。
import { Observable } from 'rxjs';
// Observable(Netflixサービスの作成)
const netflixService = new Observable<string>(subscriber => {
subscriber.next('🎬 映画: アクション大作'); // 新着動画
subscriber.next('📺 ドラマ: ネットフリックスオリジナル');
subscriber.complete(); // 動画配信終了
});
// Observer(視聴者の定義)
const viewer = {
next: (video: string) => console.log(`視聴中: ${video}`), // 動画を再生
error: (err: any) => console.error(`エラー: ${err}`), // 配信エラー
complete: () => console.log('視聴が完了しました!') // 視聴完了
};
// Subscriber(Netflix愛好会メンバー)
const subscription = netflixService.subscribe(viewer);
// 視聴を解除する場合
// subscription.unsubscribe();
出力
視聴中: 🎬 映画: アクション大作
視聴中: 📺 ドラマ: ネットフリックスオリジナル
視聴が完了しました!
退会(unsubscribe)で解約する
もちろん、退会も可能です。以下のコードで、いつでもNetflix愛好会から抜けることができます。
subscription.unsubscribe();
console.log('退会しました。もう動画は配信されません!');