Claude CodeでFinal Cut Proを効率化!|初心者でも字幕生成・自動トリム・お気に入り素材登録を作れた|動画編集が超快適に!

みなさんはAIを使っているでしょうか。

僕は最近自分でいろんなツールを作れるようになったことに気がついてからびっくりするほど使い出しました。

ちょうどWEBで動くツールは作ったばかりなのですが、それだけにとどまらず、iPadやMacで動くアプリも作れるほど。

さらに今感動しているのが僕がメインで使っている動画編集ツールであるFinal Cut Proのツールを自分で作れるようになったこと!

これまで動画編集を独学でやってきて、本当はいろいろできるだろうしこんなこともあんなことも不満があるけどわからない、みたいな長年の悩みをあっという間に解決しまくっています!

動画編集をやっている人もそんなに多くないかもしれないですが、あまりにもずっと悩んでいたものの、解決の糸口をずっと掴めずに長年悩んでいたことだらけなので、今AIを使ってどんなことができたのかを共有しておきます。

動画編集を普段しない人については、動画編集ソフトですらこんなアプリ開発ができてしまうのか、みたいな参考にしてもらえると嬉しいです。

自分の使っているツールに何かツールを読み込む余地があるなら意外といろんなことができるようになっているかもしれません。

専門家の人は「ここは気をつけろ」とか「もっとこうした方がいいよ」とかあれば優しく教えてください。

使っているツール

今回の開発については7割Claude Code、3割Codexみたいな感じで進めました。

Claude Codeが最近話題なので名前くらいは聞いたことがある人も多いと思いますが、これはパソコンを操作してアプリ開発とかも自動で行ってくれてしまうようなツール。

Codexに関しても似たようなツールで、これはCodexとChatGPTと同じ会社のツールというか、ChatGPTの有料プランにするとあわせてCodexも使用上限上がるみたいな同様サービスのなかで動くツール。

どちらに関してもチャット的なAIも使えるし、アプリ開発が得意なAIも使えるといったところ。

正直どちらがどのように良いのかがわからないのですが、体感ベースが下記。

  • Claude Code:初手のデザインがCodexよりも良いものが出てくる
  • Codex:使用上限がちょっと緩い(気がする)

とりあえずデザインの構想とかが決まってないないなら初手はClaude Codeに任せた方が良い感じのデザインが出てくるような印象で、その後の開発については非エンジニアとしては違いがわからないといったところ。

今回はデザイン性とかUIも使いやすいのが良かったので、とりあえず最初はClaude Codeに任せました。

デザイン以外の使い分けとしては意外と実装に詰まったときに、Claude CodeではできないけどCodexではできたとか、逆にCodexではできなかったけどClaude Codeではできたみたいなことがちょこちょこありました。

自分に知識があれば1つのツールで解決だったのかもしれないですが、今回のアプリ開発においては2つの使い分けができて良かったなと思っています。

あとはそれぞれ3000円くらいのプランに入っているのですが、ガッと使ったときに制限がきがちだったので、Claude Codeが制限きそうならCodexに引き継ぎ、Codexが制限きそうになったらClaude Codeに引き継ぎみたいな感じで作業していました。

作ったツールの紹介

ここからは主に作った4つのツールについて紹介します。

今回主に僕が普段から愛用している動画編集ソフトのFinal Cut Proで動作するツールを作りました。

独学なのが悪いのですが、本当にFinal Cut Proの使い方がわからないことが多くて、これまでほぼデフォルト状態くらいで動画編集を戦ってきました。

それがAIを活用することで、探してもわからないし、あったとしても実装が謎すぎる状態からようやく時間が動き出した感じがします。

どのツールに関しても、半日くらいでまともに動くところまで実装できました。

もう欲しい機能をチャットでまず壁打ちして、内容が固まったら実際に作るみたいな手順で進めています。

今回作ったツールについて、本当は配布したいくらいの気持ちなのですが、エンジニアでもなくて自分以外の環境での動作確認とかそもそも配って良いような技術仕様になっているのかまったくわからないので、ツール自体の配布はできません。

とはいえ何にもないのも残念な気がするので、公開できるツールに関しては完成に対してこんな感じのプロンプトで伝えると良さそう、みたいなのは公開しておこうと思います。

プロンプトと合わせてこの動画のスクショとかをAIに投げるとかなり近いものが作れるのではないかと思うので、気になった人はやってみてください。

ただし、不具合が出て動かなくなったとか、上手くいかなかったとかは責任取れないので、あくまで自己責任でお願いします。(多分ないとは思いますが)

一応AIに頼んでClaude CodeとかCodexに入れると似たような方向性で作れるようなプロンプトにしました。

で、今回作ったツールに戻りますが、主に4つのツールを制作。

それが下記となります。

  • サムネイル自動取得
  • 一括トリムツール
  • お気に入り素材保存
  • 字幕生成

それぞれ僕がこれまで不満があったけどできなかったこととか、あったら便利なツールなので、「こんなことが実装できるのか、やってみよ」みたいな形で参考にしてもらえると嬉しいです。

今回はFinal Cut Proベースで話していますが、Final Cut Proができるということはあんまり詳しくないですがpremierとかダヴィンチとかでも似たようなことができる気がするので、普段使っているソフトが違う人は少し角度を変えて試してみてください。

サムネイル自動取得

まず最初に作ったのがこのツール。

制作のきっかけはFinal Cut Pro用のツールでめちゃくちゃお世話になっているかまけんさんの動画とXのポストでトバログさんが取り上げていたツールをみたこと。

ツールの概要としてはYouTubeのURLを入力するとサムネの画像を取得してくれます。

たまに詳しくはこの動画で、みたいな時に使うとき、既存のSSDから探すのがめんどうな場合とか保存媒体持ってないときに、それをURLだけで簡略化できるツール。

そもそもとしてFinal Cut Pro用のプラグインをAIで作れないか考えたことはありました。

ただ、タイトルとかエフェクトみたいなものに関してはMotionというエフェクト生成ツールでいろいろ調整しないといけないのでちょっと開発コストが高いというところで断念。(今はAIが対応して楽にできるのかもしれないですが)

というところでツール作りは諦めていたのですが、かまけんさんの動画を見ると僕の知らないFinal Cut Proの機能拡張という機能を使っていました。

これまでタイトルとかエフェクトにプラグインというか読み込んでいろいろ使えるのは知っていたのですが、Final Cut Proに写真を読み込むみたいな機能をツールとして実装できるなんてまったく知りもせず。

こんなことがFinal Cut Proでもできたのか!と感心して、ふと思ったのが「Final Cut Pro内で動くツールならAIでも作れるのでは…?」ということ。

予感的中で、このツールの制作自体はAIでも十分に開発ができました。

