AI情報最前線THE FRONTIER OF INTELLIGENCE検索
すべての記事

Remotionで作る高速タイポグラフィモーションの作り方:Reactコードで“あっと驚く”動画オープナーを作る

この記事の目次開く閉じる

    Remotionで“見た瞬間に止まる”モーションを作る理由

    今回作ったもの

    今回は、Remotionで16:9の高速タイポグラフィモーションを作りました。

    ただ文字をフェードインさせるだけではなく、白フラッシュ、高速カット、巨大タイポ、分割パネル、疑似グリッチ、画面揺れ、最後の急停止を組み合わせています。

    目的は、実用的なテンプレを作ることではありません。

    まずは、XやYouTubeで見た瞬間に「え、これRemotionで作ったの?」と思ってもらえるような、見せるためのモーションを作ることです。

    完成イメージとしては、冒頭0.3秒で画面が白く光り、巨大な英単語が高速で切り替わり、背景が揺れながらズームし、最後にタイトルが強く着地するような映像です。

    After Effectsのテンプレサイトでよく見るような、スポーツ、音楽、プロモーション動画向けの強いオープナーに近いカテゴリです。ただし、既存テンプレのデザインや動き、レイアウトをコピーしているわけではありません。参考にしたのは、あくまで「高速タイポ」「ショック系オープナー」「グリッチ」「強い導入」というカテゴリや用途です。

    今回のポイントは、Remotionでこうした演出をReactコンポーネントとして作れることです。

    なぜRemotionで作るのか

    Remotionは、Reactで動画を作るためのフレームワークです。

    通常の動画編集ソフトでは、タイムライン上でキーフレームを打って動きを作ります。一方Remotionでは、現在のフレーム番号を使って、文字の位置、透明度、拡大率、回転、色、揺れなどをコードで制御します。

    たとえば、0フレーム目から10フレーム目までは白フラッシュ、10フレーム目から40フレーム目までは高速カット、60フレーム目以降はタイトルを急停止させる、というように、時間ごとの動きをコードで決められます。

    これがテンプレ制作と相性が良い理由です。

    一度コード化しておけば、次からは title、subtitle、themeColor、speed などのpropsを変えるだけで、別の作品として使い回せます。

    今回のような派手なモーションは、最初は少し難しく見えるかもしれません。でも中身を分解すると、やっていることは意外とシンプルです。

    • フレーム番号を取得する
    • そのフレームに応じて数値を変える
    • 数値をCSSのtransformやopacityに渡す
    • 最後にCompositionとして登録して書き出す

    この流れが分かると、Remotionで作れる動画の幅がかなり広がります。

    今回のモーションの使い道

    今回のモーションは、実用性よりもインパクト重視です。

    使い道としては、次のようなものが考えられます。

    • YouTube動画の冒頭オープナー
    • AI動画作品のタイトル
    • 音楽系、スポーツ系、プロモーション系の導入
    • Remotionで作れる表現を見せるポートフォリオ
    • note販売前の反応確認用プロトタイプ

    初投稿のように、まず認知を取りたい場面では、便利さよりも「画面が止まるか」が大事です。

    そのため今回は、読みやすさだけを優先するのではなく、動きの大胆さ、速さ、緩急を優先しました。

    既存テンプレを丸パクリしない考え方

    プロ向けのAfter Effectsテンプレサイトを見ると、魅力的なタイトルアニメーションやオープナーがたくさんあります。

    ただし、既存商品のデザイン、動き、レイアウトをそのまま真似するのは避けるべきです。

    参考にしてよいのは、以下のような部分です。

    • どんなカテゴリの商品があるか
    • どんな用途で使われているか
    • 何を差し替えられるようにしているか
    • 何本セットの商品構成になっているか
    • プレビュー動画でどう見せているか
    • 販売ページでどんな導線を作っているか

    今回のRemotion作品も、カテゴリとしては「高速タイポグラフィ」「ショック系オープナー」を参考にしています。

    しかし、見た目、構図、動き、タイミングはRemotion向けにオリジナルで再構築しています。

    ここはテンプレ販売を考えるうえでも重要です。参考にするのは市場の作り方であって、完成品そのものではありません。

    Remotionで高速タイポグラフィを作る手順

    全体構成を決める

    今回のCompositionは、16:9の横長動画です。

    設定は以下です。

    <Composition
      id="WowKineticOpenerWide"
      component={WowKineticOpener}
      durationInFrames={120}
      fps={30}
      width={1920}
      height={1080}
      defaultProps={{
        title: 'REMOTION HITS HARD',
        subtitle: 'Fast cuts, giant type, flash frames, and code-built motion.',
        accentText: 'CODE-BUILT MOTION / FIRST DROP',
        themeColor: '#ff2d55',
        backgroundColor: '#050509',
        durationFrames: 120,
        speed: 1,
      }}
    />
    

    120フレーム、30fpsなので、動画の長さは4秒です。

    4秒という短い尺の中で、次のように動きを分けています。

    • 0から10フレーム: 白フラッシュと巨大文字
    • 10から38フレーム: 高速カットと分割パネル
    • 38から76フレーム: ズーム、回転、破片のような短冊
    • 76から120フレーム: 急停止してタイトルを見せる

    初心者がRemotionでモーションを作るときは、いきなりコードを書き始めるより、先に「何フレーム目で何を起こすか」を決めると作りやすくなります。

    今回のプロンプトも、見た目だけでなく時間ごとの動きを指定しています。

    Remotionで16:9の短尺モーションを作ってください。
    
    目的は、X投稿の冒頭で目を止めることです。
    実用性よりも「魅せる」ことを優先してください。
    
    要件:
    - 1920x1080
    - 30fps
    - 4秒
    - 冒頭0.3秒で白フラッシュ
    - 高速カット
    - 巨大タイポグラフィ
    - 分割パネル
    - 疑似グリッチ
    - 画面揺れ
    - 最後は急停止してタイトルを残す
    - useCurrentFrame / interpolate / spring / AbsoluteFill を使う
    - title, subtitle, themeColor, speed をprops化する
    

    このように「どんな雰囲気にしたいか」だけでなく、「いつ、何が、どう動くか」まで書くと、Remotion向けの指示としてかなり具体的になります。

    useCurrentFrameで時間を扱う

    Remotionの基本は、現在のフレーム番号を取得することです。

    const frame = useCurrentFrame();
    const {fps} = useVideoConfig();
    const f = frame * Math.max(speed, 0.2);
    

    useCurrentFrame() は、今が何フレーム目かを返します。

    useVideoConfig() は、fpsや画面サイズなど、Compositionの設定を取得できます。

    ここでは speed というpropsも使っています。speed を変えると、同じモーションでも速くしたり遅くしたりできます。

    const f = frame * Math.max(speed, 0.2);
    

    このようにしておくと、販売テンプレ化するときに「速度を変えられるテンプレ」として見せやすくなります。

    Remotionテンプレを作るなら、文字や色だけでなく、速度も差し替え可能にしておくと便利です。

    interpolateでフラッシュ、ズーム、揺れを作る

    Remotionで一番よく使う関数のひとつが interpolate() です。

    これは、フレーム番号をもとに数値を変換するための関数です。

    今回の白フラッシュは、次のように作っています。

    const flashOpacity = interpolate(
      f,
      [0, 4, 10, 18],
      [1, 0.15, 0.85, 0],
      clamp
    );
    

    0フレーム目では透明度1、4フレーム目で少し弱まり、10フレーム目でもう一度光り、18フレーム目で消えます。

    これにより、ただ一回光るだけではなく、冒頭に「バチッ」としたリズムが出ます。

    背景のズームや回転も同じ考え方です。

    const bgZoom = interpolate(f, [0, durationFrames], [1.15, 1.35], clamp);
    const bgRotate = interpolate(f, [0, 72, durationFrames], [-4, 6, 0], clamp);
    

    背景を少し拡大しながら回転させることで、画面全体に動きが出ます。

    さらに、画面揺れは Math.sin() と Math.cos() を組み合わせています。

    const cameraShake =
      interpolate(f, [0, 65, 92], [1, 1, 0], clamp) *
      Math.sin(f * 2.8) *
      13;
    

    この揺れは、最後に向かってだんだん弱くなります。

    つまり、前半は荒く揺れて、後半はピタッと止まる構成です。

    これが「緩急」の正体です。

    ただ速く動かすだけだと、見ている人は疲れます。速く動かしたあとに止めることで、最後のタイトルが強く見えます。

    springで最後の急停止を作る

    Remotionでは、spring() を使うと自然な勢いのある動きを作れます。

    今回の最終タイトルは、spring() で着地させています。

    const finalIn = spring({
      frame: f - 58,
      fps,
      config: {
        damping: 10,
        stiffness: 170,
        mass: 0.75,
      },
    });
    

    frame: f - 58 としているので、58フレーム目あたりから最終タイトルが出始めます。

    この finalIn を使って、タイトルの拡大率や回転を変えています。

    const impactScale = interpolate(
      finalIn,
      [0, 0.7, 1],
      [2.8, 0.92, 1]
    );
    

    最初は2.8倍の大きさで入り、少し小さくなり、最後に1倍へ戻ります。

    この動きがあると、タイトルが画面に叩きつけられたように見えます。

    初心者がよくやりがちなのは、すべての動きを interpolate() だけで直線的に作ってしまうことです。

    もちろんそれでも動きますが、少し機械的に見えます。

    タイトルの登場やパネルの着地など、気持ちよく止めたい部分には spring() を使うと、かなり映像らしくなります。

    propsで文字と色を差し替えられるようにする

    今回のコンポーネントは、以下のpropsを受け取ります。

    export type WowKineticOpenerProps = {
      title: string;
      subtitle?: string;
      accentText?: string;
      themeColor?: string;
      backgroundColor?: string;
      speed?: number;
      durationFrames?: number;
    };
    

    最低限、title を変えれば別の作品として使えます。

    themeColor を変えれば、赤系、青系、黄色系など、かなり印象を変えられます。

    speed を変えれば、もっと激しい演出にも、少し落ち着いた演出にもできます。

    Remotionでテンプレを作るときは、最初からすべてを完璧にprops化する必要はありません。

    まずは以下だけでも十分です。

    • title
    • subtitle
    • accentText
    • themeColor
    • backgroundColor
    • speed

    これだけ差し替えられれば、ブログ解説、X投稿、note販売、メンバーシップ配布へ広げやすくなります。

    Studioで確認してCLIで書き出す

    Remotion Studioで確認するには、次のコマンドを使います。

    npm run studio
    
    今回のCompositionは、以下のURLで確認できます。
    http://localhost:3000/WowKineticOpenerWide
    
    動画として書き出す場合は、次のコマンドです。
    npm run render:wow:wide
    
    直接Remotion CLIで書き出すなら、次のように指定します。
    npx remotion render src/index.ts WowKineticOpenerWide out/wow-kinetic-opener-wide.mp4
    

    Remotionでは、Studioで確認しながら調整し、最後にCLIで書き出す流れが基本です。

    今回のような高速モーションは、静止画だけでは良し悪しが分かりません。必ず再生して、速さ、止まり方、読みやすさを確認します。

    特に見るべきポイントは次の5つです。

    • 冒頭1秒で目が止まるか
    • タイトルが読めるか
    • フラッシュが強すぎないか
    • 最後の停止が気持ちいいか
    • XやYouTubeに載せたときに小さくても伝わるか

    まとめ

    Remotionを使うと、Reactコードでモーショングラフィックスを作れます。

    今回のような高速タイポグラフィモーションも、分解すれば難しいことばかりではありません。

    やっていることは、現在のフレームを取得し、interpolate() で数値を変え、spring() で気持ちよく着地させ、CSSのtransformやopacityへ渡しているだけです。

    大事なのは、最初から実用性だけを考えすぎないことです。

    初投稿やポートフォリオ用の作品なら、まずは「見た瞬間に止まるか」を優先しても良いと思います。

    白フラッシュ、高速カット、巨大タイポ、画面揺れ、急停止。

    こうした強い演出をRemotionでコード化できると、AI動画素材や画像生成AIで作った背景にも、作品としての見せ場を加えられます。

    今後このテンプレを本制作に進めるなら、日本語タイトル対応、音ハメ、縦型版、色違いvariant、背景差し替え対応を追加していく予定です。

    まずはRemotion Studioで動きを見ながら、title と themeColor を変えて試してみてください。

    「Reactで動画を作る」という感覚がつかめると、Remotionはかなり面白くなります。