macOSで平日の定時にチャイムを鳴らす方法
macOS Sequoia 15.0 以降への注記 (2024/9/20)
macOS Sequoia 15.0以降ではcronの動作が変わったため、以下の方法では上手く動作しません。launchctl
を使用した方法を別途執筆しました。
macOS Sequoia 15.0以降で平日の定時にチャイムを鳴らす方法
macOSの"時計"アプリだとアラームが鳴り止まない
みなさん定時に何か音を鳴らしたい場合にどうしてますか?
私はmacOSの"時計"アプリ(Clock.app)を使っていたのですが、止めるまで音が鳴り止まないので家族にたいへん不評でした。
月〜金の定時に1回だけ音を再生するアプリを自作しようかとも考えたのですが、macOSはUnix互換OSなのでcron
が使えるじゃん、と気づいたので以下の方法をやってみました。
チャイム音を自作する
フリー素材を使っても良いのですが気に入った音がないのでGarageBandで自作しました。
完成したら[共有]-[曲を"ミュージック"に...]
で"ミュージック"アプリ(Music.app)に共有します。
アーティスト名やアルバム名も入力しておきます。これは共有後の楽曲ファイルのパス名として使用されます。
Music.app側で再生できることを確認したら、曲名の右端の[…]
をクリックします。
ポップアップメニューから[情報を見る]
を選択します。曲の情報ダイアログの[ファイル]
タブで楽曲ファイルのフルパスを確認しておきます。
この曲のフルパスは以下であることが確認できました。
/Users/yasuyuki/Music/iTunes/iTunes\ Music/Music/Yasuyuki\ ENDO/School\ Sounds/Chime.m4a
コマンドラインで音を鳴らす
macOSにはafplay
というプログラムが最初から存在するのでこれで音を鳴らしてみましょう。
/usr/bin/afplay /Users/yasuyuki/Music/iTunes/iTunes\ Music/Music/Yasuyuki\ ENDO/School\ Sounds/Chime.m4a
これを実行すると1回だけ再生して音が止まることが確認できました。これをcron
で実行すれば良さそうです。
crontab
の確認と設定
まずログインユーザーの現在のcrontab
を確認しておきます。
crontab -l
何も表示されなければ現在のcrontab
は空です。何か表示されたらファイルにリダイレクトして保存しておきましょう。ここではホームディレクトリにetc
というディレクトリを作って~/etc/crontab
というファイルに保存することにします。
crontab -l > ~/etc/crontab
crontabのフォーマットは以下の仕様になっています。
分 時 日 月 曜日 コマンド
月曜から金曜の8:45と13:00と17:30にチャイムを鳴らしたい場合のcrontab
は以下の通りです。
45 8 * * 1,2,3,4,5 /usr/bin/afplay /Users/yasuyuki/Music/iTunes/iTunes\ Music/Music/Yasuyuki\ ENDO/School\ Sounds/Chime.m4a
0 13 * * 1,2,3,4,5 /usr/bin/afplay /Users/yasuyuki/Music/iTunes/iTunes\ Music/Music/Yasuyuki\ ENDO/School\ Sounds/Chime.m4a
30 17 * * 1,2,3,4,5 /usr/bin/afplay /Users/yasuyuki/Music/iTunes/iTunes\ Music/Music/Yasuyuki\ ENDO/School\ Sounds/Chime.m4a
ログインユーザーのcrontab
にすでに何か設定がある場合は~/etc/crontab
ファイルに上記を追加し、何も設定がない場合には上記内容を~/etc/crontab
ファイルとして保存します。
ではcrontab
コマンドでこの設定を有効化しましょう。
crontab < ~/etc/crontab
設定が反映されたかcrontab -l
で確認しておきましょう。これで平日の定時に音を鳴らす設定は完了です。あとはその時間になったらチャイム音が鳴ることを確認してください。
Discussion