Check! コマンドを動画で記録・公開できる asciinema

こんばんは、 [cloudpack][] の @dz_ こと[大平かづみ][]です。

Prologue - はじめに
======================================================
面白いサービスを見つけたので、実用できるか試してみました！

aciinema
======================================================

acsiinema とは？
--------------------------------------------

[asciinema]:https://asciinema.org/ "asciinema - Record and share your terminal sessions, the right way"

[asciinema][] は、 shellコマンドを動画で記録して、公開できるシンプルなサービスです。
埋め込み用のコードも提供してくれるので、技術ブログなどで手順やデモを公開するのに重宝しそうです。

留意点
--------------------------------------------

ただし、以下の点については扱いに注意が必要かと思いますので、自己責任でお願いします。

- aciinema は、プロンプトのユーザ名やホスト名の部分も記録します。そのため、表示が公開されてはまずい方はご注意ください。（ユーザ名、ホスト名変更については軽く後述します。）
- アカウントがなくても使えますが、認証が紐づいていないものはやはり __消すことができない__ ようで… (苦笑) アカウント作成して認証してから使うことをお勧めします。

やること
======================================================

1. asciinema のアカウントを作る
2. asciinema をインストール
3. asciinema の初期設定
    1. プロンプトの表示変更
    2. 認証
4. asciinema の使い方

1. asciinema のアカウントを作る
======================================================