実際に動いているので見てもらえれば分かると思いますが、Final Cut Proのなかにまで組み込めるデータの開発をどんどん進めてくれて、半日程度でアプリを制作完了。

実装の手順としては動画とかXのポストの画面を見てどんな挙動をしているのか、どのような機能が欲しいのかを日本語で伝えただけ。

僕は現在自分用に作って使ってしまっていますが、このアプリ自体はかまけんさんが販売をしているので、気になった方は購入してみてください。

一括トリムツール

機能拡張ができることに味を占めて次に手を出したのが一括トリムツール。

ほんのりVlogとかをとることに憧れがあるのですが、いつもめんどうになって辞めてしまう理由は細切れのカットの編集が大変だから。

1〜5秒くらいのカットを延々と繋ぎ合わせるあの作業、とんでもない工数だと思います。

普段Vlogとかガジェットレビュー以外の動画というのはほとんど出さないのですが、つい先日行った写真の展示会の動画を編集した際、音楽にあわせてカットを貼り付けるだけの動画でしたが、タイミングよく延々と合わせていくのはそれなりに大変でした。

そこで思ったのが一括で決められた秒数にカット一律にカットするツールが作れないかということ。

このツールを使うと指定範囲の動画を一律同じ秒数でカットができます。

だから使うシーンの始まりだけ決めておけば、あとは同じ秒数でひたすらカットを繰り返してくれます。

ひとまず5秒繋ぎのVlogを作るとかであれば、並び順と使い出しのところだけ決めておけば一瞬で良い感じの切り替え多数の動画が生成。

細かい調整はあとから自分でクリップを引き伸ばして対応することもできるので、ざっくり全体像を作り出すこともできれば、もうこのまま音楽をつけて、簡単Vlogを作り出すこともできます。

動画編集にしても作業工数がへりますし、簡略的なVlogなら短く繋ぐだけでも様になるので、これなら僕もさくっと撮ってひとまずVlog風に仕立てていろいろ投稿して楽しむ、なんてことができそうです。

使い方も簡単で、とりあえず素材をバッと集めたファイルをFCPXMLで書き出し→そのデータを機能拡張で呼び出したツールに読み込み→あとは何秒ごとに切るのかと、範囲選択をして出力すれば細切れカットの完成です。

あっというまにたくさん画が切り替わる動画データのできあがり!

このツール自体は探せばツールをすでに作っている人もいるかもしれませんが、僕は見つけられず独自で考えたツールになるので、プロンプトを公開しておきます。

# ClipTrimmer 公開用試作プロンプト

このドキュメントは、Codex / Claude Code などのコーディングAIに貼り付けて、Final Cut Pro向けの一括クリップトリムツールを試作するための公開用プロンプトです。YouTubeなどで見てくれた人が、自分のMac環境で安全に試せることを優先しています。

ローカルPCのパス、個人名、メールアドレス、パスワード、証明書、署名情報、開発者アカウント情報、既存プロジェクト固有のBundle IDは含めないでください。アプリ名、Bundle ID、保存先パスは実行する人の環境に合わせて置き換えてください。

## 免責事項

本ドキュメントは、生成AIを用いたアプリ試作のためのサンプルプロンプトです。本プロンプトの利用、およびAIによって生成されたコードの実行によって生じた、いかなる損害(データの消失、FCPプロジェクトの破損、PCの不具合など)についても、製作者は一切の責任を負いません。すべて利用者の自己責任(個人の範囲)においてご利用ください。

実際の編集データに使う前に、必ずFinal Cut Proのライブラリ・プロジェクト・書き出したFCPXMLをバックアップしてください。最初は小さな検証用プロジェクト、またはコピーしたFCPXMLだけで動作確認してください。

## コピペ用プロンプト

あなたはmacOSアプリ開発に詳しいシニアエンジニアです。

Final Cut Proのタイムライン上にある複数のクリップを、指定した秒数で一括トリムするmacOS向けツール「ClipTrimmer」を作ってください。

目的は配布用の完成品ではなく、個人のMacで動く試作品です。

安全性を優先し、秘密情報・個人情報・署名証明書・開発者アカウント情報をコードやドキュメントに書かないでください。

このツールはFCPXMLを書き換える試作です。元のFCPライブラリ、元の動画・画像・音声ファイル、元のFCPXMLは変更しない非破壊設計にしてください。必ずコピーを書き出し、ユーザーがFinal Cut Proへ手動で読み込む流れにしてください。

### 解決する課題

Final Cut Proには「選択範囲内のクリップを一律N秒に揃える」機能が存在しない。

大量のクリップを手動でトリムする作業を自動化する。

### 想定環境

– macOS向けアプリ

– Swift / SwiftUI / MVVM

– Xcodeでビルドできる構成

– 可能ならFinal Cut Pro Workflow Extensionとして動く構成

– ただし最初は通常のmacOSアプリとして完成させ、Workflow Extension化は後回しでもよい

– 外部ライブラリ不使用(Foundationのみで完結させる)

– ネットワーク接続不要

### 動作フロー

“`

① FCP: File > Export XML でタイムラインを .fcpxml として書き出す

② ClipTrimmer: fcpxmlファイルをドロップ(または選択)

③ ClipTrimmer: 対象範囲(開始〜終了)と最大クリップ長を入力

④ ClipTrimmer: 対象クリップをプレビューリストで確認・個別チェック

⑤ ClipTrimmer: 「トリムを実行」ボタンで処理

⑥ 処理済み .fcpxml を元ファイルとは別名で書き出し

⑦ FCP: File > Import XML で読み込む

“`

### ファイル構成

“`

ClipTrimmer/

├── Config/

│   ├── App-Info.plist

│   ├── ClipTrimmer.entitlements

│   ├── ClipTrimmerWorkflowExtension.entitlements

│   └── WorkflowExtension-Info.plist

├── Sources/

│   ├── App/

│   │   └── ClipTrimmerApp.swift

│   ├── Shared/

│   │   ├── ClipTrimmerRootView.swift

│   │   ├── ClipTrimmerViewModel.swift

│   │   ├── FCPTime.swift

│   │   ├── FCPXMLParser.swift

│   │   ├── ClipTrimmer.swift

│   │   └── FCPXMLExporter.swift

│   └── WorkflowExtension/

│       └── WorkflowViewController.swift

├── Tests/

│   └── ClipTrimmerTests/

│       └── FCPTimeTests.swift

├── project.yml

└── README.md

“`

### 各モジュールの仕様

#### FCPTime.swift

FCPXMLの時間値(有理数形式)を扱う構造体。フレームずれを防ぐために元の分母を維持する。

