pixelaでPCの利用状況を可視化する

# はじめに
日々の様々な活動量をgithubのようなグラフで可視化してくれるAPIサービス[pixela](https://pixe.la/ja)を使って日々のPCの利用状況を可視化する方法を紹介します。
利用状況といっても１日のうちのログオン回数（休憩時などPCから離れたあと再度ログオンした回数も含む）をカウントしてグラフ化します。
今回は、MacとWindows10でのログオン回数をグラフします。

# pixela CLIのインストール＆ユーザー登録
本家の[「CLI toolsで使う」](https://blog.a-know.me/entry/2019/02/24/214142)を参考にしながらインストールとユーザー登録を行います。

Mac版はhomebrewでインストールします

```shell-session
% brew install a-know/tap/pi
```

Windows10版は[ダウンロードページ](https://github.com/a-know/pi/releases)からプログラムファイルをダウンロードします。

- ダウンロードしたzipファイルを解凍する
- 解凍した中にある`pi`コマンドを`C:¥Users¥<UserName>¥bin`にコピーする
- `C:¥Users¥<UserName>¥bin`をPATHに追加して`pi`コマンドを実行できるようにする

下記コマンドでユーザー登録を行います。(Mac/Windows10共通)
`<UserName>`と`<SecretToken>`は適宜設定してください。

```shell-session
% pi users create --username <UserName> --token <SecretToken> --agree-terms-of-service yes --not-minor yes
```

# pixelaグラフの新規作成
macの利用状況グラフを作成します。

```shell-session
% pi graphs create -u <UserName> -g mac -n "Mac usage graph" -i logon -t int -c shibafu -z "Asia/Tokyo"
```

Win10の利用状況グラフを作成します。

```shell-session
% pi graphs create -u <UserName> -g win10 -n "Win10 usage graph" -i logon -t int -c sora -z "Asia/Tokyo"
```

# Macでログオンをカウントする
ログオンをカウントするためには、`Automator`と`sleepwatcher`を利用します。
ログイン時は`Automator`でカウントアップを行います。
スリープなどからの復帰は`sleepwatcher`でカウントアップを行います。

## Automator設定方法
- Automatorを起動する
- 「新規」-「アプリケーション」を選択する
- 「シェルスクリプトを実行」を右側にドラッグする
- 下記のシェルスクリプトを記載して「PixelaIncr.app」という名前で保存する

```shell
export PIXELA_USER_TOKEN=<SecretToken>
/usr/local/bin/pi pixel increment -u <UserName> -g mac
```

- 「システム環境設定」を起動し、 「ユーザーとグループ」を開く
- ユーザーの「ログイン項目」に上記の「PixelaIncr.app」を追加する

上記設定だけだとログイン時にしかカウントアップされない為、スリープからの復帰などはカウントされません。
スリープからの復帰をカウントする為には、```sleepwatcher```を利用します。

## sleepwatcher設定方法
sleepwatcherをインストールします
 
```shell-session
% brew install sleepwatcher
% brew services start sleepwatcher
```
sleepwatcherがスリープから復帰した時に実行される`~/.wakeup`を下記で作成します。

```shell:~/.wakeup
#!/bin/zsh
export PIXELA_USER_TOKEN=<SecretToken>
/usr/local/bin/pi pixel increment -u <UserName> -g mac
```

`~/.wakup`に実行権限を付与します。

```shell-session
% chmod +x ~/.wakeup
```

# Win10でログオンをカウントする
ログオンをカウントするためには```タスクスケジューラ```を利用します。
まずは、タスクスケジューラで利用するbatファイルとvbsスクリプトを作成します。
カウントアップする為のbatファイルを下記で作成します。

```shell:PixelaIncr.bat
set PIXELA_USER_TOKEN=<SecretToken>
C:¥Users¥<UserName>¥bin¥pi pixel increment -u <UserName> -g win10
exit
```

上記bat実行時にウィンドウを表示したくないので下記のVBSファイルを作成します。

```shell:PixelaIncrHide.vbs
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c C:¥Users¥<UserName>¥bin¥PixelaIncr.bat", vbhide
```

## タスクスケジューラ設定方法

- 「Windowsキー」＋「R」で表示された検索窓に「taskschd.msc」と入力してタスクスケジューラを起動する
- 「操作」->「基本タスクの作成」を選択する
- 「名前」に「pixela-incr」を入力し、「次へ」を押下する
- トリガーで「ログオン時」を選択する
- 操作で「プログラムの開始」を選択する
- 「プログラム/スクリプト」で「参照」で上記のvbsファイル「PixelaIncrHide.vbs」を指定する

これで「ログオン時」はカウントアップされますが、「ロック解除時」はカウントアップされないので上記タスクに「ロック解除時」の条件も追加します。

- 作成したタスク「pixela-incr」のプロパティを開く
- 「トリガー」タブを開く
- 「新規」ボタンを押下
- 「タスクの開始」で「ワークステーション　アンロック時」を選択する
- 「設定」で「特定のユーザー」を選択し、ユーザーを指定する

# 実行結果
mac及びWin10でログインやスリープ、ロック解除などを行うと下記のようにログオン回数がカウントアップされ表示されるようになります。

Mac Usage Graph
<img width="1107" alt="Pixela-Mac-UsageGrpha.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327014/7244a778-8454-5388-4402-1d7abb81bff1.png">

Win10 Usage Graph
<img width="1107" alt="Pixela-Win10-UsageGrpha.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327014/a8a7d1eb-1496-cb29-ef6c-466c80b02d97.png">