動画編集をプログラミングでやってみたら、想像以上に面白かった
- 公開日
最近、動画編集をプログラミングでやってみています。
きっかけは、Kosshi を Product Hunt に出すために紹介動画を作る必要があったことでした。動画を作るのは何度もやっているのですが、Premiere や Final Cut を開くのは毎回ちょっと気が重い作業で、また慣れないタイムラインと格闘することになるな、と思っていました。
そこで、Remotion というのを試してみました。React で動画を書けるフレームワークで、JSX で書いたコンポーネントが動画になって出てきます。Premiere や Final Cut のタイムラインではなく、純粋にコードを書いて、それがそのまま MP4 になる、という変わったツールです。
想像以上に面白かったので、その話を書きたいと思います。
これが、そのときに作った動画です。
実際に書いてみると、これが意外とちゃんと動きました。自分にとっては Premiere を開くより、ずっと取っ付きやすい感じでした。型がついて、コンポーネント化できて、git で履歴が残るので、後から触っても何をやっているかが分かる、というのも大きかったです。
これは、もっとガッツリしたやつも作れるのでは、と思って、前から構想だけはあった「アウトライナー完全解説」という解説動画も作り始めました。アウトライナーって何なのか、なぜ面白いのか、どういう歴史があるのかを、過去の論文や先行研究までさかのぼって解説する、という趣旨の動画です。
制作中の一場面は、こんな感じです。

