macユーザーなら誰でもできる簡単にオンライン授業をサボる方法

最近は減ってきましたけど、まだまだ大学生はオンライン授業ですよね。僕も毎週金曜日はオンライン授業です。毎日毎日学校行ってるんだからオンライン授業の日ぐらいはゆっくり眠っても許されると思わないですか？

そんなわけで自動でzoomに入室してくれるようなプログラミングをしてみました。
※残念ですけど、windowsには対応してないです。。ごめんなさい。でも記事は読んでください。

#目次
- 環境
- 技術について
    - automatorを使ったやり方
        - AppleScript
        - カレンダー
        - macの設定（共通です）
    - cronを使ったやり方
        - AppleScript
        - cron
        - macの設定（共通です）
- 最後に
- お世話になったサイト

#環境
mac OS Catalina 10.15.7

# 技術について

##automatorを使ったやり方
最初はmacに標準で入っている**automator**と呼ばれるアプリを活用しようと模索しました。
簡単にこの**automator**について説明するとmacのいろんな作業を自動化してくれるすごいやつです。
例えばautomatorで作成したプロジェクトを起動するとゴミ箱の中が空になるとか。色々と便利そうなのでちゃんと活用したら楽しそうです。

###AppleScript
引用です。
> AppleScriptは、マウスやキーボードを使わずに、Macを操作する方法です。すなわち「AppleScriptはメイドのようなもの」と言ってもいいでしょう。

macを操作してzoomに入るのから必須です。（コピペでいけました。）

実際に詳しいことはここに書くよりも調べた方がいい記事が出ると思うので実際使用したコードだけ載せときます。

```AppleScript
tell application "Google Chrome"
 open location "https://zoom.us/j/{zoomのID}"
 activate
end tell

tell application "zoom.us"
 activate
 tell application "System Events"
  delay 3
  keystroke "{password}"
  key code 76 -- Enterを意味します。    
 end tell
end tell
```

うちの学校は同じzoomID、パスワードで定期的なミーティングとして設定しているので固定です。
簡単に解説すると上の四行でGoogle Chromeで授業のURLにアクセス
下の八行でパスワードを入力してます。

zoomのアプリからIDとパスワードを入力と言う形にしなかったのは単純にキー操作でzoomのtopから参加までアクセスできなかったからです。（マウス操作を記憶し、実行というのもあるにはあるのですが、汎用性を高めたかったのと、プログラミングしたかったのでプログラムを書きました。）

ここで１度実行してみてください。
そうすると画面上部に下のようなものが出てくるのでその中の**zoom.usでのこのタイプのリンクは常に関連づけられたアプリで開く**のチェックボックスをチェックを入れてください。（チェックすると次回以降リンクで飛ぶと勝手にzoomアプリが起動するようになります。）
![スクリーンショット 2020-10-23 3.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472434/fb47acbe-66e1-0969-660d-ae688630ce45.png)
あと、ダイアログで権限関係のエラーが出ると思うので、環境設定から許可してください。（確かアクセシビリティだと思います。）

適当にデスクトップにでも保存してください。

###カレンダー
ここまでで自動で授業に参加できるプログラムは完成しました。ここからは毎週自動で授業に参加するために自動で起動されるようにしましょう。

定期的に実行するのはめんどくさそうと思っていたのですが、そこは天下のapple様。カレンダーから実装できてしまいます。

>1. カレンダーで実行したい時間にイベントを作成します。
2. 通知の設定を新規で設定します。
3. カスタムをクリックし、時間を**イベントの開始時間**に設定します。
4. サウンド付きメッセージの項目をクリックし、**ファイルを開く**をクリック
5. その下のカレンダーをクリックし、先ほど保存したautomatorのプロジェクトを選択してください。

![スクリーンショット 2020-10-23 4.00.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472434/731691cb-fda3-8de4-c1a3-a9fee0df6439.png)
以上で実装されます。

いろんな記事を漁った結果以上の方法が出てきました。ですが、自分は通知のところからなぜか上記で設定したファイルを開くという通知が消えてしまうんですよね。。困ったな。。と


###macの設定1
ここまできてまだ設定かよと思った方。抜けています。
なんとこのスケジュールmacが開いていないと動きません！（当たり前）

なので**システム環境設定>省エネルギー>スケジュール**から先ほど設定した授業の時間の３分前にでもスリープが解除されるように設定しましょう。

これであなたはオンライン授業の日はぐっすり眠れます。お疲れ様です。


##cronを使ったやり方
先ほど書いた通り、スケジュールがうまく動作しないので、他の方法を考えました。
救世主**cron**の登場です。

###AppleScript

ソースコード自体は先ほど書いたものと全く一緒です。

```AppleScript:AutoParticipantClass.scpt
tell application "Google Chrome"
 open location "https://zoom.us/j/{zoomのID}"
 activate
end tell

tell application "zoom.us"
 activate
 tell application "System Events"
  delay 3
  keystroke "{password}"
  key code 76 -- Enterを意味します。    
 end tell
end tell
```

名前は適当に設定してデスクトップにでも保存してください。

###cron
最初はcronを使ってさっき作成したautomatorのプロジェクトを起動すれば完璧やん！！！って考えてたんですけど、40分ぐらい格闘したんですけど、最後は権限の問題が大きかったです。あるファイルを削除すると実行されると書かれていたのですが、削除は怖いので諦めました。

となると普通のAppleScriptのファイルを実行するっていうコマンドを書けば完成だと。もうここまでくれば終わったも同然です。

一点、terminalからAppleScriptを実行するには**osascript**をつけないといけないです。

```
osascript {プロジェクトまでのパス}/{ファイル名}
```

terminalを開き

```
$ crontab -e

#設定例
#デスクトップに保存しているのなら
#毎週金曜日9時21分指定のAppleScriptファイルを実行
21 9 * * 5 osascript /Users/{あなたの名前}/Desktop/AutoParticipantClass.scpt
```

設定されているかどうかを確認するには下のを実行しましょう。

```
$ crontab -l
```

###macの設定2
[上と同じです。](#macの設定1)

お疲れ様でした。

#最後に
最初automatorの存在を知らずに、どうやるんだろうか悩んでいたところに「automator知らんの？」と教えてくれた人がいました。
それを聞いてから着手し、大体２時間ぐらいで完成しました。（記事書くのに２時間かかりました。）途中無駄足踏んだ利もしたんですけど、なんとか形になってよかったです。
初めてこうやってアウトプットしてみました。思ったよりも大変ですね。何よりタイピングしすぎて肩が痛いです。
よかったらmacユーザーの人はこれで授業を自動で入室するようにしてぐっすり寝ましょう。
no sleep no life ですよ。
もう３時なんで寝ます。おやすみなさい。
何か気づいたことがあったらコメントで教えてください
#お世話になったサイト
http://tonbi.jp/AppleScript/Introduction/01/
https://mac-tegaki.com/basic-usage/safari-applescript.html
https://kinopy-techhack.hateblo.jp/entry/180308
https://dev.classmethod.jp/articles/applescript-sample/
https://aichanworld.com/wd/2017/03/03/mac%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%84%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
https://shinmedia20.com/mac-cron
https://support.apple.com/ja-jp/guide/terminal/trml1003/mac
https://www.yoheim.net/blog.php?q=20190902