“`swift

struct FCPTime: Equatable, Comparable {

    let numerator: Int64

    let denominator: Int64

    var seconds: Double { … }

    static func parse(_ string: String) -> FCPTime?   // “1001/30000s”, “10s”, “0s” を解析

    func fcpxmlString() -> String                      // “1001/30000s” 形式で出力

    static func fromSeconds(_ seconds: Double, denominator: Int64) -> FCPTime

    static func frameBoundary(seconds: Double, frameDuration: FCPTime) -> FCPTime  // フレーム境界に切り捨て

}

“`

#### FCPXMLParser.swift

FCPXMLを読み込み、spineのクリップ情報を抽出する。

– `clip` / `asset-clip` を対象(`ref-clip` はスキップ)

– XMLElementへの参照を保持し、後から直接書き換え可能にする

– `.fcpxmld`(バンドル形式)にも対応する(内部の `.fcpxml` を自動検出)

– `<sequence duration>` からタイムライン全体の長さを取得

– `<format frameDuration>` からフレーム長を取得

“`swift

struct ClipInfo {

    var element: XMLElement

    let name: String

    var offset: FCPTime    // タイムライン上の配置位置

    var duration: FCPTime  // クリップの長さ

    var start: FCPTime     // ソース素材のin点

    var isChecked: Bool    // トリム対象かどうか

}

struct ParseResult {

    let document: XMLDocument

    var clips: [ClipInfo]

    let timelineDuration: FCPTime?

    let frameDuration: FCPTime?

}

“`

#### ClipTrimmer.swift

トリムロジック本体。

– `isChecked == true` のクリップのみ処理

– `frameDuration` が取得できればフレーム境界に丸めて警告を防ぐ

– `removeGaps: true` のとき、トリムで生まれた空白を後続クリップのoffsetをずらして詰める

– `start`(in点)は変更しない

“`swift

struct ClipTrimmer {

    @discardableResult

    func trim(clips: inout [ClipInfo], maxDuration: Double, frameDuration: FCPTime?, removeGaps: Bool) -> Int

}

“`

**フレーム境界への丸め(警告防止):**

“`swift

// maxDurationSeconds を frameDuration で割り切れるフレーム数に切り捨て

let frameCount = Int64(maxDurationSeconds / frameDuration.seconds)

let trimmedDuration = FCPTime(

    numerator: frameCount * frameDuration.numerator,

    denominator: frameDuration.denominator

)

“`

**ギャップ詰め処理:**

Phase 1: 各クリップのdurationを書き換え、削減量(gap)を記録する

Phase 2: 累積gapを後続クリップのoffsetから引いてタイムラインを詰める

#### FCPXMLExporter.swift

処理済みXMLを書き出す。

– 保存先: 既定ではユーザーのDownloads配下の `ClipTrimmer` フォルダ。可能なら保存先をユーザーが選べるようにする

– ファイル名: `{元のファイル名}_trimmed.fcpxml`

– 元ファイルは変更しない

– 既存ファイルを上書きしそうな場合は、確認するか連番を付ける

– 書き出し後、処理したクリップ数と出力先だけを表示する。読み込んだローカルファイルの絶対パスをログに大量表示しない

#### ClipTrimmerViewModel.swift

“`swift

@MainActor

final class ClipTrimmerViewModel: ObservableObject {

    @Published var droppedFileURL: URL?

    @Published var rangeStart: Double  // didSet で updatePreview() を呼ぶ

    @Published var rangeEnd: Double    // 初期値は十分大きな数(全体をカバー)

    @Published var maxDuration: Double

    @Published var statusMessage: String

    @Published var isProcessing: Bool

    @Published var previewClips: [ClipInfo]

    @Published var timelineDuration: Double

    @Published var removeGaps: Bool

    @Published var outputURL: URL?

    func handleDroppedFile(_ url: URL)

    func chooseFile()

    func setFullRange()       // タイムライン長を終了秒に自動セット

    func updatePreview()      // 範囲・秒数が変わるたびにpreviewClipsを再生成

    func selectAll()

    func deselectAll()

    func chooseOutputFolder()

    func runTrim()            // allClipsベースでギャップ詰めを含む処理を実行

}

“`

### UI仕様

“`

┌──────────────────────────────────────┐

│  ClipTrimmer                         │

├──────────────────────────────────────┤

│ ┌────────────────────────────────┐   │

│ │  FCPXMLをここにドロップ         │   │

│ │     [ファイルを選択]            │   │

│ └────────────────────────────────┘   │

│                                      │

│ 対象範囲(MM:SS形式)  最大クリップ長  │

│ 開始[    ] 終了[    ] [全体]  [    ]  │

│                                      │

│ プレビュー  6クリップ中 5個対象        │

│ [全選択] [全解除]                     │

│ [✓] トリム後の空白を詰める             │

│ ─────────────────────────────────    │

│ ☑ DJI_0022  20.1s  → 5s   ← オレンジ│

│ ☑ C1143     12.1s  → 5s             │

│ ☐ C1144      3.2s   ―    ← グレー   │

│ ─────────────────────────────────    │

│                                      │

│ [    トリムを実行(5クリップ)   ]    │

│                                      │

│ ステータス: 処理済み 5クリップ          │

└──────────────────────────────────────┘

“`

#### 時間入力フィールドの仕様

– デフォルトは空欄(プレースホルダーで `0:00` をグレー表示)

– `120` と入力してEnterを押すと `2:00` に自動変換

– `1:30` のようにMM:SS形式でも直接入力できる

– H:MM:SS形式にも対応

– 空欄のままEnterを押しても現在の値を維持する

– 「全体」ボタンを押すと、読み込んだFCPXMLのタイムライン長で自動入力される

#### プレビューリストの仕様

– `duration > maxDuration` のクリップ → デフォルトでチェックあり(オレンジ)

– `duration ≤ maxDuration` のクリップ → デフォルトでチェックなし(グレー)

– チェック状態は個別に変更可能

– 開始/終了/最大クリップ長の変更時にリアルタイム更新

– 実行ボタンのラベルはチェック数を反映: `トリムを実行(5クリップ)`

– チェックが0件のときはボタンをdisabledにする

– 各行には「元の長さ」「変更後の長さ」「短くなる秒数」を表示する

– 処理対象外のクリップは、なぜ対象外なのかが分かるように色や短いラベルで区別する

#### 実行前確認

– 実行前に、変更対象のクリップ数、最大クリップ長、ギャップ詰めの有無、出力予定ファイル名を確認できるようにする

– 元ファイルは変更しないことをUI上でも明示する

– 可能なら、処理前後のFCPXMLを簡易検証し、XMLとして壊れていないことを確認してから保存する

### プロジェクト構成の方針

