GitHub Trend まとめ
🎥

Reactで動画制作!?Remotionが描く未来

🏆 Rank 3 TypeScript 1,114 Stars 2026/1/26
Summary
・Reactでプログラマブルな動画生成を可能にするフレームワーク ・コンポーネント指向で複雑な動画も効率的に構築 ・Web技術と動画制作の融合で開発者の可能性を広げる

皆さん、GitHubのトレンドを賑わせている「remotion-dev/remotion」をご存知でしょうか?「Make videos programmatically with React」という簡潔な概要に、思わず目を奪われた方も多いはずです。現代において、動画コンテンツの需要は爆発的に増大しており、パーソナライズされた動画広告、データに基づいた自動生成レポート、あるいは大量のテンプレート動画など、GUIベースの従来の動画編集ツールでは対応しきれない課題が山積しています。

そんな中、RemotionはWeb開発者が慣れ親しんだReactのエコシステムを、そのまま動画制作の世界に持ち込むという画期的なアプローチで、これらの課題に一石を投じています。TypeScriptで書かれ、本日1,114ものスターを獲得して堂々の3位にランクインしたこのプロジェクトは、単なる動画編集ツールの代替ではなく、Web技術者が新たなフロンティアを開拓するための強力な武器となる可能性を秘めているのです。

何ができるのか(技術的深掘り)

Remotionの核心は、Reactコンポーネントが時間軸を持つ動画フレームとして扱われる点にあります。まるでWebページを構築するかのように、コンポーネントを組み合わせて動画のシーンやアニメーションを作成できるのです。

具体的に何がすごいのか、エンジニア視点で掘り下げてみましょう。

従来のFFmpegのようなCLIツールは低レイヤーすぎて開発体験が悪く、Adobe After EffectsのようなGUIツールは自動化には不向きでした。Remotionはこれらの中間に位置し、Web開発者に馴染み深い開発ワークフローで、プログラマブルな動画制作という新たな道を示しているのです。

コード例 / 設定例

Remotionでの動画制作は、基本的にReactのコンポーネント定義と、それをレンダリングするための設定で構成されます。

// src/MyVideo.tsx
import { Composition, AbsoluteFill, Series, Sequence, useCurrentFrame, useVideoConfig } from 'remotion';
import { Title } from './Title';
import { Subtitle } from './Subtitle';

// 動画のルートコンポーネント
export const RemotionVideo: React.FC = () => {
  return (
    <Composition
      id="HelloWorld" // CompositionのID
      component={MyComposition} // 動画を構成するReactコンポーネント
      durationInFrames={150} // 動画全体のフレーム数 (例: 5秒 @ 30fps)
      fps={30} // フレームレート
      width={1920} // 動画の幅
      height={1080} // 動画の高さ
    />
  );
};

// 実際の動画コンテンツを定義するコンポーネント
const MyComposition: React.FC = () => {
  return (
    <AbsoluteFill style={{ backgroundColor: '#1a1a1a', justifyContent: 'center', alignItems: 'center' }}>
      <Series>
        {/* シリーズ内の最初のシーケンス: タイトル表示 */}
        <Sequence durationInFrames={60}> {/* 2秒間 (60フレーム) */}
          <Title text="Remotionの世界へようこそ!" />
        </Sequence>
        {/* 次のシーケンス: サブタイトル表示とアニメーション */}
        <Sequence from={60} durationInFrames={90}> {/* 2秒目から3秒間 */}
          <Subtitle text="Reactでプログラマブルな動画制作" />
        </Sequence>
      </Series>
    </AbsoluteFill>
  );
};

// src/Title.tsx (例)
import React from 'react';
import { interpolate, useCurrentFrame } from 'remotion';

export const Title: React.FC<{ text: string }> = ({ text }) => {
  const frame = useCurrentFrame();
  const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });

  return (
    <h1 style={{ color: 'white', fontSize: '80px', opacity }}>
      {text}
    </h1>
  );
};

// src/Subtitle.tsx (例)
import React from 'react';
import { spring, AbsoluteFill, staticFile } from 'remotion';
import { useVideoConfig, useCurrentFrame } from 'remotion';

export const Subtitle: React.FC<{ text: string }> = ({ text }) => {
  const { fps } = useVideoConfig();
  const frame = useCurrentFrame();

  const scale = spring({
    frame: frame,
    fps,
    config: {
      damping: 200,
      stiffness: 100,
      mass: 0.5,
    },
  });

  return (
    <AbsoluteFill style={{ justifyContent: 'center', alignItems: 'center', transform: `scale(${scale})` }}>
      <p style={{ color: '#00e676', fontSize: '40px' }}>{text}</p>
    </AbsoluteFill>
  );
};

上記のコードでは、Composition で動画全体の仕様(ID、コンポーネント、フレーム数、FPS、解像度など)を定義し、その中で MyComposition というReactコンポーネントが実際の動画コンテンツを記述しています。SeriesSequence を使うことで、時間軸に沿ったシーンの切り替えを直感的に記述可能です。各テキストコンポーネントでは、useCurrentFrame()useVideoConfig() といったRemotion独自のHooksを用いて、現在のフレーム数や動画設定に応じたアニメーションを実装しています。

この定義された動画をレンダリングするには、Remotion CLIを使います。

# 開発サーバーを起動してプレビュー
npx remotion studio

# 定義したCompositionをMP4ファイルとしてレンダリング
npx remotion render src/index.tsx HelloWorld out.mp4

Web開発者にとって馴染み深いTypeScriptとJSXで動画を記述し、CLIコマンドでレンダリングするという、まさに「コードで動画を作る」体験がここにあります。

まとめ

Remotionは、React開発者にとって動画制作の新しい扉を開く画期的なツールです。これまでGUIツールに閉じられていた動画編集の世界に、プログラマブルなアプローチを持ち込むことで、大量生成、パーソナライゼーション、自動化といった現代のニーズに応えます。

マーケティング担当者が顧客ごとに異なる動画広告を自動生成したいケース、教育コンテンツプラットフォームがテンプレートに基づいてチュートリアル動画を量産したいケース、あるいはデータサイエンティストが動的なデータ可視化動画を手軽に作成したいケースなど、その応用範囲は計り知れません。

Web開発のスキルセットを活かして、クリエイティブな表現とエンジニアリングを融合させたい方にとって、Remotionはまさに「へぇ、面白そう!」と前のめりになるような、刺激的なプロジェクトとなるでしょう。ぜひ一度、この未来志向のフレームワークに触れてみてください。