ターミナル操作の記録/共有できるasciinemaというツールを使ってみた

ターミナル操作を記録/共有できる[asciinema](https://asciinema.org/)というのを使ってみた。

## 環境

macOS Catalina

## インストール

```sh
brew install asciinema
```

ちょっぴり時間がかかる。

## 記録する

`asciinema rec`すると記録が開始される。

```sh
$ asciinema rec

asciinema: recording asciicast to /var/folders/z_/8mmh9_fx4g56nlkpjm861f1m0000gp/T/tmp4jahg822-ascii.cast
asciinema: press <ctrl-d> or type "exit" when you're done
```

何の変化も無いので一瞬ちゃんと記録開始されているのか分からないが、既に記録は始まっている。
色々コマンドを打って、終わったら書かれている通り`Ctrl+D`で終わる。
すると以下のような表示が出るので、アップロードしない場合は`Ctrl+C`で抜ける。

```
asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally
asciinema: asciicast saved to /var/folders/z_/8mmh9_fx4g56nlkpjm861f1m0000gp/T/tmp4jahg822-ascii.cast
```

ファイルの中身はJSONのような感じになっている。

```sh
$ cat /var/folders/z_/8mmh9_fx4g56nlkpjm861f1m0000gp/T/tmp4jahg822-ascii.cast
{"version": 2, "width": 150, "height": 40, "timestamp": 1584239673, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.11569, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m                                                                                                                                                     \r \r"]
:
:
```

このファイルを共有すれば、パブリックな領域に上げずに遣り取りできる。

## 再生する

`asciinema play /path/to/file`すると、記録した内容を再生できる。
`asciinema cat /path/to/file`すると、ファイルを`cat`する感覚で経過時間を無視してざっと出力される。

## アップロードする

### 準備

あらかじめアカウントを作成し、ログインしておく。

### アカウントの作成方法

[トップページ](https://asciinema.org/)から右上の「Log in/Sign up」。
<img width="333" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/09128925-0a65-5347-d84c-2815e4a12ba5.png">

一瞬戸惑うが左側の「Log in」からアカウントが作成できる。
<img width="４05" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/0a66117b-7da2-bc1f-d710-6d8b499c92f7.png">

メールアドレスを入力して「Log in」をクリック。
すると「Welcome to asciinema.org」という件名のメールが届くので、メールに記載のURLを踏む事で登録完了する。

ちなみにログイン時も同じフォームからメールアドレスを入力→メール記載のURLを踏むフローとなっている。

### 認証

ログインした状態でターミナルから`asciinema auth`と入力する。
すると以下のようにURLが発行される。

```sh
Open the following URL in a web browser to link your install ID with your asciinema.org user account:

https://asciinema.org/connect/12345678-1234-1234-1234-1234567890abcdef

This will associate all recordings uploaded from this machine (past and future ones) to your account, and allow you to manage them (change title/theme, delete) at asciinema.org.
```

記載されているURLをブラウザで開く。

```sh
open https://asciinema.org/connect/12345678-1234-1234-1234-1234567890abcdef
```

特に反応は無いが認証は完了する。

### アップロード

[記録する](#記録する)セクションの通りに記録し、最後にEnterで記録した内容をアップロードする。
すると以下のようにURLが案内される。
アップロード直後はちゃんとprivateになっている。

```

View the recording at:

    https://asciinema.org/a/123456789abcdef
```

ブラウザにURLに飛ぶと、記録内容が閲覧できるようになっている。
右下からシェアしたりダウンロードできるようになっている。

右下のボタン群。
<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/a0cd2294-9d00-152e-eac3-4c26468bc6e3.png">

Shareボタンを押した時。
リンクを知っている人だけでシェアできるようになっている。
<img width="401" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/e1f94836-a5d4-2dee-3cad-0955271edcc4.jpeg">

Downloadボタンを押した時。
<img width="403" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/c9f1fd01-a210-cdec-862b-4ede9708e53b.png">


Settingからは、公開したり、タイトルや説明がEditしたり、削除できるようになっている。
<img width="138" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/4ee35a59-a97f-dd4a-8182-17902036d20b.png">

編集画面はこんな感じ。
<img width="377" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9104/9d5f99d9-01ad-d5b5-952e-601c082de321.png">


## 記録したファイルを後からアップロードしたい

記録したファイルを後から`asciinema upload /path/to/file`コマンドでアップロードする事もできる。