Xcodeプロジェクト、Swift Package、xcodegenのどれで作ってもよいです。xcodegenを使う場合でも、公開用のサンプルにはApple Developer Team ID、個人や組織のBundle ID、証明書名、署名設定を固定で書かないでください。

推奨するターゲット構成:

– `ClipTrimmer`: 通常のmacOSアプリ

– `ClipTrimmerWorkflowExtension`: 可能なら追加するFinal Cut Pro Workflow Extension

– `ClipTrimmerTests`: 時間計算、XML解析、トリム処理のユニットテスト

Bundle IDは `com.example.ClipTrimmer` のようなサンプル値にしてください。署名・Team ID・公証・配布設定は、実装とは別タスクとして扱い、利用者が自分のXcode上で設定する前提にしてください。

Workflow Extensionを実装する場合は、Final Cut ProとProExtension.frameworkが存在しない環境でも通常アプリとテストはビルドできるように分離してください。

### サンドボックス権限

| 権限 | 理由 |

|——|——|

| `files.user-selected.read-write` | NSOpenPanelで選んだfcpxmlの読み取り |

| `files.downloads.read-write` | ~/Downloads/ClipTrimmer/ への書き出し |

ネットワーク接続は不要。外部APIは使用しない。

### 実装上の注意

– FCPXMLのバージョンに注意(1.11〜1.14が現在の主流)

– 新しいFCPは `.fcpxml` ではなく `.fcpxmld`(バンドル形式)で書き出す。`fcpxmld`の中に`Info.fcpxml`または`{名前}.fcpxml`が入っている

– FCPXMLの時間値は有理数形式(例: `1001/24000s` = 23.98fpsの1フレーム)。Doubleに変換して計算すると誤差が生まれるので、分母を維持した整数演算を優先する

– フレーム境界に合わない`duration`を書き込むとFCPが警告を出す。`<format frameDuration>`を読み取って最近傍フレームに切り捨てること

– ギャップ詰め処理では「全クリップのoffset」を修正する必要があるため、処理範囲外のクリップも含めて修正する

– Workflow Extensionでは`NSOpenPanel`は動作するが、`APPLICATION_EXTENSION_API_ONLY: YES`の制約がある

– Shared層のコードをアプリとExtensionの両ターゲットで共有し、同じUI/ロジックをそのまま流用する

– 実装が難しい場合は、Workflow Extensionを無理に作らず、通常アプリでFCPXMLを読み込み・プレビュー・別名保存できるところまでを優先する

– 仕様が不明なXML要素は削除しない。未知の要素や属性はそのまま保持する

– XMLの整形でFinal Cut Pro固有の構造を壊さないよう、対象要素の必要な属性だけを書き換える

### 安全性の要件

– パスワード、APIキー、トークン、証明書、秘密鍵、Apple Developerアカウント情報を扱わない

– ローカルPCのユーザー名や絶対パスをドキュメントやコードに固定しない

– Bundle IDはサンプル値にする。実在する個人や組織のIDを使わない

– 元のFCPXMLファイル(書き出し元)を変更・削除しない

– 書き出すのは `_trimmed.fcpxml` のみ。上書きはatomic writeで行う

– 読み込んだ動画・画像ファイルは一切加工しない

– ネットワーク通信、外部API、クラウド保存、利用状況送信は実装しない

– 解析したFCPXMLの中身やローカルファイル名を、外部サービスに送らない

– ログやREADMEに、ユーザーの実ファイルパス、素材名、プロジェクト名が残らないようにする

– 失敗時は元ファイルを触らず、エラーメッセージと復旧方法だけを表示する

### 受け入れ条件

– アプリが起動できる

– `.fcpxml` / `.fcpxmld` の両形式を読み込める

– 対象範囲内のクリップがプレビューリストに表示される

– チェックを個別に変更できる

– 「トリムを実行」で `_trimmed.fcpxml` が生成される

– FCPで読み込んだとき、指定秒数以下にトリムされている

– FCPの「フレーム境界」警告が出ない

– 元のfcpxmlファイルが変更されていない

– 元の動画・画像・音声ファイルが変更されていない

– XMLとして読み直せるファイルが出力される

– 出力前に、変更対象数と出力ファイル名を確認できる

– 可能ならWorkflow ExtensionとしてFCPのパネルに表示できる

### 進め方

1. `FCPTime.swift` から実装する(有理数演算の基盤)

2. `FCPXMLParser.swift` でXML読み取りを実装する

3. `ClipTrimmer.swift` でトリムロジックを実装する

4. `FCPXMLExporter.swift` で書き出しを実装する

5. `FCPTimeTests.swift` で基本ケースを検証する

6. `ClipTrimmerViewModel.swift` で各モジュールを繋ぐ

7. `ClipTrimmerRootView.swift` でUIを実装する

8. `WorkflowViewController.swift` でFCP拡張として組み込む

9. ビルド確認・テスト・README作成を行う

## 公開前チェックリスト

公開前に、共有するファイルに以下が含まれていないか確認してください。

– 自分のMacのユーザー名を含む絶対パス

– ユーザー名・メールアドレス

– Apple Developer Team ID(英数字10桁)

– 個人や組織の実Bundle ID

– パスワード、APIキー、トークン、秘密鍵、証明書

– `.xcuserdata` やユーザー固有のXcode設定ファイル

– 実在する動画・画像ファイルのパス

– 配布用署名や公証に関する個人設定

– `project.pbxproj` の中に含まれるTeam IDやユーザー名

公開するなら、このファイル単体、またはこの内容をGitHub/Google Docs等に貼り付けて共有するのが安全です。

`project.pbxproj` は共有しないでください(Team IDが含まれる場合があります)。

お気に入り素材保存

いつも地味に時間がかかるのがいつも使う素材の呼び出し。

よく出る画像とか動画というのがあるのですが、これの管理がややめんどう。

もちろん今も素材ライブラリは作っているのですが、これは開くのが重かったり、素材を管理するのには微妙に使いにくかったり、いつも使っていてあまりスムーズさを感じていませんでした。

そこで作ったのがこのお気に入りの素材を集めておくパレットアプリ。

アプリを開くと「お気に入り」「画像」「動画」「音楽」みたいに大まかなジャンル分けがあり、ジャンルごとに素材を保存。

特によく使う素材はお気に入り登録ができる仕様。

保存した素材はドラック&ドロップでタイムラインに反映させられます。

これによってさまざま動画の素材を一括のアプリで管理できるうえ、簡単に呼び出して使えます。

順序も変えられるようにしたので、よく使うものは見やすく触りやすいとことに設置することもできるようにしました。

あとまだ詰められていませんが、フォルダ機能も持たせて、頻繁に使わないけどあって欲しいみたいな素材も散らばらずにまとめておけるようにする予定です。

