最近、観よう、観ようと思っていて、ようやく見ることができた映画がある。ホラー映画なので、正直、観たくなかった。観なきゃいいのに。その映画はこれ。
なんと、原作は、川端康成の無声映画である。でもホラー。舞台は精神病院。古い映画なのでWikipediaで全編が観られる。1時間程度で音がないので電車でも観られる。Wikipediaでストーリをやんわり頭にいれておくといいかも。
デモとかウェビナーを見せられても、文字が小さくてよくわからなかったり(なので、動画を止めて凝視とか)するので、もっと良い方法はないか?見た人がすぐできる実行できるかないか?と調べていたらasciinemaで実現できるらしい。だいぶ前に発見していたのだが、時間がなくて試せなかった。ちょうど時間が取れるようになったので検証してみた。この映画には敵わないが。
閑話休題
asciinemaを入れてみた。
このコマンドは、端末の記録には大変便利だが、見方を変えればキーロガーでもある。なので、必要な端末に、利用直前にインストールをして、利用が終わったら、コマンドライン本体、設定ファイル、配布ファイルは削除をしておいたほうがいいかもしれない。よって、利用は自己責任で判断してほしい。
コマンドラインのインストール
とりあえず、必要なコマンドを先にインストールをしておく。必要なコマンドは、asciinemaとaggコマンド。
Ubuntu
apt -y install asciinema
curl -OL https://github.com/asciinema/agg/releases/download/v1.5.0/agg-x86_64-unknown-linux-gnu
mv agg-x86_64-unknown-linux-gnu /usr/local/bin/agg
chmod +x /usr/local/bin/agg
MacOS
brew install asciinema agg
これで完了。
参考:アンインストール
インストールしたパッケージを削除した上で、実行したユーザの~/.config/asciinema/を全て削除する。
使い方
録画
録画前に端末のウィンドウサイズが適切かどうかを確認しておく。端末のウィンドウサイズがそのまま録画されてしまう。
asciinema rec demo.cast
とすると録画開始。録画を終了をするには、exitで抜ける。
再生
asciinema play demo.cast
アニメーションGIFへの変換
埋め込みのプレイヤーを使おうとしたがファイルのアップロードが面倒なので、アニメーションGIFに変換。
agg demo.cast demo.gif
変換した結果。
共有
共有するにはアップロードをする。
aciinema upload demo.cast
asciinema.orgのサーバにアップロードされて表示できるらしい。(不意にアップロードされるのが怖いのでやっていない。)
セルフホスティングサーバの構築
というわけで、IPv6環境で公開し放題だし、セルフホスティングをすることにした。(といいつつ、ルータからのルーティングはしていない。)
キーの作成
tr -dc A-Za-z0-9 </dev/urandom | head -c 64; echo
サーバの作成
以下のdocker-compose.yamlを作る。メールサーバがないと設定ができない。ちょっと敷居が高いかもしれない。マニュアルページには、gmailを使う方法も記載されている。
ちなみに、わざわざPostgreSQL 14を使う必要もないので、17にした。(PostgreSQL server (14 or higher))
services:
asciinema:
image: ghcr.io/asciinema/asciinema-server:latest
ports:
- '4000:4000'
environment:
- SECRET_KEY_BASE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- URL_HOST=192.168.100.50
- URL_PORT=4000
- SMTP_HOST=192.168.100.5
- MAIL_FROM_ADDRESS=foo@example.com
- MAIL_REPLY_TO_ADDRESS=foo@example.com
- UNCLAIMED_RECORDING_TTL=7,30
- CONTACT_EMAIL_ADDRESS=foo@example.com
volumes:
- /path/asciinema/data:/var/opt/asciinema
depends_on:
postgres:
condition: service_healthy
postgres:
image: docker.io/library/postgres:17
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- /path/asciinema/pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 2s
timeout: 5s
retries: 10
volumes:
asciinema_data:
postgres_data:
これで起動する。
docker compose up -d
ブラウザで、http;//192.168.100.50:4000 にアクセスをする。
ユーザの登録
Sign upしてメールアドレスを登録、メールにあるURLをクリック
ちなみに、Log inをしてもメールを受信してURLをもらうってログインをする必要がある。
こんなメールが届く。URLをクリック
ユーザ名登録
これで登録完了
注意
このままの設定だと、誰でも新規ユーザ登録ができてしまう。悪用されないように、必要なユーザを登録したら、SIGN_UP_DISABLED=true を追加して、必ず立ち上げ直す。
立ち上げ直したら、新規登録のメニューが消えていることを確認しておく。
セルフホスティングサーバの使い方
まず送信先を環境変数で設定。(設定ファイルでも指定ができる)
export ASCIINEMA_API_URL=http://192.168.100.50:4000
Webにログインをしてから
asciinema auth
とすることで、以下のメッセージが表示される。以下のURLを開く。
Open the following URL in a web browser to link your install ID with your 192.168.100.50 user account:
http://192.168.100.50:4000/connectYYYYYYYYYYYYYYYYYYYYYYYYYY
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 192.168.100.50.
ログイン済みだと以下のようなメッセージが一瞬表示される。
アップロードは、以下のコマンドで行う。
asciinema upload demo.cast
以下のメッセージが出てくる。URLをクリックするとセルフホスティングのページに表示される。
View the recording at:
http://192.168.100.50:4000/a/XXXXXXXXXXXXXXXXX
これで使えるようになった。自分は、NASのDockerで構築した。
ちなみに、録画なので、入力待ち、入力ミスの全てが記録される。入力ミスはともかく、入力待ちをスキップしたい。ツールもある様子だが、以下のコマンドで間引ける。
asciinema rec -i 2 demo.cast
入力のアイドルが2秒以上あると、その間は記録しない。
毎度、この設定をするのが面倒であれば、~/.config/asciinema/configに設定が記載できる。
セルフホスティングでストリーミング
さらにasciinema v3 (RC版)をインストールするか、websocatをインストールするとStreamでライブができる。
asccinema v3は、コンフィグファイルが~/.config/asciinema/configから~/.config/asciinema/config.tomlに変わっているので注意。またコメントがあると動かないので、trコマンドなどでコメントは全て削除しておく。
注意:v2とv3の仕様、コマンドラインの互換性が結構すくないのでググる時は、どのバージョンの話をしているのかを注意。
コンテナのデモなんか実際これでいいのではないかと。下手な画面動画のデモよりも見やすい。ちなみに、やってみた気がついたが、端末のサイズがそのままで録画されてしまうので注意。
といいつつ、来月は、完全白紙で検証やデモすらしなくなる予定なので、すぐにこれを使うことはないのだが。完全に時すでに遅しというやつだった。