布団からパソコンを起動して1限に間に合え

5月からリモート授業がはじまりました。いつもは1時間半電車に揺られて通学していたのでぶっちゃけすごいありがたい限りです。

そんなわけで今、1限までにどうにかして学校に着くのではなく1限までに起きてどうにかしてPCの前に座るというレベルの低くなったチキンレースをしています。

# 布団からPCまでを効率化せよ

## 気づいてしまった

リモート受講に使ってるPC、**起動が遅い...**

いま受講に使っているマシンは年明けごろ知人から不燃ゴミという名目で譲ってもらったマシンです。

Corei7-2600、RAM8GB、ストレージはHDD150GB、継ぎ接ぎのような整備をして今はKubuntu20.04を入れて稼働させています。

**遅い。**ノートPCとはいえi7-7500UにSSDの窓10メインマシンに比べりゃ遅いです。やっぱSSDってすごいんやなぁ。...メインマシンで受講したらいいじゃないかって？ うん。それはそう。とってもそう。

でもシングルモニタのPCをTeamsの受講用マシンにしてデュアルモニタのメインマシンはOneNoteでのノートとりとか~~内職とか趣味の開発とか~~に使いたい！というどーしよーもないワガママを叶えるためこの構成になりました。わがままですね。でもこれが一番しっくりきたからこれでいいのだ。

## 起動が遅いのをなんとかしたい
というわけで、8:50に始まる1限までに布団から起き上がりPCの前に座り、Teamsを起動して通話に参加する。この時間を最適化したいものです。いつもどおり早起きしたらいいじゃないかって？うん、正しい。あなたのほうが正しい。

でもクズ学生はちょっとでも寝てたいものなのです。早寝しろ？うん、正しい。

ひとまず起床して受講開始までの流れを確認してみましょう。

|手順|
|:--:|
| 起きる |
| 朝が来たことに絶望する |
| 布団から出る |
| 部屋を移動 |
| 場合によってはトイレ |
| PCスペースにつく |
| PCの電源を入れる |
| 起動を待つ |
| Teamsにログイン |
| 受講 |

こんな感じです。

ふむ、こうできそうですよね！

|手順||
|:--:|:--:|
| 起きる ||
| 朝が来たことに絶望する | :arrow_heading_down: |
| 布団から出る | PCの電源を入れる |
| 部屋を移動 | 起動を待つ |
| 場合によってはトイレ | Teamsにログイン |
| PCスペースにつく | :arrow_backward: |
| 受講 ||

朝が来たことに絶望する段階でPCの電源を入れることができればかなりの効率化が見込めそうです。

では早速設定してみましょう。

# PCを設定する
※ 今回設定するPCはKubuntu20.04ですので、それに合わせた記述をしています。

今回やることは以下のような感じです。

* WoLを設定する
* 自動ログインを設定する
* 自動ログイン後の画面ロックを設定する
* スマホからWoLできるようにする

## WoLを有効化する
WoLとはWake on LAN、LAN内のPC(MACアドレス宛)にマジックパケットという起きなさーい信号を送って人力で電源ボタンを押すことなく起動しよう！という技術です。

Wake on LANは広く知られた技術ですのでググれば設定方法はごまんと出てきます。BIOSやマザーボードなどによって設定方法が違いますのできちんとググられることをおすすめしますが、たいてい `APM` みたいなメニューの中にある `Power On By PCI` みたいなのをEnabledにすればWoLが効くようにする設定は終了です。

## WoLをテストする
この設定が終わったら試しにWoLを飛ばしてみてちゃんとマシンが起動することを確認しておきましょう。WindowsからのWoL起動は[nWOL](https://n-archives.net/software/nwol/)がシンプルで便利でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/a6466c52-4021-19ab-12fa-c3e6c5ee3a83.png)

こちらはメイン画面。電源が切れている状態で電源ボタンをﾎﾟﾁｰするとWoLパケットが飛ぶようになっています。タスクトレイアイコンからも起動指示が出せます。良いですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/8364bca7-4f1b-17a7-e714-00e9c02b7f93.png)

こちらは設定画面。少なくともホスト名とMACアドレスを埋めてWOLをYesにしてリストに追加します。nWOLはIPアドレスの変更を勝手に修正してくれますので便利です。

PCのMACアドレスを確認するのはこちらの記事を参考にさせていただきました→ [(今更)Linux で HW(MAC)アドレスを取得する方法](https://qiita.com/p_cub/items/b0b4351c52c876aaa095)

WoLでちゃんと起動できることを確認したら次へ進みましょう。

## 自動ログインを設定する

ぶっちゃけWoLで起動してくれるだけでも御の字なのですが、ここは図に乗って椅子に座れば受講可能な状態までもっていきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/6661e097-74cc-a74d-0b49-05b92b1b0925.png)
自分のアカウントのところに 自動的にログイン というのがありますのでここにチェックし適用します。設定保存時にパスワードを求められますので入力しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/003cf30a-8457-9729-6239-5855b6124690.png)
続いてMicrosoft Teamsの設定からアプリケーションの自動起動を設定しておきます。これにチェックしておけばPCの起動時にTeamsが勝手に起動してくれます。

### Optional: 自動ログイン後に画面ロックさせる

これは必須ではないのですが、これを設定しておくと「外出先からWoL起動してからリモートデスクトップ接続したいけどぶっちゃけ自動ログインしてPCを丸腰にするのはアレだな」みたいな人向けのものです。

シェルスクリプトを書きます。といっても書くべきは2行なので楽勝です。

```startuplock.sh
#!/bin/sh
xdg-screensaver lock

```

`xdg-screensaver lock` は画面をロックするためのコマンドです。xdg-screensaverそのものは読んで字のごとくスクリーンセーバーの制御などを司るコマンドなのですが、画面ロックの発動もできます。

書き終わったら `chmod +x ./startuplock.sh` して実行権限を渡してから、実際にコンソールから叩いてロック画面が出ることを確認しておきましょう。

確認ができたら、KDEシステム設定から自動起動するスクリプトに今書いたヤツを登録しておきます。これで自動ログインした直後に画面がロックされるためより安全になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/17bf20dd-8c57-518b-e1f1-9e1d1787a9a9.png)

## スマホからWoLする
ここまできたらあとはやるだけです。なおスマホをWi-Fi等につないでWoLするマシンと同じLAN内にいることを前提としています。

まずはアプリストアから`Wake on LAN`とかで検索しお好みのクライアントを入れます。私は[これ](https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan)を使っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144262/74830a7e-b688-d3ab-18fa-bcb1319515b2.png)

デバイスのニックネームを適当に入れ(ChitahandaというのはWoLするマシンのホスト名です)、MACアドレスを適切に埋めます。IPアドレスは192.168.1.255(ブロードキャストアドレス)で大丈夫です。ポート番号がデフォルトで9になっていますが、起動試験をして失敗した場合は7に設定してください。

設定が完了しきちんとWoL起動することが確認されたら、ホーム画面にショートカットを置くなりして起床してすぐWoLを飛ばせるように設定しましょう。お疲れ様でした！

# 実践した感想
**感動した。** 起きてWoLポチッしたらPCに向かう間に起動完了してTeamsが開かれている。すごい。

ぜひお試しください。