Pasteというアプリではテロップの形式とかも保存できるようなのでテロップまでは保存できない僕のこのアプリは制限はありますが、一度作ってしまえば無料なのはかなり大きなメリット。

# Final Cut Pro 素材パレットアプリ 試作用プロンプト

このドキュメントは、Codex / Claude Code などのコーディングAIに貼り付けて、Final Cut Pro向けの素材管理パレットアプリを試作するための公開用プロンプトです。

ローカルPCのパス、個人名、パスワード、証明書、署名情報、開発者アカウント情報、既存プロジェクト固有のBundle IDは含めないでください。アプリ名、Bundle ID、作者名、保存先パスは実行する人の環境に合わせて置き換えてください。

## 免責事項

本ドキュメントは、生成AIを用いたアプリ試作のためのサンプルプロンプトです。本プロンプトの利用、およびAIによって生成されたコードの実行によって生じた、いかなる損害(データの消失、PCの不具合など)についても、製作者は一切の責任を負いません。すべて利用者の自己責任(個人の範囲)においてご利用ください。

## コピペ用プロンプト

あなたはmacOSアプリ開発に詳しいシニアエンジニアです。

Final Cut Proで動画編集をするときによく使う画像・動画・音楽素材を登録し、素早く探してタイムラインへドラッグできる「素材パレット」アプリを作ってください。

目的は、配布用の完成品ではなく、個人のMacで動く試作品です。

安全性を優先し、秘密情報・個人情報・署名証明書・開発者アカウント情報をコードやドキュメントに書かないでください。

### 想定環境

– macOS向けアプリ

– Swift / SwiftUI

– Xcodeでビルドできる構成

– 可能ならFinal Cut Pro Workflow Extensionとして動く構成

– FCP連携が難しい場合は、まず通常のmacOSアプリとして素材管理・検索・ドラッグ機能を実装し、Workflow Extension化は段階的に進める

### 作りたいアプリの概要

Final Cut Proの編集作業中に、よく使う素材を一覧管理する小さなパレットアプリを作りたいです。

ユーザーは画像、動画、音楽ファイルをアプリに登録できます。

登録した素材はカテゴリ別に表示され、検索、名前変更、お気に入り、フォルダ整理、並び替えができます。

素材のサムネイルをFinal Cut Proのタイムラインへドラッグすると、そのファイルを直接配置できることを目指します。

### 主要機能

1. 素材登録

   – ファイル選択ダイアログから画像・動画・音楽ファイルを複数追加できる

   – アプリ画面へのファイルドロップでも追加できる

   – 追加時にファイル種別からカテゴリを自動判定する

   – サンドボックス環境でも後から参照できるよう、Security-Scoped Bookmarkを保存する

2. カテゴリ表示

   – サイドバーに「お気に入り」「画像」「動画」「音楽」を表示する

   – お気に入りはカテゴリとは別の表示モードとして扱う

   – 画像・動画・音楽は素材カテゴリとして扱う

3. 一覧表示

   – 各素材を1行で表示する

   – サムネイル、表示名、カテゴリ、操作ボタンを表示する

   – 画像と動画は可能ならサムネイルを生成する

   – 音楽などサムネイルが作れないものはアイコン表示でよい

4. 検索

   – 表示名で絞り込みできる

   – 検索は現在選択している表示モード内で行う

5. お気に入り

   – 星ボタンでお気に入りを切り替えられる

   – お気に入りタブでは、カテゴリをまたいでお気に入り素材だけを表示する

   – サイドバー選択ではnilをお気に入りとして扱わず、明示的なenumなどで「お気に入り」と「カテゴリ」を分ける

6. 名前変更

   – 素材の表示名を変更できる

   – 実ファイル名は変更しない

   – ダブルクリックまたはコンテキストメニューから編集できる

7. 並び替え

   – 登録順の表示時に、素材一覧内でドラッグして順番を入れ替えられる

   – 名前順ソート中はソート結果を優先し、手動並び替えは無効でよい

   – 並び替えは永続化する

   – Final Cut Proのタイムラインへドラッグする操作と、アプリ内で順番を変えるドラッグ操作が混ざらないようにする

   – 例: サムネイルのドラッグはFCPへ渡す、行の左端ハンドルや行移動UIはアプリ内並び替えに使う

8. ソート

   – 登録順

   – 名前順 昇順

   – 名前順 降順

   – 手動並び替えは登録順のときだけ有効

9. フォルダ整理

   – 各カテゴリの中にフォルダを作成できる

   – フォルダは画像・動画・音楽それぞれのカテゴリに所属する

   – 素材は同じカテゴリ内のフォルダに移動できる

   – フォルダに入っていない素材は「未整理」として表示する

   – フォルダは開閉できる表示にする

   – フォルダを削除すると、中の素材は削除せず「未整理」に戻す

10. 削除

    – 素材を一覧から削除できる

    – 削除するのはアプリの登録情報だけで、元ファイルは削除しない

11. Final Cut Pro連携

    – まずはサムネイルや行の一部をドラッグしたときに、元ファイルURLをNSItemProviderで渡し、FCPタイムラインへ配置できることを目指す

    – 可能ならFinal Cut Pro Workflow Extensionとして登録し、FCP内の拡張パネルとして表示できるようにする

    – FCPXMLでイベントブラウザへ追加する補助機能を実装してもよい

    – FCPXMLを作る場合、asset要素にsrc属性を直接書かず、media-rep側にファイルURLを書く

    – uidは素材ごとの安定したUUIDを使い、毎回ランダム生成しない

### 推奨データモデル

“`swift

enum AssetCategory: String, Codable, CaseIterable {

    case image

    case video

    case music

}

struct AssetItem: Identifiable, Codable {

    let id: UUID

    var name: String

    var category: AssetCategory

    var fileURL: URL

    var isFavorite: Bool

    var folderID: UUID?

    var bookmarkData: Data

}

struct AssetFolder: Identifiable, Codable, Hashable {

    let id: UUID

    var name: String

    var category: AssetCategory

}

enum SidebarSelection: Hashable {

    case favorites

    case category(AssetCategory)

}

“`

### 永続化

– 試作段階ではUserDefaults + JSON Codableでよい

– 素材一覧とフォルダ一覧は別々に保存してよい

– ファイルアクセスはSecurity-Scoped Bookmarkを使う

– Bookmarkが解決できない場合は、ユーザーに再登録やファイル確認を促す

– 元ファイルを勝手に移動・削除・上書きしない

### UIの希望

– 左にサイドバー、右に素材一覧

– 上部に検索欄、フォルダ作成ボタン、ソートメニュー

– 中央に素材リスト

– 下部に素材追加ボタンとステータスメッセージ

