社内放送を自動化する — 余ったパソコンとPowerShellで作るスケジュール放送システム
背景
中小企業で、始業・終業のチャイムやラジオ体操を社内に放送したい。
しかし、専用の放送設備を導入する予算はない。
余っているWindowsパソコンがあれば、そのパソコンにスピーカーを接続して、スケジュールに従って音声ファイルを再生することで、簡易的な社内放送が実現できる。
この記事では、PowerShellで作成したスケジュール放送アプリケーションと、正確な時刻で放送するための時刻同期設定、パソコンの自動起動設定をまとめて紹介する。
構成の全体像
社内放送システムの構成は以下のとおり。
- Windowsパソコン1台(Windows 10 / 11)
- パソコンのイヤフォンジャックからスピーカーへ接続(アンプ付きスピーカー推奨)
- PowerShellスクリプト(broadcast.ps1)がスケジュールに従って音声ファイルを再生
- タスクスケジューラでNTPサーバーから定期的に時刻を同期
- パソコン起動時にアプリケーションが自動起動
追加のソフトウェアのインストールは不要で、Windows標準機能のみで動作する。
放送アプリケーションの機能
主な機能
- スケジュールに基づく自動再生(平日のみ / 常時の切替可能)
- 再生失敗時の自動リトライ(最大3回)
- 再生60秒前のウォームアップ(オーディオデバイスの省電力復帰対策)
- 手動での再生・停止操作
- スケジュールの追加・編集・削除(GUI操作)
- 再生状態のリアルタイム表示(待機 → 準備中 → 再生中 → 完了)
- 動作ログの記録(画面表示+日付別ログファイル)
- 土日放送の切替(チェックボックス1つで切替)
対応音声形式
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
使い方
- start.vbs をダブルクリックしてGUIを起動する
- 初回はデフォルトのスケジュール(始業・昼休み・午後開始・終業)が登録されている
- 「編集」ボタンで時刻・内容・音声ファイルを変更する
- 音声ファイルは「参照」ボタンからWAVまたはMP3ファイルを選択する
- スケジュール時刻になると自動的に音声が再生される
手動で即座に再生したい場合は、一覧からスケジュールを選択して「▶ 再生」ボタンをクリックする。
「ファイル指定」ボタンで、スケジュール外の音声ファイルを選んで再生することもできる。
再生が飛ぶ問題への対策
スケジュール再生アプリを長期間運用していると、設定時刻になっても音が出ないことが稀に発生する。
アプリケーション上はエラーが表示されず、次の時刻には正常に再生されるという症状になる。
原因:オーディオデバイスの省電力
Windowsは一定時間音声出力がないと、オーディオデバイスを省電力状態にする。
この状態からの復帰が間に合わず、再生コマンドが「空振り」することがある。
アプリ側はエラーにならず、次回は正常に動くという挙動になる。
対策1:ウォームアップ機能(本アプリに内蔵)
本アプリケーションには、各スケジュールの60秒前に無音ファイルを再生してオーディオデバイスを起こす「ウォームアップ機能」が内蔵されている。
無音WAVファイルはアプリ起動時に自動生成されるため、手動で用意する必要はない。
対策2:自動リトライ(本アプリに内蔵)
再生が開始されたかを再生状態(playState)で確認し、開始されなかった場合は最大3回までリトライする。
オーディオデバイスの復帰に数秒かかるケースを、このリトライで吸収する。
対策3:省電力設定の見直し
アプリの対策と併せて、Windows側の省電力設定も見直すとより安定する。
- 「デバイスマネージャー」→ 使用中のオーディオデバイス → 「電源の管理」タブ → 「電力の節約のために、コンピューターでこのデバイスの電源をオフにできるようにする」のチェックを外す
- 「設定 → システム → 電源」→ スリープを「なし」に設定
- 「詳細な電源設定の変更」→「USB設定 → USBのセレクティブサスペンド」を「無効」に設定(USB接続のオーディオデバイスの場合)
対策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 を使用する。
- Autologonをダウンロードして展開する
- Autologon64.exeを管理者として実行する
- ユーザー名、ドメイン(またはコンピューター名)、パスワードを入力して「Enable」をクリックする
パスワードはレジストリに暗号化されて保存されるため、レジストリを直接編集する方法よりも安全である。
解除する場合は同じツールで「Disable」をクリックする。
自動ログオンのセキュリティ上の注意
自動ログオンを設定すると、パソコンの電源を入れるだけで誰でもデスクトップにアクセスできる状態になる。
放送用パソコンは業務に関係するデータを保存せず、物理的にアクセスが制限された場所に設置することが望ましい。
社内のセキュリティポリシーで自動ログオンが許可されているかを事前に確認すること。
タスクスケジューラで放送アプリを自動起動
ログオン後に放送アプリを自動起動するタスクを作成する。
| 設定項目 | 値 |
|---|---|
| タスク名 | 社内放送システム |
| 全般 → ユーザーがログオンしているときのみ実行する | 選択 |
| 全般 → 最上位の特権で実行する | 不要(チェックなし) |
| トリガー → ログオン時 | 対象ユーザーを指定 |
| トリガー → 遅延時間 | 1分間 |
| 操作 → プログラム | wscript.exe |
| 操作 → 引数 | "C:\(保存先)\start.vbs" |
| 操作 → 開始 | start.vbsがあるフォルダのパス |
| 条件 → AC電源のみ | チェックを外す |
| 設定 → タスクを停止するまでの時間 | チェックを外す |
| 設定 → タスクが既に実行中の場合 | 新しいインスタンスを開始しない |
起動後の動作の流れ
パソコンの電源を入れてからの動作は以下の順序で自動的に進む。
- パソコン起動 → Windows起動
- 自動ログオン → デスクトップ表示
- 30秒後 → タスクスケジューラで時刻同期(
w32tm /resync)が実行される - 1分後 → タスクスケジューラで放送アプリが起動する
- 放送アプリが起動 → スケジュールに従って自動放送が開始される
停電後の復旧やWindows Update後の再起動でも、人が操作することなく放送が再開される。
放送用パソコンの選び方
社内放送に使うパソコンは、高性能である必要はまったくない。
スケジュールに従って音声ファイルを再生するだけなので、10年前のパソコンでも十分に動作する。
以下の条件を満たしていれば、社内で使われなくなったパソコンを再利用できる。
- Windows 10 または Windows 11 が動作すること
- イヤフォンジャック(またはUSBオーディオ出力)があること
- インターネットに接続できること(時刻同期に必要)
- 24時間稼働に耐えられること(常時起動が望ましい)
ノートパソコンを使う場合は、バッテリーが短時間の停電対策として機能するという利点がある。
液晶が故障していてもリモートデスクトップで操作できるため、画面が映らないパソコンでも問題なく使える。
まとめ
専用の放送設備がなくても、余ったWindowsパソコンとPowerShellスクリプトで社内放送を自動化できる。
追加のソフトウェアをインストールする必要はなく、Windows標準機能のみで動作する。
再生が飛ぶ問題は、ウォームアップ機能と自動リトライで対策済みである。
時刻のずれは、タスクスケジューラによる30分ごとのNTP同期で解消できる。
パソコンの起動から放送開始までを完全に自動化すれば、停電や再起動があっても人の手を介さずに放送が再開される。