動画編集をプログラミングでやってみたら、想像以上に面白かった

公開日

最近、動画編集をプログラミングでやってみています。

きっかけは、Kosshi を Product Hunt に出すために紹介動画を作る必要があったことでした。動画を作るのは何度もやっているのですが、Premiere や Final Cut を開くのは毎回ちょっと気が重い作業で、また慣れないタイムラインと格闘することになるな、と思っていました。

そこで、Remotion というのを試してみました。React で動画を書けるフレームワークで、JSX で書いたコンポーネントが動画になって出てきます。Premiere や Final Cut のタイムラインではなく、純粋にコードを書いて、それがそのまま MP4 になる、という変わったツールです。

想像以上に面白かったので、その話を書きたいと思います。

これが、そのときに作った動画です。

実際に書いてみると、これが意外とちゃんと動きました。自分にとっては Premiere を開くより、ずっと取っ付きやすい感じでした。型がついて、コンポーネント化できて、git で履歴が残るので、後から触っても何をやっているかが分かる、というのも大きかったです。

これは、もっとガッツリしたやつも作れるのでは、と思って、前から構想だけはあった「アウトライナー完全解説」という解説動画も作り始めました。アウトライナーって何なのか、なぜ面白いのか、どういう歴史があるのかを、過去の論文や先行研究までさかのぼって解説する、という趣旨の動画です。

制作中の一場面は、こんな感じです。

「アウトライナー完全解説」制作中の一場面。1968年、Douglas Engelbart の The Mother of All Demos を紹介するスライド

やってみると、本当にプログラマー向きの作業でした。

ひとつ前提として断っておくと、これは 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 を選んでいる根っこにあります。

関連記事

記事の更新があった場合のみ、週に1度まとめてメールでお知らせします。

いつでも配信解除できます。