1. http://asciinema.org/ の Login から メールアドレス を入力して、アカウント作成を始めます。
![20150104_asciinema_001.png](https://qiita-image-store.s3.amazonaws.com/0/3812/530a1c41-ff53-ace7-9656-77dadafb8ff1.png)
![20150104_asciinema_002.png](https://qiita-image-store.s3.amazonaws.com/0/3812/e3458435-2bb6-7582-1fde-1912d8d66038.png)

2. 以下の画面が表示され、Welcomeメールが届いているので、メール内のログインURLをクリックします。
![20150104_asciinema_003.png](https://qiita-image-store.s3.amazonaws.com/0/3812/67b7e928-152d-4cea-4195-1a8c2adbb3ea.png)
![20150104_asciinema_004.png](https://qiita-image-store.s3.amazonaws.com/0/3812/2f7dec05-0346-34c1-8bbf-1088f4a89f36.png)

3. ユーザ名を入力して登録は完了です。
![20150104_asciinema_005.png](https://qiita-image-store.s3.amazonaws.com/0/3812/8fd8b201-77c3-c814-272b-a9a0275b59d4.png)
![20150104_asciinema_006.png](https://qiita-image-store.s3.amazonaws.com/0/3812/c7591fcd-0dee-1f92-5c50-e35ab25205c8.png)



2. asciinema のインストール
==========================================================

![20150104_asciinema_008.png](https://qiita-image-store.s3.amazonaws.com/0/3812/26d80564-c000-8d0f-c887-74edb820c2ac.png)

一番簡単なインストール方法は以下の shellコマンドを実行する方法です。
`curl -sL https://asciinema.org/install | sh`

私は、簡単なこの方法でイントールしてみました。

```bash
$ curl -sL https://asciinema.org/install | sh
Downloading asciinema v0.9.9 for linux-amd64...
######################################################################## 100.0%
Warning: you may be asked for administrator password to save the file in /usr/local/bin directory
Installing to /usr/local/bin/asciinema...
Success.

Start recording your terminal by running: asciinema rec
```

ほかのインストール方法としては、 `homebrew` や ディストロパッケージ (Ubuntu, Fedora Arch Linux, Gentoo)　も[利用可能][asciinema-install]です。

[asciinema-install]:https://asciinema.org/docs/installation "Installation - asciinema"


3. ascinema の初期設定
======================================================================

3-1. プロンプトの表示変更
--------------------------------------------------

Amazon Linux を使ってるとありがちですが、アカウント名を `ec2-user` のまま使っていたり… (私です(笑) デフォルトのユーザのままだと何かと心配ですし、これを機にユーザ名とプロンプトの表示を変更しました。

### ユーザー名を変更する
この際なので、ssh のログインユーザーを変更しました。
Amazon Linux なので以下の公式ドキュメントを参考にしつつ、新しいユーザに sudoes の権限を与えて常用できるようにしました。

- [ユーザーの追加 (sshログインユーザーを変更)][aws-ec2-change-username]

sudoes の権限は、 `visudo` というコマンドを使って設定ファイルを変更するそうです。私はここを参考にしました。

- [How to add a user to the sudoers list | USB Pen Drive Linux][])

### プロンプトのマシン名の表示のみ変更する

今回は見た目だけ変更できればいいので、 以下を参考に `~/.bashrc` に設定を記述しました。

- [プロンプトのマシン名を変更(表示のみ)][aws-ec2-change-nickname]
 - 上記ドキュメントでは `/etc/bashrc` を変更していますが、 `~/.bashrc` に記載しても、asciinema の記録の表示を変更できました。
 - ちなみに、 `~/.bash_profile` では、記録の時に戻ってしまいました。

こんな感じです。(マシン名を *webserver* に変更する例)

```bash
$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
$ vi ~/.bashrc
```

```:~/bashrc
...

# 以下を追加
if [ "$PS1" ]; then
        PS1="[\u@$NICKNAME \W]\\$ "
fi
```

[aws-ec2-change-username]:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html "Managing User Accounts on Your Linux Instance - Amazon Elastic Compute Cloud"
[aws-ec2-change-nickname]:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html#d0e28419 "Changing the Shell Prompt Without Affecting the Hostname - Amazon Elastic Compute Cloud"
[How to add a user to the sudoers list | USB Pen Drive Linux]:http://www.pendrivelinux.com/how-to-add-a-user-to-the-sudoers-list/ "How to add a user to the sudoers list | USB Pen Drive Linux"

3-2. 認証
-----------------------------------------------------------------

プロンプトの表示が整ったら、 `asciinema auth` コマンドを実行して認証しましょう。
以下のように認証用のURL (https://asciinema.org/connect/... ) が表示されるので、ブラウザからアクセスし、認証を完了させます。

```bash
$ asciinema auth
Open the following URL in your browser to register your API token and assign any recorded asciicasts to your profile:
https://asciinema.org/connect/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```

認証が完了すると以下のように表示されます。
![20150104_asciinema_007.png](https://qiita-image-store.s3.amazonaws.com/0/3812/9e14c604-6dd1-f330-2c23-8e9a5bfb8f96.png)

3. asciinema の使い方
===========================================================

サブコマンドを表示させてみると、 `auth` 以外にできることは 1つ！

- rec 記録
- auth アカウント認証

```bash
$ asciinema --help
usage: asciinema [-h] [-v] <command> [command-options]

Record and share your terminal sessions, the right way.

Commands:
   rec            Record terminal session
   auth           Assign local API token to asciinema.org account

Options:
   -h, --help     Display help message
   -v, --version  Display version information

   Run "asciinema <command> -h" to see the options available for the given command.
```

コマンドを記録してみよう
-----------------------------------------------------------

それでは、`asciinema rec`を実行して、 コマンドを記録してみましょう！

```
# 記録開始
$ asciinema rec

....

# Cntrl + D を入力すると、exit実行
$ exit
~ Asciicast recording finished.
~ Press <Enter> to upload, <Ctrl-C> to cancel.

# ここで <Enter> を入力

https://asciinema.org/a/xxxxx
```

以下は実際に asciinema で録画したものです。
https://asciinema.org/a/15352

<script type="text/javascript" src="https://asciinema.org/a/15352.js" id="asciicast-15352" async></script>

Epilogue - おわりに
==========================================================
今回はたまたま見つけたまだあまり話題になっていない(?) asciinema を取り上げてみました。ちょうどコマンドを記録できるサービスあっていいのにな～と思っていた矢先だったので、びっくりしました。

世の中にはまだ未発掘のサービスたちがたくさん待ってると思います、わくわくしますね！

----

近況
---------

[cloudpack技術ブログ][cloudpack-blog]でも、AWS Lambda 関連など記事を書いています。ご興味あれば読んでいただけると嬉しいです！

- <a href="http://blog.cloudpack.jp/author/oohira/" title="大平 かづみ の記事一覧 | cloudpack技術情報サイト"　target="_blank">大平 かづみ の記事一覧</a>

[cloudpack]:https://cloudpack.jp/ "cloudpack（クラウドパック） 400社を超える導入実績! EC2などAWSクラウドの導入設計、構築、運用保守サービス"
[cloudpack-blog]:http://blog.cloudpack.jp/ "cloudpack技術情報サイト"
[大平かづみ]:http://blog.cloudpack.jp/author/oohira/ "大平かづみの記事一覧"