![見出し画像](https://assets.st-note.com/production/uploads/images/103265364/rectangle_large_type_2_113d157510ce6571c15efea3a40c812e.png?width=1200)
CLIでインターバルタイマーを作る(Mac)
CLIでインターバルタイマーを作る(Mac)
1分、1分、1分、3分といった、個別に設定した時間を測るタイマーとしてインターバルタイマーというものがあるらしい。
英会話の学習で、ひとまとまりの学習をする際にLessonごとに時間を測るのが手間だった。買うほどでもないし、いくつかリリースされているアプリを触れてみたが、使いやすいものがなかったので、CLIでできないかなと調べつつスクリプト化した。
ターミナルでCLIを実行する。
Macではターミナルというアプリケーションが入ってるので、これを使う。
CLI(コマンドラインインターフェース)が初めてでもChatGPTに聞きながらやればなんとかなると思う。
音声ファイルをCLIで再生するコマンド
Macではafplayというコマンドで音声ファイルを再生できるということで、一連の動作をスクリプトにすれば、ターミナルから実行できる。
Lessonの移り変わりの音声ファイルを作る
Lessonの移り変わりの音声はMacのボイスメモで自分で”Lesson1を開始してください〜”などと音声を収録してファイル化した。
コマンドも音声ファイルも揃った。
実現したい動作はこちら。
スクリプトスタート(音声ファイルを指定する)
音声再生(Lesson1を開始してください)- Lesson1.m4a
60秒待機
音声再生(Lesson2を開始してください)- Lesson2.m4a
60秒待機
音声再生(Lesson3を開始してください)- Lesson3.m4a
60秒待機
音声再生(Lesson4を開始してください)- Lesson4.m4a
音声再生(テキスト付属音声)- 1.で指定したファイルを再生
180秒待機(9の音声再生も含めて秒なので調整)
音声再生(Lesson4は終わりです)- Lesson5.m4a
スクリプトファイルを作成する
ChatGPTに仕様をぶち込んで作ってもらったスクリプトはループや変数を多用してたので、いろいろ外してシンプルにした。
ファイル名:IntervalTimer.sh
#!/bin/bash
#プログラムファイルパス
base_path="/Users/k/Documents/IntervalTimer/"
# テキスト付属の音声ファイルのディレクトリ
rs_path="rs/"
# & は処理を待たず次のコマンドを実行する
# 音声再生 Lesson1を開始してください
afplay "${base_path}Lesson1.m4a" &
sleep 60
# 音声再生 Lesson2を開始してください
afplay "${base_path}Lesson2.m4a" &
sleep 60
# 音声再生 Lesson3を開始してください
afplay "${base_path}Lesson3.m4a" &
sleep 60
# 音声再生 Lesson4を開始してください
afplay "${base_path}Lesson4.m4a" &
sleep 1
# 音声再生 引数で指定された番号 例 001 のファイル 001.mp を再生
afplay "${base_path}${rs_path}${1}.mp3" &
sleep 180
# 音声再生 Lessonは終わりです。
afplay "${base_path}Lesson5.m4a"
ディレクトリ
![](https://assets.st-note.com/img/1681729423677-3l8AfEVktq.jpg?width=1200)
ファイルの実行
% cd ./Documents/IntervalTimer
% chmod +x IntervalTimer.sh
% ./IntervalTimer.sh 001
うまいこと再生された。
結果
スムーズに学習を進められて、気持ちよかった。
それほど時間がからなかったが、予定してた学習時間は超えてしまったので、翌日からスケジュール通りに学習を始めた。
![](https://assets.st-note.com/img/1681730320491-8Gap2o63E1.png)