– 1行の素材表示には以下を含める

  – 並び替え用ハンドル

  – サムネイルまたはアイコン

  – 表示名

  – カテゴリ

  – お気に入りボタン

  – フォルダ移動メニュー

  – FCPへ追加する補助ボタン

  – 削除ボタン

– 操作の意味が混ざらないよう、FCPへのドラッグとアプリ内並び替えドラッグのUIを明確に分ける

### 実装上の注意

– 最初に小さく動くものを作り、ビルド確認を必ず行う

– macOS Sandboxを前提にする

– Workflow Extensionターゲットと通常アプリターゲットで使えるAPIの違いに注意する

– App Extensionでは使用できないAPIをExtension側で呼ばない

– FCPやProExtensionHost.frameworkがない環境でも、通常アプリ部分だけはビルド・検証できるように分離する

– テスト可能なロジックはViewから切り出す

– ファイル追加、カテゴリ判定、検索、お気に入り、フォルダ移動、並び替えはユニットテストしやすい構造にする

### 安全性の要件

– パスワード、APIキー、トークン、証明書、秘密鍵、Apple Developerアカウント情報を扱わない

– ローカルPCのユーザー名や絶対パスをドキュメントやサンプルに固定しない

– Bundle IDはサンプル値にする。実在する個人や組織のIDを使わない

– 元ファイルを削除・移動・編集しない

– アプリが保存するのは登録情報とBookmarkだけにする

– 配布や署名・公証については、実装とは別タスクとして扱う

### 受け入れ条件

– アプリを起動できる

– 画像・動画・音楽を登録できる

– カテゴリ別に表示できる

– お気に入りが正しく表示される

– 検索できる

– 名前変更できる

– 登録順でドラッグ並び替えでき、再起動後も順番が残る

– フォルダを作成し、素材を移動し、開閉表示できる

– 素材削除で元ファイルが消えない

– 可能な範囲でFCPタイムラインへドラッグできる

– ビルド手順と既知の制限がREADMEに書かれている

### 進め方

1. プロジェクトを作る

2. データモデルと保存処理を作る

3. 素材追加とカテゴリ判定を作る

4. サイドバー、検索、一覧UIを作る

5. お気に入り、名前変更、削除を作る

6. 登録順の並び替えを作る

7. フォルダ機能を作る

8. FCPへのドラッグ連携を作る

9. 可能ならWorkflow Extension化する

10. ビルド確認、簡単なテスト、README作成を行う

まずは通常のmacOSアプリとして動く最小版を完成させ、その後Final Cut Pro連携を追加してください。

## 公開前チェックリスト

公開前に、共有するファイルに以下が含まれていないか確認してください。

– 自分のMacの絶対パス

– ユーザー名

– メールアドレス

– Apple Developer Team ID

– 個人や組織の実Bundle ID

– パスワード、APIキー、トークン、秘密鍵、証明書

– `.xcuserdata` やユーザー固有のXcode設定

– 実在する素材ファイルのパス

– 配布用署名や公証に関する個人設定

公開するなら、このファイル単体、またはこの内容をGoogle Docs等に貼り付けて共有するのが安全です。

字幕生成

この手のツールでは必ずと言っていいほど大人気な字幕生成ツール。

これも半日くらいでアプリとして作ることができました。

これについてはFCPの機能拡張として作ることが難しかったので、アプリとして完成させました。

使い方としては動画ファイルを読み込ませると文字起こし開始、そして適正なカットと字幕を生成し、FCPXMLで出力したデータを読み込ませると元データに対応したテロップが使えます。

今回自分用に作ったこのアプリにはいろいろとこだわりを詰め込みました。

というのも、これまで自動字幕生成自体は機能としてはありました。

しかし、ガジェットの複雑なメーカー名は認識しづらいとか、お気に入りのテロップを使えないとか、表記の修正が手間すぎるなど、このあたりの悩みがあったからこそなかなか字幕生成には踏み出せず。

今回はその辺りの懸念を根こそぎ解決しました。

まず表記についてですが、今回文体ルールを読み込ませられるようにしました。

例えば僕は子供とは基本的に文章でも書かずに子どもと書いています。

こだわる必要はないのかもしれないですが、子供の場合は供物的な意味があるから、子どもの方が望ましいとか聞いた気がします。

他には〜するうえ、みたいなときにこの場合は上にのっているわけではないからひらがなにしておくとか、こういった自分が気をつけたい表現ルールを読み込んでおいて、その文章がきたときには自分が意図した文字を表示するといった機能。

この辺りの修正がこれまでは読めていても一般的な変換で修正が大変だと感じていたので、事前に学習させられるのは非常に嬉しい。

さらには原稿を読み込ませる機能の実装もポイント。

どうしてもガジェットの名前とかは検知と表現が難しいと思ったので、事前に書いてある原稿と実際に言った言葉を照らし合わせ、合致した場合は原稿の表記を優先して反映するように設定しました。

これによって、製品名や機能の名前などの表記揺れを格段に防ぎます。

削除候補検出という機能も実装しました。

これは「あ」とか「まあ」とかが冒頭に聞こえたら削除推奨を検知してくれる機能。

この辺りはいちいち字幕にしなくて良いので助かります。

そしてこれが今回の1番頑張ったポイント。

お気に入りのテロップの反映が可能です。

というのも僕はテロップあまり使わないのですが、使う場合はかまけんさんの作ったプラグインを使用しています。

となると、テキトーなテロップデータではなく、特定のテロップが使える字幕生成アプリが望ましかったわけです。

でもそんな個人開発のこのデータの使用を詳細に読み取って反映できるアプリ!みたいなのはもちろんあるわけないので、諦めていた仕様が自分で作ることで実装できました。

この機能の実装によって、アウトラインを事前に消して反映するといったことができるように。

好きなテロップを好みの設定で使うことができました。

ここまで自由に自分好みの設定にできるのは自作ならではです。

# Final Cut Pro 字幕生成アプリ 試作用プロンプト

このドキュメントは、Codex / Claude Code などのコーディングAIに貼り付けて、Final Cut Pro向けの字幕生成・テロップ書き出しアプリを試作するための公開用プロンプトです。

ローカルPCのパス、個人名、メールアドレス、パスワード、APIキー、証明書、署名情報、Apple Developerアカウント情報、既存プロジェクト固有のBundle ID、実在する動画素材のパスは含めないでください。アプリ名、Bundle ID、保存先、テンプレート名、文字起こしエンジンの場所は、実行する人の環境に合わせて置き換えてください。

## 免責事項

本ドキュメントは、生成AIを用いたアプリ試作のためのサンプルプロンプトです。本プロンプトの利用、およびAIによって生成されたコードの実行によって生じた、いかなる損害(動画データやFinal Cut Proライブラリの破損、PCの不具合、意図しないファイル操作など)についても、製作者は一切の責任を負いません。すべて利用者の自己責任(個人の範囲)においてご利用ください。

