Communitygithub.com

iamryoman/remotion-best-practices

本番環境対応のRemotionコンポジション、レンダリング、Lambda、ストア静止画を作成するためのコミュニティCodexスキルです。

remotion-best-practices とは?

このスキルは、Remotionを使用して本番品質の動画、静止画、Lambdaレンダリング、ストア公開用スクリーンショットを構築するためのベストプラクティスを提供します。プロジェクトの既存の設定を尊重しつつ、フレーム、入力プロパティ、宣言されたアセットの決定論的関数として出力を生成します。対応プラットフォームは、ローカル開発環境、Remotion Lambda、App Store、Google Playストア画像などです。スキルは、監査スクリプトの実行、適切なタイミングAPI(useCurrentFrame, interpolate, Sequence)の使用、アセット管理(staticFile, delayRender)、レンダリングループでの検証(特定フレームのレンダリング、ピクセル検査、短い範囲でのテスト)といった手順を定義し、非決定論やパフォーマンス問題を防ぎます。各コンポジションのID、寸法、FPS、期間、出力パスを実装前に明確に定義し、実装ルールとして、CSSアニメーションや壁掛け時計に依存しないこと、アセットはpublic/に置きstaticFileで参照すること、ストアターゲットごとに寸法やフォーマットを個別に検証することなどが含まれます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add iamryoman/remotion-best-practices

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Remotionベストプラクティス

Remotionの出力を、フレーム、入力プロパティ、および宣言されたアセットの決定論的関数として構築します。タスクで変更が必要な場合を除き、ユーザーの編集内容、プロジェクトの既存のパッケージマネージャー、アーキテクチャ、スタイルを保持します。

証拠から始める

  1. リポジトリの手順を読み、package.json、ロックファイル、Remotion設定、エントリポイント、登録済みコンポジション、および近くのテストを検査します。
  2. 既存のプロジェクトでは、node <skill-directory>/scripts/audit-remotion-project.mjs <project-root> を実行します。その出力を証拠として扱い、アップグレードの許可とはみなしません。
  3. APIを選択する前に、インストールされているRemotionのバージョンを記録します。すべての remotion および @remotion/* パッケージをまったく同じバージョンに維持します。2つ目のロックファイルを追加しないでください。
  4. 成果物が動画、単一の静止画、動画からサンプリングされたフレーム、またはストアスクリーンショットのバッチのいずれであるかを特定します。
  5. 実装前に、コンポジションID、寸法、FPS、期間、プロパティ、出力パス、および必要なアセットを定義します。

関連するリファレンスのみをロードする

  • <Composition>、<Still>、useCurrentFrame()、interpolate()、spring()、<Sequence>、または <Series> については、composition-and-timing.md を読んでください。
  • staticFile()、メディア、フォント、ネットワークデータ、useDelayRender()、delayRender()、または calculateMetadata() については、assets-and-async.md を読んでください。
  • CLI、renderStill()、サーバーサイドレンダリング、または Remotion Lambda については、rendering-and-lambda.md を読んでください。
  • レンダリングの遅さ、メモリ使用量の多さ、非決定論、または検証戦略については、performance-and-testing.md を読んでください。
  • App Store または Google Play の画像(screenshot-studio によって委任された 1284×2778 の出力を含む)については、store-stills.md を読んでください。
  • API またはプラットフォームのルールが変更された可能性がある場合は、コーディングする前に sources.md にリンクされているライブの一次ソースを確認してください。

絶対的な実装ルール

  • 時間は useCurrentFrame() と useVideoConfig() から導出します。レンダリングされたモーションに CSS トランジション、CSS キーフレームアニメーション、壁掛け時計タイマー、またはシードなしの乱数を使用しないでください。
  • 外挿が意図的でない限り、有限アニメーションをクランプします。タイミングを時間を表す場合は秒単位で fps を乗算して表現し、共有シーンの継続時間を集中管理します。
  • useCurrentFrame() はタイムドコンポーネント内で相対的であることを忘れないでください。グローバルな同期が意図的な場合にのみ、コンポジションルートから絶対フレームを渡します。
  • 親タイムライン上に明示的に配置するには <Sequence> を、連続したシーンには <Series> を使用します。すべてのシーンに明示的な継続時間を指定します。
  • ローカルアセットは public/ に置き、staticFile() で解決します。生の HTML タグではなく Remotion メディアコンポーネントを使用して、レンダリングがメディアを正しく待機するようにします。
  • コンポーネント内では useDelayRender() を優先します。ハンドルを1回作成し、正確に1回クリアし、失敗した場合は cancelRender(error) を呼び出します。レンダリングごとに1回プロパティやメタデータを決定するために必要なデータには calculateMetadata() を優先します。
  • レンダリング時のコードは、ヘッドレス Chromium や Lambda では利用できないブラウザ専用の前提条件がないようにします。AWS 認証情報やその他のシークレットをブラウザバンドルに公開しないでください。
  • ストアターゲットごとに、寸法、ファイル形式、アルファチャンネルポリシー、およびプラットフォーム固有のルールを独立して検証します。1つのポートレートサイズが Apple と Google の両方で受け入れられるとは決して想定しないでください。

タイトなレンダリングループで作業する

  1. 型チェックを実行し、焦点を絞ったテストを実行します。
  2. 代表的な静止フレーム(開始フレーム、各シーンの境界、モーションの中間点、最後のフレーム)をレンダリングします。
  3. Studio プレビューだけでなく、実際のピクセルを検査します。クリッピング、テキストの折り返し、安全マージン、欠落したアセット、透明な背景を確認します。
  4. 完全な高価な動画の前に、短いフレーム範囲または低スケールのドラフトをレンダリングします。
  5. 盲目的に最大化するのではなく、デプロイマシン上の同時実行数をベンチマークします。
  6. 明示的なコンポジション ID、プロパティ、出力パス、寸法、および形式で最終成果物をレンダリングします。
  7. 終了ステータス、ファイルの存在、ピクセル寸法、関連する場合は継続時間/フレーム数、および最終的な視覚サンプルを確認します。

変更は控えめに行う

  • タスクで必要な場合、またはユーザーが承認した場合を除き、Remotion のアップグレード、プロジェクト構造の書き換え、またはメディアコンポーネントの交換を行わないでください。
  • 新しい API はインストールされているバージョンでゲートし、実用的な場合は互換性のあるフォールバックを提供します。
  • 任意のタイムアウトを増やしてレンダリングの失敗を隠さないでください。まず、未解決のハンドル、ネットワークリクエスト、アセット、フォント、またはメディアデコードを特定します。
  • 同等のレンダリングからの測定値なしに、パフォーマンスの改善を主張しないでください。

関連スキル