Solo IT Hub

社内放送を自動化する — 余ったパソコンとPowerShellで作るスケジュール放送システム

社内放送システムの構成:Windowsパソコン上のPowerShellスクリプトが、タスクスケジューラによる時刻同期と自動起動のもと、スケジュールに従って音声をスピーカーから放送する。
社内放送システムの構成

背景

中小企業で、始業・終業のチャイムやラジオ体操を社内に放送したい。
しかし、専用の放送設備を導入する予算はない。

余っているWindowsパソコンがあれば、そのパソコンにスピーカーを接続して、スケジュールに従って音声ファイルを再生することで、簡易的な社内放送が実現できる。

この記事では、PowerShellで作成したスケジュール放送アプリケーションと、正確な時刻で放送するための時刻同期設定、パソコンの自動起動設定をまとめて紹介する。

構成の全体像

社内放送システムの構成は以下のとおり。

追加のソフトウェアのインストールは不要で、Windows標準機能のみで動作する。

放送アプリケーションの機能

主な機能

対応音声形式

WAV、MP3に対応している。
Windows Media Playerのコンポーネント(WMPlayer.OCX)を使用しているため、Windows Media Playerで再生できる形式であれば対応している。

スケジュールの保存

スケジュールはGUI上で追加・編集・削除でき、変更内容は自動的にJSONファイル(schedule.json)に保存される。
パソコンを再起動しても設定は維持される。

ダウンロード

Broadcast Scheduler v1.0

2ファイルを同じフォルダに保存し、start.vbs をダブルクリックで起動。
音声ファイル(WAV / MP3)は別途用意してください。

トラブル時にエラーメッセージを確認したい場合は、以下の内容で start.bat を作成し、そこから起動する。

@echo off
echo Starting Broadcast System...
powershell -ExecutionPolicy Bypass -NoExit -File "%~dp0broadcast.ps1"
pause

初回起動時の注意

初回起動時にWindowsの実行ポリシーにより「スクリプトの実行が無効」と表示される場合がある。
その場合は、PowerShellを管理者として開き、以下を一度だけ実行する。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

使い方

  1. start.vbs をダブルクリックしてGUIを起動する
  2. 初回はデフォルトのスケジュール(始業・昼休み・午後開始・終業)が登録されている
  3. 「編集」ボタンで時刻・内容・音声ファイルを変更する
  4. 音声ファイルは「参照」ボタンからWAVまたはMP3ファイルを選択する
  5. スケジュール時刻になると自動的に音声が再生される

手動で即座に再生したい場合は、一覧からスケジュールを選択して「▶ 再生」ボタンをクリックする。
「ファイル指定」ボタンで、スケジュール外の音声ファイルを選んで再生することもできる。

再生が飛ぶ問題への対策

スケジュール再生アプリを長期間運用していると、設定時刻になっても音が出ないことが稀に発生する。
アプリケーション上はエラーが表示されず、次の時刻には正常に再生されるという症状になる。

原因:オーディオデバイスの省電力

Windowsは一定時間音声出力がないと、オーディオデバイスを省電力状態にする。
この状態からの復帰が間に合わず、再生コマンドが「空振り」することがある。
アプリ側はエラーにならず、次回は正常に動くという挙動になる。

対策1:ウォームアップ機能(本アプリに内蔵)

本アプリケーションには、各スケジュールの60秒前に無音ファイルを再生してオーディオデバイスを起こす「ウォームアップ機能」が内蔵されている。
無音WAVファイルはアプリ起動時に自動生成されるため、手動で用意する必要はない。

対策2:自動リトライ(本アプリに内蔵)

再生が開始されたかを再生状態(playState)で確認し、開始されなかった場合は最大3回までリトライする。
オーディオデバイスの復帰に数秒かかるケースを、このリトライで吸収する。

対策3:省電力設定の見直し

アプリの対策と併せて、Windows側の省電力設定も見直すとより安定する。

対策4:不要な再生デバイスの無効化

パソコンに複数の再生デバイス(HDMI出力、内蔵スピーカーなど)がある場合、使わないデバイスを無効にしておく。
既定の再生デバイスが切り替わることで音が出なくなるケースを防げる。

時刻同期の設定

社内放送のパソコンがインターネットに接続されていても、Windows標準の時刻同期はデフォルトで1週間に1回程度しか行われない。
放送のタイミングが少しずつずれていくのを防ぐために、タスクスケジューラで30分ごとの時刻同期を設定する。

NTPサーバーの設定

管理者権限のコマンドプロンプトで以下を実行する。

w32tm /config /manualpeerlist:"ntp.nict.jp" /syncfromflags:manual /update
net stop w32time
net start w32time
w32tm /resync

