19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ターミナル操作をウェブで配信する

Posted at

ttyrecttycast というソフトを使うと、ターミナルの操作をウェブで配信することができます。
勉強会のデモでターミナルを共有するのに便利そうなので、使い方を簡単にまとめます。

ttyrec とは

ttyrec はターミナルを録画するソフトです。開発自体は2006年以降止まっているようですが、npm のパッケージもあるので、非常に簡単に導入することができます。

ttycast とは

ttycast は ttyrec で録画したターミナルをウェブで配信するソフトです。node で書かれていて、こちらも npm でインストール可能です。

インストール

npm でインストールするだけです。npm 自体は brew や apt、yum で入れることができます。

$ npm install -g ttycast ttyrec

ターミナル操作を録画する

ファイルを指定して ttyrec を実行することで、ターミナルの録画を開始することができます。 録画を終了するには、 Ctrl+D で EOF を入力します。

$ ttyrec <録画ファイルの保存先>
$ <録画したい操作>
...
# <Ctrl+D> で録画終了

録画内容を確認する

ttyrec と共にインストールされる ttyplay というコマンドで、再生することができます。

$ ttyplay <録画ファイル>

-s オプションで、再生スピードを調整することもできます。

$ ttyplay -s <再生速度> <録画ファイル>

録画内容をウェブで配信する

録画内容をウェブで配信するには、 ttyplay と ttycast を組み合わせます。
ttycast のオプションで、 画面サイズを指定することができるので、録画時のサイズに合わせておくと無難です。

$ ttyplay <録画ファイル> | PORT=<ポート> ttycast -s <横>x<縦> # http://0.0.0.0:<ポート> で内容を確認できる

ただし、この方法だと、 ttycast と立ち上げると同時に再生が始まってしまいます。
デモなどで使う場合は、再生タイミングを調整したいことがあるのですが、その場合は fifo を作って ttycast を起動しておきます。

$ mkfifo <fifoフィアル>
$ ttyplay <fifoファイル> | PORT=<ポート> ttycast # サーバーを起動しておく

再生したいタイミングで、上記とは別のターミナルで録画ファイルを fifo に流し込めば OK です。

$ tail -f -n+1 <録画ファイル> > <fifoファイル>

ターミナル操作をリアルタイム配信する

操作を録画しておくのではなく、リアルタイムに配信することもできます。
一番簡単な方法は、ターミナルの記録と配信を同時に行ってくれるラッパを使うことです

$ ttyreccast <録画ファイル>

ttyreccast は、/tmp/ttycast をつくって、それを見つつ <録画ファイル> にも保存してくれるように ttycast を起動して待機してくれるので、別のターミナルを立ち上げ、

$ reset && ttyrec /tmp/ttycast
$ <配信したい操作>
...
# <Ctrl+D> で終了

とすれば、ターミナルの操作をリアルタイムに配信することができます。

参考情報

ttygif という、ttyrec の結果をGIFに変換するツールもあります。

まとめ

ttyrec/ttycast、単純だけど面白い。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?