タイムラプスのタイムラプス
Timelapseは、macOS向けの小さなオープンソース画面録画ツールです。1秒ごとにスクリーンショットを撮り、最後に動画を作成します。
今日、まさかの1.0リリースを迎えた記念に、このプロジェクトが歩んできた道のりを「タイムラプス」にして紹介します。ここまで来るのに、なんと10年かかりました。

2011年 - すべての始まり
正直に言うと、最初になぜこのツールを書いたのかは覚えていません。画面録画ツールが必要になる個人的な事情があったのでしょう、たぶん……。
2011年5月にこのプロジェクトを始めたとき、私はコンピューターサイエンスの修士課程に在籍していました。大学でこのツールが必要だったのかもしれません。ただ、おそらくは課題に取り組まないための言い訳を探していただけです。
当時は、こういうツールをたくさん書いていました。主な理由は、個人的な不満を解消するため、新しいプログラミング言語を学ぶため、あるいは単に楽しむためです。
その中には、Subway(アメリカのファストフードチェーン)のランダムサンドイッチ生成ツールや、WriteRoomに影響を受けたキーボード操作の描画アプリDrawRoom、そしてクライアントに販売した定番のCMSソフトウェアなどがありました。驚くべきことに、どれも大成功はしませんでした。

確実に覚えているのは、既存の画面録画ツールにことごとく不満を感じていたことです。大まかに、次の3種類に分類できました。
- お金がかかるか、勝手に外部と通信するプロプライエタリなソリューション。
- macOSでは動かないツール。
- フォーラムやGithubのgistで人づてに共有されていた、小さくて壊れやすい一度きりのスクリプト。うたい文句どおりに動くことはめったにありませんでした。
残ったツールの中に、タイムラプス機能を提供するものはありませんでした。そこで、自分で書くことにしました。
こう書くとずいぶん壮大に聞こえますが、実際に取り組んだのは1日だけです。2011年5月11日に英雄的なコミットを5回行ったあと、そこに置かれたまま7年間、眠り続けました……。
2018年
何か面白いことが起きるまでには、長い時間が流れました。
2018年1月、どこからともなく、最初のユーザーがバグを報告してくれました。タイトルはavi作成時にハングする😱。カナダのゲーム開発者、juul1aが、インディーゲームの制作状況を記録するためにこのツールを使おうとしていたのです。すごくないですか?
彼女を助けるために、全体的な整理を行い、そもそもプログラムの使い方を説明する手順を書き、requirements.txtを追加して、ツールをmencoderからffmpegへ移植することにしました。
その後、timelapseは本格的に使える状態になりました。🎬 こちらは、タイムラプスを収めた彼女の動画からの実際の映像です。

この時点でも、ツールはまだかなり不安定で、コマンドラインからしか使えませんでした。それでも、きちんとしたアプリにできる可能性が見えてきました。ただ、取り組む時間がどうしても見つかりませんでした。
2018年10月、Hacktoberfestの期間中に協力を募ることにしました。いくつかチケットを作成し、貢献者を見つけられるようにhacktoberfestというラベルを付けました。
そして、待ちました。
まず、Shreya V Prabhuが、新しい録画で前の録画が上書きされてしまう問題を、動画名にタイムスタンプを追加して修正しました。続いてAbner CampanhaとShane Creedon(現在はGithubにいません)が基本的なテスト構成を作りました。Gbenro SelereはTravis CI用のCIパイプラインを追加しました。本当にうまくいき、プロジェクトはその後ずっと良い状態になりました。
2019年
1年が過ぎ、Kyle Jonesがコントリビューションガイドラインを追加する一方、私はCIパイプラインをリリースされたばかりのGithub Actionsへ移行しました。
Chaitanyaは、録画を停止するとプログラムがハングするバグを、動画の作成処理をスレッドから別プロセスへ移すことで修正しました。その後もコードベースの堅牢化を続け、プルリクエストのレビューやリリース作業も担当する中心的なコントリビューターになりました。
orcutt989のおかげで、アプリはPython 3.6の型ヒントを使うようになりました。
gkpln3はマルチモニター構成に対応させました。キャプチャされる画面は、常にマウスカーソルがある画面になります。
2020年
そして今日、ほぼ10年が経った末に、素晴らしいpy2appバンドラーを使って、ついに本物のmacOSアプリを作りました。これで、開発者でない人にも使いやすくなるはずです。
未来へ戻る
小さな旅も、ここで終わりです。
1.0にたどり着くまで、長い時間がかかりました。このプロジェクトは、オープンソースの協働がもたらす素晴らしさの証です。世界中のコントリビューターたちと一緒に取り組めたことを誇りに思います。ものを作るのを楽しむ人たちを結びつけるのに、人生を変えるようなプロジェクトである必要はありません。もしこれで物語が終わるとしても、私はそれで構いません。でも、そうはならない気がします。次の10年に乾杯!
おまけ
冒頭の動画は、私がこの記事を書き上げる様子を記録したタイムラプスです。
なんともメタですね。
記事をランダムに読む