試す場合は、必ずコピーした動画素材・テスト用のFinal Cut Proライブラリ・テスト用プロジェクトで検証してください。元の編集データや本番ライブラリへ直接適用しないでください。

## コピペ用プロンプト

あなたはmacOSアプリ開発、SwiftUI、Final Cut Pro向けFCPXML生成、音声文字起こし処理に詳しいシニアエンジニアです。

Final Cut Proで動画編集をするときに、動画または音声ファイルから文字起こしを行い、字幕テロップとして読み込めるFCPXMLを生成する「字幕生成アプリ」を作ってください。

目的は、配布用の完成品ではなく、個人のMacで動く試作品です。

安全性を最優先し、秘密情報・個人情報・署名証明書・開発者アカウント情報をコードやドキュメントに書かないでください。

### 想定環境

– macOS向けアプリ

– Swift / SwiftUI

– Xcodeでビルドできる構成

– まずは通常のmacOSアプリとして実装する

– Final Cut Pro Workflow Extension化は任意の後続タスクとする

– 文字起こしは、可能ならローカル実行できるWhisper系CLIを利用する

– 外部APIを使う場合は、ユーザーに明示確認し、APIキーをコードに直書きしない

### 作りたいアプリの概要

動画ファイルまたは音声ファイルを選択し、音声を文字起こしして、Final Cut Proに読み込める字幕テロップ用FCPXMLを生成するアプリを作りたいです。

生成したFCPXMLをFinal Cut Proに読み込むと、タイムライン上にタイトルクリップとして字幕が並ぶことを目指します。字幕はテキストとして編集可能で、色や位置などの基本的なテロップ設定も可能な範囲で事前に書き込めるようにします。

### 主要機能

1. メディア選択

   – 動画ファイルまたは音声ファイルを選択できる

   – 動画の場合は音声を抽出して文字起こしに使う

   – 音声ファイルの場合はそのまま文字起こしに使う

   – 元ファイルは削除・移動・上書きしない

2. 文字起こし

   – ローカルWhisper系CLIなどを呼び出してVTTまたはJSON形式の文字起こしを得る

   – 長尺動画でも扱えるよう、進捗表示やエラー表示を用意する

   – 文字起こしエンジンのパスやモデルパスはユーザー環境に依存するため、設定可能にするかREADMEに明記する

   – 外部APIに音声や動画を送信する実装は、初期版では避ける。実装する場合は明示的な同意と注意書きを入れる

3. 原稿ペースト

   – ユーザーが動画の原稿や話した内容の正解候補をテキスト欄に貼り付けられる

   – 原稿は全文一致ではなく、固有名詞・製品名・英数字表記の補正ヒントとして扱う

   – 原稿内の英数字を含む語(例: USB-C, XLR, Final Cut Proなど)を抽出し、文字起こし結果の表記揺れ補正に利用する

   – 原稿テキストはローカル保存のみとし、外部送信しない

4. 表記ルール

   – Markdownまたはプレーンテキストで表記ルールを読み込める

   – アプリ内で固定置換ルールを追加できる

   – 置換ルール、削除候補、優先語彙、文脈メモを別カテゴリとして扱う

   – 安全な固定置換だけを自動適用し、不確実な補正は候補表示に留める

5. 補正機能

   – 固定置換を適用できる

   – 原稿照合で英数字の大文字小文字やスペースを補正できる

   – 可能なら、カタカナ読みから英字製品名へのあいまい補正を実装する

   – 削除候補を検出し、文頭の不要語だけを一括削除できる

   – 削除候補や注意候補は字幕一覧上でマーカー表示する

6. 自然な字幕分割

   – Whisperのセグメントが不自然な位置で切れる場合に、字幕を再分割できる

   – 例: 「思うん」+「ですけど」を「思うんですけど」として扱う

   – 日本語の助詞、接続表現、語尾を見て、できるだけ自然な区切りにする

   – ただし、完全な日本語校正を目指しすぎず、ユーザーが手作業で直せる一覧UIを用意する

   – 1つの字幕の最大文字数を設定できるようにする

7. 字幕一覧編集

   – 文字起こし結果を一覧表示する

   – 各行に開始時刻、字幕テキスト、選択チェック、文字色、補正候補マーカーを表示する

   – テキストはアプリ上で編集できる

   – 全選択、全解除、補正適用、自然分割、削除候補検出などのボタンを用意する

   – FCPXML生成対象にする字幕をチェックで選べる

8. 色切り替えポイント

   – 指定時刻で字幕色を切り替えられる

   – 白→黒、黒→白をユーザーが選べる

   – デフォルトは白文字として扱い、色ポイント以降の字幕に指定色を適用する

   – 色ポイントの追加・削除・一覧表示ができる

9. テロップ設定

   – 可能な範囲で、FCPXML生成時にフォントサイズ、縦位置、文字色、アウトライン設定などを書き込める

   – Motion Templateの内部パラメータは環境やテンプレートに依存するため、まずは動作確認済みの最小設定に絞る

   – テンプレート固有のパラメータキーを固定で書く場合は、そのテンプレートが存在しない環境でもアプリが落ちないようにする

   – 事前設定がFCPで反映されない場合でも、テキスト入りタイトルクリップ自体は読み込めることを優先する

10. FCPXML生成

    – Final Cut Proに読み込めるFCPXMLを生成する

    – 字幕はタイトルクリップとして出力する

    – テキストはFCP上で編集できる形式にする

    – 元動画やFCPライブラリを直接変更しない

    – 出力先はユーザーが選択できるようにする

    – まずはテスト用ライブラリへ読み込む前提でREADMEに注意を書く

### 推奨データモデル

“`swift

struct TranscriptEntry: Identifiable, Codable, Equatable {

    let id: UUID

    var startTime: Double

    var endTime: Double

    var text: String

    var isChecked: Bool

    var textColor: TextColor

    var correctionIssues: [CorrectionIssue]

}

enum TextColor: String, Codable, CaseIterable {

    case white

    case black

}

struct ColorPoint: Identifiable, Codable, Equatable {

    let id: UUID

    var time: Double

    var from: TextColor

    var to: TextColor

}

struct CorrectionRuleSet: Codable, Equatable {

    var replacements: [ReplacementRule]

    var deletionCandidates: [DeletionCandidate]

    var preferredWords: [String]

    var contextRules: [String]

}

struct ReplacementRule: Codable, Equatable {

    var source: String

    var replacement: String

    var category: String?

}

struct TitleStyleSettings: Codable, Equatable {

    var fontSize: Double

    var positionY: Double

    var showOutline1: Bool

    var showOutline2: Bool

    var titleColor: TextColor

}

“`

