LIFO と FIFO 戦略 lifo-fifo-strategies
同時実行性監視を実装する場合、使用制限に達した際の競合を処理する LIFO (Last In, First Out) または FIFO (First In, First Out) の 2 つの基本戦略を選択する必要があります。 これらの戦略を理解することは、適切なユーザーエクスペリエンスを設計し、適切なエラー処理を実装する上で重要です。
同時実行性の監視セッション戦略 concurrency-monitoring-session-strategies
LIFO と FIFO はどちらもコンピューターサイエンスの スタック理論 に基づいています。
LIFO (ラストイン、ファーストアウト) – スタック動作
同時実行の監視で、次の操作を行います。
- 古いセッションは新しいセッションから保護されます
- 制限に達すると、新規セッションがブロックされる
- ユーザーが新しいセッションを開始するには、既存のセッションを手動で終了する必要があります
FIFO (First In, First Out):キューの動作
同時実行の監視で、次の操作を行います。
- 制限に達すると、新規セッションは古いセッションを終了できる
- 最新のストリームは、古いストリームを「開始」できます
- ユーザーは、視聴中のコンテンツを置き換えることで、新しいコンテンツを開始できます
LIFO 戦略 lifo-strategy
LIFO の仕組み
LIFO モードで、ユーザーが新しいストリームを開始しようとして同時制限に達したとき:
- 新しいセッションはブロックされ 409 競合応答が返ります
- 既存のセッションはそのままです
- ユーザーが手動で終了する必要があります 続行するには既存のセッションが必要です
LIFO フロー図
図:LIFO (ラストイン、ファーストアウト)戦略フロー – 制限に達すると、新しいセッションがブロックされ、既存のセッションを手動で終了する必要があります。
LIFO を使用すべき状況
LIFO を使用する場合:
- ユーザーは、現在のコンテンツが中断から保護されることを期待している
- コンテンツの切り替えに関する 意識的な決定を促す必要がある
- 競合を解決するため、アプリケーションの UI の複雑さは制限されています
- ユーザーは通常、コンテンツを長時間視聴します
例:
- ユーザーが長編コンテンツを視聴する映画ストリーミングサービス
- 中断が中断を伴う教育用コンテンツプラットフォーム
- 複雑なセッション選択を処理できない、シンプルな UI を持つアプリケーション
FIFO 戦略 fifo-strategy
FIFO の仕組み
FIFO モードでは、ユーザーが新しいストリームを開始しようとして同時制限に達した場合、次のようになります。
- 新しいセッションが許可されました を開始します
- 最も古いセッションが自動的に終了される (またはユーザーが終了を選択する)
- ユーザーが新しいコンテンツを続行する
FIFO フロー図
図:FIFO (First In, First Out)戦略フロー – 新規セッションは、ユーザー選択で既存のセッションを終了することで開始できます。
FIFO を使用する場合
FIFO を使用する場合:
- ユーザーはコンテンツを頻繁に切り替えます (チャネルサーフィン、閲覧)
- 過去のアクティビティよりも ユーザーの現在のインテント を優先させる
- 競合が発生した場合 UI でセッションの選択を処理できます
- 制限に達しても、ユーザーは新しいコンテンツを開始できると期待される
例:
- ユーザーが頻繁にチャンネルを切り替えるライブ TV アプリケーション
- ユーザーがコンテンツを参照およびプレビューするコンテンツ検出アプリ
- ユーザーが即座の対応を期待するモバイルアプリケーション
FIFO ユーザーエクスペリエンス
FIFO モードで競合が発生した場合:
- すべてのアクティブなセッションで ダイアログを表示 します
- ユーザーが選択できるようにする 終了するセッション
- セッションの詳細を入力 (デバイス、コンテンツ、期間)
- 続行する前に アクションを確認 してください
- 終了後 新しいセッションを開始
主な違いの概要 key-differences-summary
ベストプラクティス best-practices
LIFO 実装の場合
- 明確なエラーメッセージを表示 制限の説明
- セッション管理への 容易なアクセスの提供
- ユーザー参照用に アクティブセッションを表示
- アプリの設定の セッション終了の実装
- 競合が発生する前に、使用状況指標の表示を検討 ます
(FIFO 実装の場合)
- 競合が発生した場合は常にセッション選択 UI を提供する
- 意味のあるセッションの詳細を表示 (デバイス、コンテンツ、期間)
- 誤って終了してしまうのを防ぐため 確認ダイアログの実装
- エッジケースの扱い 終了に失敗した場合
- 状況に関する 明確なフィードバックの提供
戦略の選択 choosing-your-strategy
LIFO と FIFO のどちらかを選択する際は、次の要因を考慮してください。
- ユーザー行動パターン - ユーザーは通常、コンテンツとどのようにやり取りしますか?
- コンテンツタイプ - ライブテレビと映画と教育コンテンツの比較
- UI の複雑さ - アプリで高度なセッション選択を処理できますか?
- ユーザーの期待 - コンテンツを簡単に切り替えられると期待していますか?
- ビジネス要件 – 特定の種類の表示を保護する必要がありますか?