ntp.nict.jp は情報通信研究機構(NICT)が運用する日本標準時のNTPサーバーで、国内で最も正確な時刻を配信している。

タスクスケジューラで定期同期を設定

タスクスケジューラで以下のタスクを作成する。
「タスクの作成」(「基本タスクの作成」ではない)から作成すること。

設定項目
タスク名時刻同期
全般 → 最上位の特権で実行するチェックあり
全般 → ユーザーがログオンしているかどうかにかかわらず実行する選択
トリガー → スケジュールに従う毎日 08:00
トリガー → 繰り返し間隔30分間
トリガー → 継続時間無期限
操作 → プログラムw32tm
操作 → 引数/resync /force
条件 → AC電源のみチェックを外す
設定 → タスクを停止するまでの時間チェックを外す

これにより、毎日8:00から30分ごとに ntp.nict.jp と同期され、時刻のずれは常に1秒以内に維持される。

桜時計などのNTPクライアントは必要か

桜時計やNetTimeなどのフリーのNTPクライアントを使う方法もある。
しかし、これらのアプリケーションは長時間稼働中にWindowsによって終了されたり、静かにクラッシュすることがある。
放送用パソコンのように「置いたら触らない」運用では、アプリケーションの異常終了に気づけないリスクがある。

タスクスケジューラによる w32tm /resync は、Windowsの標準機能であるため異常終了することがなく、放送用パソコンの運用に最も適している。

自動起動の設定

放送用パソコンは、電源を入れたら人の操作なしに放送が開始される状態が理想的である。
以下の設定により、パソコンの起動から放送開始までを完全に自動化できる。

自動ログオンの設定

パスワード入力をスキップして自動的にデスクトップを表示するには、Microsoft公式ツールの Autologon を使用する。

  1. Autologonをダウンロードして展開する
  2. Autologon64.exeを管理者として実行する
  3. ユーザー名、ドメイン(またはコンピューター名)、パスワードを入力して「Enable」をクリックする

パスワードはレジストリに暗号化されて保存されるため、レジストリを直接編集する方法よりも安全である。
解除する場合は同じツールで「Disable」をクリックする。

自動ログオンのセキュリティ上の注意

自動ログオンを設定すると、パソコンの電源を入れるだけで誰でもデスクトップにアクセスできる状態になる。
放送用パソコンは業務に関係するデータを保存せず、物理的にアクセスが制限された場所に設置することが望ましい。
社内のセキュリティポリシーで自動ログオンが許可されているかを事前に確認すること。

タスクスケジューラで放送アプリを自動起動

ログオン後に放送アプリを自動起動するタスクを作成する。

設定項目
タスク名社内放送システム
全般 → ユーザーがログオンしているときのみ実行する選択
全般 → 最上位の特権で実行する不要(チェックなし)
トリガー → ログオン時対象ユーザーを指定
トリガー → 遅延時間1分間
操作 → プログラムwscript.exe
操作 → 引数"C:\(保存先)\start.vbs"
操作 → 開始start.vbsがあるフォルダのパス
条件 → AC電源のみチェックを外す
設定 → タスクを停止するまでの時間チェックを外す
設定 → タスクが既に実行中の場合新しいインスタンスを開始しない

起動後の動作の流れ

パソコンの電源を入れてからの動作は以下の順序で自動的に進む。

  1. パソコン起動 → Windows起動
  2. 自動ログオン → デスクトップ表示
  3. 30秒後 → タスクスケジューラで時刻同期(w32tm /resync)が実行される
  4. 1分後 → タスクスケジューラで放送アプリが起動する
  5. 放送アプリが起動 → スケジュールに従って自動放送が開始される

停電後の復旧やWindows Update後の再起動でも、人が操作することなく放送が再開される。

放送用パソコンの選び方

社内放送に使うパソコンは、高性能である必要はまったくない。
スケジュールに従って音声ファイルを再生するだけなので、10年前のパソコンでも十分に動作する。
以下の条件を満たしていれば、社内で使われなくなったパソコンを再利用できる。

ノートパソコンを使う場合は、バッテリーが短時間の停電対策として機能するという利点がある。
液晶が故障していてもリモートデスクトップで操作できるため、画面が映らないパソコンでも問題なく使える。

まとめ

専用の放送設備がなくても、余ったWindowsパソコンとPowerShellスクリプトで社内放送を自動化できる。
追加のソフトウェアをインストールする必要はなく、Windows標準機能のみで動作する。

再生が飛ぶ問題は、ウォームアップ機能と自動リトライで対策済みである。
時刻のずれは、タスクスケジューラによる30分ごとのNTP同期で解消できる。
パソコンの起動から放送開始までを完全に自動化すれば、停電や再起動があっても人の手を介さずに放送が再開される。