### 表記ルールファイルの例

Markdown形式で以下のような記述を読み取れるようにしてください。

“`markdown

# 表記ルール

## 固定置換

### 製品名

– pd200w => PD200W

– usb c => USB-C

– xlr => XLR

### 一般表記

– 子供 => 子ども

– 出来る => できる

## 削除候補

### 文頭のみ削除推奨

– まあ

– なんか

– あの

### 連続時のみ削除推奨

– というところで

– みたいな感じ

## 文脈ルール

– 英数字を含む製品名は半角英数を優先する

– 実際に話していない文章へは補正しない

– 不確実な補正は候補提示に留める

## 優先語彙

– Final Cut Pro

– USB-C

– XLR

“`

### 推奨構成

“`text

Sources/

  App/

    AppEntry.swift

  Models/

    TranscriptEntry.swift

    CorrectionRuleSet.swift

    TitleStyleSettings.swift

  Services/

    AudioExtractor.swift

    WhisperRunner.swift

    TranscriptParser.swift

    TranscriptCorrector.swift

    FCPXMLGenerator.swift

    CorrectionRuleParser.swift

  ViewModels/

    MainViewModel.swift

  Views/

    RootView.swift

    TranscriptListView.swift

    ColorPointView.swift

Tests/

  AppTests/

    TranscriptParserTests.swift

    TranscriptCorrectorTests.swift

    FCPXMLGeneratorTests.swift

“`

### 実装上の注意

– 最初に小さく動くものを作り、ビルド確認を必ず行う

– macOS Sandboxを前提にする

– ファイルアクセスはユーザーが選択したファイルだけに限定する

– 元動画、音声、Final Cut Proライブラリを直接削除・移動・上書きしない

– FCPXMLは新規ファイルとして書き出す

– FCPXMLの読み込み検証は、必ずテスト用ライブラリとテスト用プロジェクトで行う

– テンプレートやMotion Templateのパスはユーザー環境に依存するため、絶対パスをコードに固定しない

– ユーザー名を含むパスをREADMEやサンプルに書かない

– テスト可能なロジックはViewから切り出す

– 文字起こし、補正、FCPXML生成はユニットテストしやすい構造にする

– 長尺動画で時間がかかる処理は、UIが固まらないよう非同期で実行する

### 安全性の要件

– パスワード、APIキー、トークン、秘密鍵、証明書、Apple Developerアカウント情報を扱わない

– 外部APIを利用する場合、APIキーをコードやGit管理ファイルに保存しない

– 音声・動画・原稿テキストを外部送信する場合は、ユーザーに明示確認する

– ローカルPCのユーザー名や絶対パスをドキュメントやサンプルに固定しない

– Bundle IDはサンプル値にする。実在する個人や組織のIDを使わない

– 元ファイルを削除・移動・編集しない

– FCPライブラリや既存プロジェクトを直接書き換えない

– 出力FCPXMLはユーザーが明示的に選んだ場所に保存する

– 配布、署名、公証については、実装とは別タスクとして扱う

### 受け入れ条件

– アプリを起動できる

– 動画または音声ファイルを選択できる

– 文字起こしを実行できる、またはサンプルVTTを読み込んで字幕一覧を表示できる

– 字幕一覧のテキストを編集できる

– 原稿テキストを貼り付けて保存できる

– 表記ルールを読み込める

– 固定置換を適用できる

– 削除候補を検出できる

– 自然分割を適用できる

– 色切り替えポイントで白→黒、黒→白を指定できる

– FCPXMLを書き出せる

– 書き出したFCPXMLをテスト用Final Cut Proプロジェクトに読み込める

– 元動画や元音声が変更されない

– ビルド手順、必要な外部ツール、既知の制限がREADMEに書かれている

### 進め方

1. プロジェクトを作る

2. データモデルを作る

3. メディア選択と音声抽出を作る

4. Whisper実行またはサンプルVTT読み込みを作る

5. VTTパーサーを作る

6. 字幕一覧UIを作る

7. 表記ルール読み込みと固定置換を作る

8. 原稿照合補正を作る

9. 削除候補検出と自然分割を作る

10. 色切り替えポイントを作る

11. FCPXML生成を作る

12. テストとREADMEを作る

まずは「サンプルVTTを読み込んで字幕一覧を表示し、FCPXMLを書き出す」最小版を完成させ、その後に動画・音声からの文字起こし、補正機能、スタイル設定を追加してください。

## 公開前チェックリスト

公開前に、共有するファイルに以下が含まれていないか確認してください。

– 自分のMacの絶対パス

– ユーザー名

– メールアドレス

– Apple Developer Team ID

– 個人や組織の実Bundle ID

– パスワード、APIキー、トークン、秘密鍵、証明書

– `.xcuserdata` やユーザー固有のXcode設定

– 実在する動画・音声・画像素材のパス

– 実在するFinal Cut Proライブラリのパス

– 実在するYouTubeチャンネルや案件固有の原稿

– 配布用署名や公証に関する個人設定

– 有料テンプレートや第三者素材そのものの再配布にあたる内容

公開するなら、このファイル単体、またはこの内容をGoogle Docs等に貼り付けて共有するのが安全です。

機能の言語化ができればわりと作れる

何度も言いますが僕はコードは1行も読めず、言語も何もわからない非エンジニアです。

AIでのアプリ開発もしっかり向き合ったのはここ1週間と少しくらい。

そんな僕でもこれだけ作れてしまうのがおそろしいところ。

もちろんエンジニアの人から見ればこんなもんかという感じかもしれませんし、知見のある人に比べればまだまだでしょう。

でも、何も知識のない状態でも、欲しい機能を言葉にできればここまで自由にアプリを開発できてしまうのはすさまじいところ。

技術的にエンジニアの方はFinal Cut Proの機能はこれまでも作れたと思うのですが、でもそんなツールを開発するエンジニアの方は数が少ないでしょうし、それを発信してくれるのはもっと少ない。

お金を出せばやってくれたのかもしれませんが、ちょっとしたツールを作るのに大金もかけてられないので、技術的には可能でも情報が少ないツールだったと言えるでしょう。

そんな状態だったなか、本当にツールを欲している人が自分の不満を言語にできればツールを自作できるようになったわけです。

これは革命レベルの事態。

言えれば出てくるので、欲望の言語化能力を鍛えましょう。

まとめ

Final Cut Proを使っている人は簡単に自作ができる時代になっているので、ぜひ開発やってみてほしいです。

もちろんFinal Cut Proではない動画編集ソフトとか、それ以外のツールでも、機能を拡張できるような要素がある場合ツールを使って効率化を測れるかもしれないので、アイデアを得つつAIツールを使ってみて欲しいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です