プレイヤーの目的
与えられた入力ストリームから、関数パネルを順番に接続して正解ストリームを作る。再生が1周して、値・時刻・完了イベントが一致すればステージクリア。
ReactiveXのストリーム変換を、タイムライン上で組み立てて検証するパイプラインプログラミングパズル。(旧仮題: Rx Pipeline Puzzle)
与えられた入力ストリームから、関数パネルを順番に接続して正解ストリームを作る。再生が1周して、値・時刻・完了イベントが一致すればステージクリア。
コードを書く代わりに、時間軸に流れるイベントを見ながら関数の効果を試す。失敗が即座に出力差分として見えるため、論理パズルとして試行錯誤できる。
ReactiveX完全互換よりも、パズルとしての見通しを優先する。最初は単一ストリーム、固定タイムライン、少数の関数パーツで始める。
| 要素 | 初期仕様 |
|---|---|
| イベント | next(value) と complete を扱う。エラーは初期プロトタイプでは後回し。 |
| 時間 | 連続時間ではなく、タイムライン上の離散ステップとして扱う。表示上は横方向の位置で示す。 |
| 関数パネル | map, filter, take, skip から開始する。各パネルは入力例と出力例を持つ。 |
| 正解判定 | 現在出力と正解出力のイベント列を比較する。値、順序、時刻、完了位置が一致したら正解。 |
| 操作 | 再生、一時停止、リセット、速度変更を用意する。パイプライン変更時は現在出力を即時再計算する。 |
最初の実装に向く案。情報が上下に分かれており、初心者が入力、変換、出力、正解の関係を追いやすい。
プレイ感が良い候補。正解との差分が1本のレーンに集約されるため、失敗理由が見えやすい。実装では判定ロジックと表示ルールを丁寧に分けたい。
将来の方向性。最初から作るより、単一ストリームの手触りを固めた後に拡張した方が安全。
map各イベントの値を変換する。例: x * 2, x + 1, String(x)
filter条件に合うイベントだけを通す。例: x >= 3, x % 2 === 0
take先頭から指定個数のイベントだけを通す。完了位置の理解にも使える。
skip先頭から指定個数のイベントを捨てる。take と組み合わせると範囲選択の問題を作りやすい。
最初のプロトタイプは案Aを基本にし、出力と正解の部分だけ案Bのオーバーレイ表示を取り込む構成がよい。入力とパイプラインは分かりやすく分け、失敗理由は1本の比較レーンで即座に見せる。