サーバーサイドショークロック:放送におけるゼロドリフトの重要性
クライアント側の時計はドリフトします。サーバー側の時計はドリフトしません。この違いがショーの信頼性を決定づけます。
· 技術解説 · 8 min read
すべての放送エンジニアには、マスターコントロールルームの時計にまつわる体験談があります。私の体験は、3日間の企業サミットで起きました。クライアントは3.6メートルのLEDウォールをレンタルし、聴衆とプロダクションチームの両方に見えるショークロックの表示を要求しました。2日目の午後までに、LEDウォール上の時計はプロデューサーのラップトップ上の時計より14秒進んでいました。あるセグメントが「早く」終了し、スピーカーが何も話すことなくステージに立ったままになるまで、誰もこのズレに気づきませんでした。
ショーコーラーが時間管理の異常に気づいた時、問題はアーキテクチャにありました。そのタイマーソフトウェアは、各デバイスのローカルJavaScript Dateオブジェクトを使用してクライアント側で時間を計算していたのです。すべてのブラウザタブ、接続されたスクリーン、コントローラーを実行するスマートフォンが、それぞれ独立した時計を維持していました。時間の経過とともに、それらの時計はドリフトしていきます。なぜなら、まったく同じタイミングを保つデバイスは二つとして存在しないからです。民生用ハードウェアの水晶発振子は約20ppmの精度で、これは1日あたり約1.7秒のドリフトに相当します。接続デバイスの数を掛け合わせると、すべてのスクリーンがわずかに異なるストーリーを語るショーが出来上がります。
Timers Studioのショークロックは、時間をサーバー上で計算することでこの問題を解決しています。画面に表示される時計の値はブラウザが生成したものではありません。サーバーが計算し、トランスポートコマンドと同じWebSocketチャネルを通じてすべての接続デバイスにブロードキャストされます。ブラウザはタイムキーパーではなく、あくまで表示面です。つまり、2台でも50台でも、すべてのスクリーンが同じ時刻を表示します。すべてが同一のソースから同一の時刻を受信しているからです。
ショークロックは3つの重要な情報を表示します。第一に、現在時刻です。放送のプロフェッショナルがすぐに認識できるウォートンスタイルのアナログとデジタルの組み合わせ形式で表示されます。第二に、Cue Endsです。これは現在のタイマーセグメントがゼロに達する予測時刻です。第三に、Show Endsです。残りのセグメント時間に基づいてランダウン全体が完了する予測時刻です。セグメントが予定より長くなったり短くなったりすると、これらの予測はリアルタイムで更新されます。
オーバータイムトラッキングこそ、ショークロックが真に不可欠になる場面です。セグメントが割り当てられた時間を超えると、タイマー表示は赤に切り替わり、プラス記号付きで上向きにカウントを開始します。Cue EndsとShow Endsの予測は即座に調整され、各タイムスタンプの下に赤字で累積超過時間が表示されます。プロデューサーがショークロックをちらりと見るだけで、現在のセグメントが3分オーバーしていること、そしてショー全体が47秒遅れて終了する見込みであることが一目でわかります。暗算なしにこの情報が得られることこそが、プロアクティブに対応できるプロデューサーと、問題が手遅れになってから気づくプロデューサーの違いを生みます。
タリーライトのようなステータスインジケーターは追加のコンテキストを提供します。ショーが許容範囲内で進行している場合は緑色の「ON TIME」バッジが表示されます。タイマーがアクティブでない場合は「IDLE」が表示されます。タイマーが現在実行中でセッションがライブの場合は、アニメーション付きの緑色ドットを伴う「ON AIR」インジケーターが確認を提供します。これらは小さな視覚的ディテールですが、注意が複数のシステムに分散するコントロールルームでは、部屋の反対側からでも読み取れる色分けされたステータスバッジには実際の運用価値があります。
これをクライアントサイドのショークロックと比較してみましょう。ほとんどの競合製品ではこれが標準です。クライアント側の時計はすべてをローカルで計算します。再生を押すとJavaScriptタイマーを開始し、フレームごとにインクリメントします。最初の数分間は完璧に動作します。しかし、JavaScriptタイマーは精密な計測機器ではありません。ガベージコレクションによる遅延、ブラウザタブがバックグラウンドになった際のスロットリング、システムスリープイベントによる歪みが発生し得ます。4時間のカンファレンスの一日を通じて、蓄積されたドリフトは運用上無視できないレベルに達します。
一部のツールはサーバータイムスタンプとの定期的な再同期によってドリフトを軽減しようとします。このアプローチは問題を軽減しますが、排除はしません。同期間隔の間、時計はまだローカルでドリフトしています。そして同期そのものが目に見えるジャンプを引き起こすことがあります。時計が補正時にほんの一瞬前後にスキップするのは、放送ディスプレイではプロフェッショナルとは言えません。
サーバーサイドのアプローチは両方の問題を回避します。ローカルの計算がないため、ローカルのドリフトもありません。値が到着した瞬間から権威的であるため、目に見えるジャンプもありません。ブラウザはサーバーが送信する内容をレンダリングし、サーバーがすべての接続デバイスにとっての単一の信頼できるソースとなります。
複数時間にわたるプロダクションでは、この違いは致命的に重要になります。朝から夕方まで8時間のプログラミングを持つカンファレンスでは、どのクライアントサイドの時計でも意味のあるドリフトが蓄積されます。ドリフトした時計に依存するプロダクションチームは、不正確な情報に基づいてスケジューリングの判断を下すことになります。スピーカーには実際より多いまたは少ない残り時間が伝えられます。まとめのキューは間違ったタイミングで発火します。これらの失敗は個別には致命的ではありませんが、合わさると全体がわずかに信頼性に欠け、わずかに不正確で、わずかにアマチュアらしく感じられるプロダクションを生み出します。
タイミングが重要なショーを運営しているなら(この記事を読んでいるなら、ほぼ確実にそうでしょう)、時計のアーキテクチャは技術的な細部ではなく、プロダクション上の判断です。[スタジオを開く] スタジオを開き、複数のデバイスで数時間にわたってショークロックを観察することで、ご自身で確認できます。数字は一致しています。なぜなら、計算は一箇所で行われ、多数の場所で表示されるからです。
放送業界は数十年前に、マスタークロックが重要であることを学びました。すべてのプロフェッショナル施設は、信号チェーン内のすべてのデバイスに時刻を配信する単一の基準クロックで稼働しています。Timers Studioは同じ原則をウェブベースのプロダクションツールに適用しています。サーバーは一つ、時計は一つ、ドリフトはゼロです。[今すぐ体験する] [コンソールを見る]