やってみると、本当にプログラマー向きの作業でした。
ひとつ前提として断っておくと、これは AI エージェントにコードを書かせる前提の話です。自分で全部手書きしていたら、たぶん割に合わない量のコードを書くことになります。
たとえば、書いているコードを数えてみたら、いつの間にか 12,572 行になっていました。これが動画になります。動画なのに git log には「リファクタしました」みたいなコミットが並んでいる。動画にリファクタコミットがあるというのは、ちょっと笑える光景だなと思います。
何が面白いかというと、動画を編集するという作業が、完全にソフトウェア開発と同じ手触りになる、というところです。画面を React で作る、型がつく、テストで品質を担保できる、コンポーネントを共通化できる、git で差分管理できる。慣れ親しんだソフトウェアエンジニアリングが、そのまま動画制作に流用できるわけです。これは、プログラマーにとってはかなり良い体験です。
ポン出しの AI 生成とは違う
「いや、AI で動画作るって、内容は大丈夫なの?」と思う方もいるかもしれません。
ただ、Remotion 的なアプローチと、ポン出しの AI 的なアプローチは、けっこう違うものなんですよね。
Remotion でやっているのは、人間が GUI でやっていた操作 (クリップを並べる、テキストを置く、フェードをかける) を、関数として書き下しただけのものです。ボトムアップで積み上げているだけなので、出力はあくまでツールができる範囲に収まる。予測可能で、デバッグできて、再現性があります。
加えて、ソフトウェア工学が積み上げてきた品質管理の道具が、そのまま乗ります。動画にテストがあるわけです。
一方、Sora みたいな動画をいきなり生成するようなスタイルのものは、出力が予測不能で、編集が難しい。「ここの色だけ変えたい」が効きにくく、再生成すると全体が変わってしまう。型もテストもありません。
ぜんぶがコードで作れる時代
動画に限らず、コードベースで何かを作るツール自体は、昔からあるにはありました。ただ、これまでは、あくまでアプリケーションを作る人やシステムを組む人が使うもので、コンテンツや作品を作る一般のユーザーが使うようなものではなかった。
でも、最近、なんだか逆になっている気がするんですよね。
Premiere のメニューと設定を片っ端から覚えるよりは、Remotion で「ここにテキストを 30 フレームかけてフェードイン」と AI エージェントに依頼する方が早い。複雑な GUI ツールの習熟コストが、コードを介したアプローチのコストを上回り始めている、ということなんだと思います。
いま作っているこの解説動画自体も、まさにそういう感じで作っています。たとえば最初に取り組んだのは、動画の元になる「動画用の論文」を作ることでした。
生成 AI の作った文章や内容は、古かったり嘘が散りばめられたりしているので、基本的には話半分で聞いたほうが良い、というのは、かなり改善してきたとはいえ状況は変わっていないです。なので、必ずインターネット上で集められる確かな情報で根拠を集めさせて、AI にやらせるのはある種の変換のみ、という形にしています。
で、それを網羅的にまとめた情報を読みたいわけですが、これってまさに論文の形式がぴったり当てはまるんですよね。そもそも確かな情報って何か?というのを突き詰めると、ちゃんと査読されている論文が理想的なわけです。そういう論文をまとめた解説論文を作っていく、というイメージです。
BibTeX というスタイルで出典をデータとして管理しておけば、本文と引用がきっちり紐付いた形でまとめられるので、AI にも引用を正確に扱わせやすくなる。
すると、知りたい内容が日本語で網羅的にまとまった論文らしきものが、できあがる。さらに、その出典も追跡可能な状態になっているので、あとは自分でそれを読むだけ、というわけです。
で、その論文作成のフローすらも、ほとんどプログラミングをやっているのと変わらないんですよね。
実は、そんなに簡単ではない
ここまで Remotion 推しっぽい流れで書いてきたのですが、ひとつ正直なところを書いておくと、これは、シンプルに簡単に動画が作れるかと言われたら、全然そんなことはないです。
過去に動画を作ったことは何度もあるのですが、動画を編集するのはかなり大変です。Remotion で書いていても、その大変さが消えるわけではないんです。むしろ、たぶん時間だけで見たら、普通の動画編集ソフトで作ったほうがはるかに早いと思います。慣れている人からすると、なんでこんな遠回りをしなきゃいけないんだ、と思われるかもしれません。
じゃあ、なぜわざわざ Remotion で書いているか、というと、自分にとっては理由が二つあります。
ひとつは、心理的なハードルが圧倒的に低いこと。プログラミングというのは、自分にとってはほぼ一日中やっている作業なので、すごく身近に感じます。Premiere を開くのとターミナルを開くのを比べると、自分の場合はターミナルを開くほうが、心理的に何も負担がない。動画の話なのに、いつもの作業の延長線でやれる感覚です。
もうひとつは、一度システムとして作ってしまえば、次回が圧倒的に楽になる、という信念です。これは、ソフトウェア開発の感覚そのもので、最初に骨格を作るのは大変でも、それを使い回せるようになってからの加速がすごい。AI エージェントがあるからこそこのコストを払えるわけですが、動画でも同じことが起きるはずだ、という確信が、Remotion を選んでいる根っこにあります。
関連記事
Kosshi に日本語を足したら、9言語になった
自分は英語がけっこう苦手です。 プログラミングは英語の塊みたいなものなので、 まあ一応触れる機会は多いんですけど、読むのも書くのも日本語よりずっと大変です。 最近は海外サイトもだいたいブラウザの翻訳をオンにして読んでいます。 このくらいのレベル感の人は、日本人だと結構多いんじゃないかと思います。 そういう自分が作っている Kosshi は、リリース当初から英語のアプリでした。 サイトだけは日本語と英語に対応していて、アプリ本体は英語オンリー。 理由は二つあって、一つはアウトライナーというジャンルの構造です。 操作そのものはシンプルなんですけど、見かけより使うのが難しい。 ある種の生産性を追求した人に刺さるみたいなツールで、そもそも必要としている人がもともと少ないジャンルです。
土日祝日が概念として存在しない毎日について
フリーランスエンジニアの案件と、個人の活動を行き来する働き方をしています。 独立してしばらく経つんですけど、最近、毎日の感覚がちょっとおかしくなってきました。 朝なのか昼なのか夜なのか、よく分からなくなっています。 複数のプロジェクトのプログラミングをしながら、隣で3Dプリンターがガシャガシャと音を立てていて、Slack に仕事の通知が来る。 そういう状態が一日中続いていて、ふとカーテンの隙間から外を見たときに、あ、もう日が暮れていたんだな、と気づく感じです。 土日祝日とか、ゴールデンウィークとか、まあ概念としては当然あるんですけど、もう自分の中では消えてしまいました。
何か作る人のための道具は、ガチな UX が要求される
「作る人のための道具を作る」というのが、最近の自分の主題なのですが、これをやっていて気づいたのが、何か作る人のための道具というのは、わりとガチな UX が要求される世界なんですよね。 なぜかというと、何かを作っている人たちというのは、道具の選定が真剣だからです。 毎日のように使うものだし、思考や手の動きに直接食い込んでくる種類のものなので、ちょっとした挙動の違いが、ものを作るリズムにそのまま影響してきます。 なので、フィードバックも細かい。何を入れて何を入れないか、画面のどこに何が出るか、キーボードのどのキーで何が起きるか、 そういう一つ一つに、はっきりこうあって欲しいという思いがあります。 誤魔化しが効かないんですよね。「とりあえずこんなもんで」みたいなレベルでは、採用されません。
記事の更新があった場合のみ、週に1度まとめてメールでお知らせします。
いつでも配信解除できます。