素人がAIで動画編集ソフトを4か月で作った話
こんにちは、株式会社ドウガテック代表取締役の内村航です。
ChatGPT4.0を使って動画編集ソフトを作ってみました。Visual StudioでC#を使いました。プログラミングに関しては今もまったくの素人です。
そんな素人の私でもソフトウェアとしては難解な部類に入るであろう動画編集ソフトを作れました。簡易的なソフトではありますが、ちゃんと動画編集できます。
この記事では「なぜ動画編集ソフトを作ることになったのか」「どうやってChatGPTで作ったのか」、そして「なぜこの記事を書いたのか」などお話したいと思います。
そもそものはじまり
私、内村航は2012年から初心者向けに動画の作り方を解説するウェブメディア『カンタン動画入門』を運営しています。2017年に法人化しましたが、私1人のいわゆるミニマム法人です。
仕事内容は実際にカメラや動画編集ソフト・アプリを使ってレビューしたり、大学で動画作りの非常勤講師をしたり、企業や地方自治体で動画の作り方指導などをしています。
2012年当時は、初心者向けに動画の作り方を解説しているサイトは少なく、また実際にソフトを使ってレビューしているサイトもあまりありませんでした。そのためコツコツ記事を増やしていくうちに最大月70万PV程度まで成長しました。
本も出版しました。
動画編集ソフトを作ってみたい!
ある時「自分でも動画編集ソフトを作ってみたいな」と思いました。
パソコン向け動画編集ソフト・アプリ合計60個ほど実際使ってレビューし、解説記事や動画を作りました。その中で「もっとこうすればいいのになぁ」と思うことが増えてきました。
高機能な動画編集ソフトはたくさんありますが、どれも操作はカンタンではありません。
動画教室に参加してくれる方の中には、パソコン操作が不慣れな方や高齢者の方も多くいます。そういった方たちにはほとんどの動画編集ソフトは難しいのです。
そこで「もっと簡単な動画編集ソフトの需要があるのでは?」と思うようになりました。
しかし私は当時も今もプログラミング未経験です。プログラミングの本を買ったり、ウェブサイトを読んだりしましたが全然続きません。
某質問掲示板なんかで調べてみると「動画編集ソフトを作りたいです。どうすればいいですか!?」という質問に対して、「そもそもそんな低レベルの質問をするくらいならば~略」といった怖い回答があり、「あー、こりゃ無理だ!」と自作は諦めました。
そこで知人経由でWindowsアプリ開発を委託できる方を探し出して見積もりをだしてもらいました。結果、安くて100万円から300万円。出せないこともないけど高い!ソフトは無料で公開するつもりでしたし、広告付きにしても回収できるかどうかわかりません。
結局、依頼はせず、そこで話は終わりました。
ChatGPTの登場
それから数年経ち、2023年になってChatGPT4.0が公開されました。そこで「あれ、もしかして動画編集ソフト作れる?」と思ったのです。
世間ではイラストCGやアニメーション、実写合成などが話題になっていましたが、私はAIプログラミングについて興味を持ったのです。
まず動画変換ソフトを作ってみた
試しにChatGPTに、プログラミングについて色々聞いてみました。
その結果「動画編集ソフトは難しいけど、動画変換ソフトならカンタンに作れそうだぞ」ということが分かりました。
ChatGPTがいうには、初心者におすすめの言語はpython(パイソン)で、Visual Studio Codeという無料ソフトを使って作れそうとのこと。
で、やってみた結果、できました。
複数の動画ファイルを指定のコーデック、解像度、画質、フレームレートなどで変換できるソフトです。SNS用のプリセットも用意しました。カスタムプリセットも作れます。ついでにファイル名の一括変換もできます。
かかったのは1週間です。
「こういうソフトウェアにしたい!」というアイデアがあれば、ChatGPTに根気よく聞けばどうにかなることがわかりました。
もちろんAIなので、トンチンカンな回答や、突然英語で回答しだしたり、何度も嘘をつかれたり、初めのうちはかなりイライラしました。しかし少しずつ「これは質問の仕方が悪いのでは?」と思うようになりました。
作ったソフトウェアを公開してみた
ソフトは作ったら公開しないといけません。しかし作った後に「今時Windows用のフリーソフトなんてあまり需要なんてないのでは!?」という疑惑が浮上しました。
実際、昔はもっとフリーソフトを紹介するサイトや、リンク集などがありました。けれど2023年にもなるとほとんど残っていないのです。
結局、大手のベクターさん、そして海外のcnetというサイトがソフトウェアを掲載してくれることがわかりました。
ベクターさんにソフトを掲載するには、ライブラリ作者登録→パスワード発行→ライブラリ作品登録、と流れで進めます。
ソフト登録申請の流れ Vector
さっそく必要なソフトの詳細情報やreadmeなどを用意し提出。
「素人が何提出してきたんだよ!!」と怒られないかドキドキしていましたが、1週間ほどでどちらも審査が通り掲載されました。
この2サイトに掲載されると、わりとすぐに『k本的に無料ソフト フリーソフト』さんにレビュー記事が掲載されました(ありがとうございます!)。
評価された!
そして、GIGA!無料通信さんで、『2023年、特に感動した・気に入った フリーソフト』の動画部門でドウガテックエンコーダーが選ばれました。
これはとても嬉しかったです。
AIプログラミング楽しい!
前までは実現できなかったことができるようになったのです。それはとても素晴らしい体験でした。
「これができるなら、あれもこれもできるかも!?」と思うだけでワクワクします。
これに味をしめた私は次に取り掛かることにしました。
AIで動画編集ソフト制作を開始する
結論からいうと完成しました。
かかった期間はなんと4か月!!長い!!
公開している開発日誌を読むと「2023/10/17」から始まり、完成が「2024/2/13」となっています。
どういう動画編集ソフト?
名前はドウガテックビデオエディターフリーです。
料金は無料です。
対象はWindowsのみ。
初回のみメールマガジン登録窓がでますが、登録しなくても使えます。
機能は動画の読み込み、トリミング、分割、音量調整、テキストテロップ、BGM音楽、書き出し、プロジェクト保存など基本的な機能がそろっています。
ただし、あくまで簡易的な短めの動画編集を想定しています。パソコンスペックによっては読み込み・変換に時間がかかってしまう設計になっています。
また特徴として1つの編集画面上ですべての編集作業が完結するようにしています。高度な機能はありませんが、当初の目標通り、パソコンに不慣れな方でも、動画編集初心者でもチャレンジしやすいソフトになっているのではと考えています。
「トランジションもない!」「テキストの配置や色も変えられない!」など不満を感じた方は、ぜひAdobe Premiere Proを使ってください。満足いただけると思います。
動画編集ソフトをどうやって作ったか?
ChatGPT4.0を使って、Visual Studio(無料)、C#で開発しました。
まー、むずかったです!
Pythonはなんならメモ帳に1枚だけずらーっとコードをかけば成立します。しかし、C#は複数のファイルがからみあい、もう何が何だかわかりません。
けれど時間をかければどうにかなるものですね。4か月はかかりすぎましたが、基本的な機能自体は2か月ほどで完成しています。
まず最初にしたことは絵を描くこと
印刷用紙にボールペンでソフトウェアのラフ設計図を描きました。
次にイラストソフトで清書しました。
ChatGPTは画像を解析してゲームやらホームページやらを作れる!という誰かの投稿を見たので、赤文字で色々書いてみました。
しかしこんなメモ程度だとChatGPTは理解できないようでした。
とはいえソフトを作るにあたって、このイラストは役に立ちました。実際、完成したソフトはほぼ同じデザインになったので作って良かったと思います。
Pythonで動画編集ソフトは作れるか?
ChatGPT曰く、動画編集ソフト作りはVisualStudioで、WPFアプリ、C#を使うのが良いとのことでした。
しかし、前回作った動画変換ソフトは、Visual Studio Codeという無料ソフトを使ってpythonで書きました。その環境に慣れていたので、pythonでもできないかと、ChatGPTの提言を無視してチャレンジしてみたのです。
が、失敗!
私もまだよくわかっていないのですが、言語には向き不向きがあるようで、ChatGPTに相談してもpythonではまったく先に進まなくなってしまったのです。
C#で動画編集ソフト作りにチャレンジ
数日を無駄にした私は素直にVisualStudioをインストールして、新規プロジェクト立ち上げることにしました。
「え? なんかいっぱいでてくるけどなにこれ?」状態です。
よくわからないけど、ChatGPTのアドバイスをもとに次に進んでいきます。わからないことは何度でもしつこく聞きましょう。
提案をもとに進めていくと、空のプロジェクトが生成されました。
1枚の紙に全コードを書いていたpythonと違って、C#は初期状態から色々なファイルがあるんです!「App? XAML? CSファイルってなに!?」
正直今もよくわかっていないのですが、XAMLはアプリの見た目をつかさどる神(たぶん)。
そしてCSファイルは、アプリの動作をつかさどる神。
というのが私のぼんやりとした認識です。
例えばXAMLに一時停止ボタンを設置します。しかし一時停止ボタンをクリックしても何も起きません。ボタンクリック時の動作を指定していないからです。
ボタンクリックで一時停止できるようにCSファイルの中で指示します。CSファイル内に「メソッド」というよくわからん名前のグループ?を作り、そこに動作内容を書きます。
すると一時停止ボタンクリックで、動画の再生が一時停止するようになるわけです。
まとめると、
XAML:一時停止というテキストが表示されているボタンを設置。
CS:その再生ボタンクリック時に、動画を再生せよ!という指示を書く。
といった感じです。
一見ややこしそうに見えるC#ですが、このXAMLとCSコードでだいたい作られています。
複数のXAMLとCSが入り乱れる
難しいのがアプリの内容によってはXAMLとCSファイルを複数組み合わせる必要があるところです。
例えば、ダイアログボックス。
テキスト、OK、キャンセルくらいのダイアログボックスであればデフォルトの機能で作れます。
しかし以下のようなちょっとでもカスタムしたいダイアログの場合、新たにXAMLとCSを作らないといけないのです。
あれもこれも作っているとあっという間にXAMLとCSはどんどん増えていきます。
本職のプログラマーさんだときっとキレイに整理して書くのだと思うのですが、私は素人だし、ChatGPTも聞かないと教えてくれないので、正直プロジェクト内はけっこうカオスです。
あとになって「機能別に色々ファイルを別けたほうがよかったのかも!」と思いましたがもう遅かった!
しかし、まあ機能はするのでいいや!の精神で最後まで突き進むことになります。
ライブラリを使え!
正直いまだによくわかっていないのですが、誰かが開発してくれたライブラリというコードの塊みたいなものが存在します。
動画編集ソフトでいうとffmpeg.exeというライブラリを使えば、動画の解析や変換やらのコードを自分で全部書かなくても良いのです。
ソリューションエクスプローラー開き、右クリック、NuGetパッケージの管理を選択
ChatGPTにきいて必要なライブラリを検索してインストールする
なぜ、いったい誰がどうしてこんな便利なものを無料で公開しているのか私にはまだよくわかっていません。しかしあるものは使いましょう。
ライブラリによっては色々な制約がある場合もありますが、基本的には自由に使えることが多いようです。
というわけで「こんなプログラム無理だろうなぁ!」と思っていても、ライブラリが存在すればどうにかなるのだと思う!たぶん。
素人×AIプログラミングはライブ感重視だ!
どうやら、ChatGPTは複数の指示に対し、一度に回答するのが苦手なようです。
例えば
1.ソフト内にトリミングハンドルを作って、左右のハンドルを移動させると動画プレビューされ、ハンドルをとめた位置で開始・終了位置が変更されるようにしたいです!
と指示したところで、ChatGPTはまともな返事を返さない!
そのため、まず
1.マウスで操作できる左右のトリミングハンドルを設置してください。
のみ指示しましょう。
そしてそれができたら、次に
2.トリミングハンドルを動かすと動画もプレビューされるようにしてください。
と指示を出していくのです。
ひとつひとつ丁寧に質問を繰り返し「あ!これもないとダメだ!」「あ!これ使えないから、やっぱ全部消してこっちにしようかな!?」と試行錯誤しながらの、ライブ感重視の開発になるわけです。
コードが完成したらパッケージ化する
コードが完成したら、配布するためにプログラムをインストールできるようにします。
無料で扱えるInno Setupを使えばけっこうカンタンにインストールファイルが作れます。
Inno Setupの設定ファイルが生成されます。
実行ボタンをクリック!
書き出しが始まります。
そして指定した場所にsetup.exeが保存されます。
このsetup.exeを開くと、インストールが始まります。
試しにAIプログラミンに挑戦してみよう!
ここまで読んだプログラミング未経験者の方は、ぜひプログラミングに挑戦してみてください。
私ができたのだから、皆さんもどんなプログラムでも作れるはずです! 自分が本当に作りたいものを作ってください。
ChatGPT4.0と契約する
まずはChatGPTの有料版を契約しましょう。
アカウントを作成し、左下メニューの「プレスにアップグレード(Upgrade to Plus)」。月20ドルです。
無料のChatGPT3.5で試すのも良いと思います。しかし、出力スピードは速いですが嘘や間違った回答がかなり多いです。時間の無駄になる可能性が高いので、ChatGPT4.0の契約をおすすめします。
ChatGPT以外の無料AIはどうなの?
どことはいいませんが、某社のチャットAIはレベルが低すぎて、まったく使い物になりませんでした。ChatGPT一択です。
VisualStudioをインストール
C#の場合、まずはVisualStudioをインストールしましょう。
そして新規プロジェクトで、WPFアプリを選択。
私が動画編集ソフト開発で、最初に書いたコードは以下の通りです。
・動画読み込みボタンを設置
・動画読み込みボタンクリックで動画を読み込む
・読み込んだ動画のサムネイルを生成
・サムネイルをアイテムリストに表示する
これくらいならあっという間にできます。
初めてプログラミングをすると「わー!ボタンクリックで動画読み込めたやんけ!!」と本当に感動します。
「Hello World」とかいってる場合じゃないです。
ある程度、コードがかけたら『開始』ボタンクリックでアプリを起動させましょう。
アプリが表示されます。
もし重大なエラーがある場合は、アプリは起動できません。
エラー一覧からエラーをダブルクリックし、エラー内容とエラーコード部分をChatGPTに共有しましょう。
この修正・改善の繰り返しでアプリが完成します。
ChatGPTプログラミングのコツ
(1)とにかく細かく詳細を伝える
(2)コードをちゃんと読んでみる
(3)エラーを読む
(4)デバッグコードをたくさんしこむ
(5)アイデアを10個出してもらう
(6)どうにならない場合は日を改める
これを繰り返せばなんとかなりました。
(1)とにかく細かく詳細を伝える
もっている情報をしっかり伝えましょう。「わかってくれるよね?」で察してくれる場合も多々あります。しかし先に進めなくなった時は、もう一度最初から細かい情報を提供してみましょう。
(2)コードをちゃんと読んでみる
コードをちゃんと読んでみる、というのはプログラミングを理解する、というわけではありません。書いていることはわからないけど、それなりに理解しようと努めるのです。
最初は言われた通り延々コピペを続けましょう。しかしあるところで何度やってもエラーの無限ループに陥る時が来ます。
その時は、一度冷静になってコードを読んでみるのです。そうすると「あれ、もしかしてこれってこうしたらいいんじゃないの?」とピンとくる瞬間があります。
初めはよくわからなくてもOKです。一応目を通すようにしましょう。
(3)エラーを読む
C#はすぐエラーがでます!「.」を間違って入れてしまうだけでエラーになり、アプリが開かなくなります。
しかし安心してください。VisualStudioにはエラー一覧ウィンドウがあり、そこにエラーか所を表示してくれます。
この赤丸✕がエラーです。ダブルクリックすると、エラーか所まで飛んでくれます。
そして、エラーを右クリック→コピーし、ChatGPTにペーストしましょう。
すると以下のようなエラー情報がペーストされます。
「重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー CS1513 } が必要です douga_tec_video_editor_002 C:\Users\\Desktop\program\douga_tec_video_editor\douga_tec_video_editor_002\MainWindow.xaml.cs 3283 アクティブ
あとはこのエラー情報と該当するコード部分をChatGPTが読んで、修正案を出してくれます。
(4)デバッグコードをたくさんしこむ
デバッグコードというのは、ある動作がうまく動かない場合、何が悪いのか調査するためのコードです。
例えば、一時停止メソッド内のコード。
videoPreview.Pause();
Console.WriteLine("PauseVideo_Click: タイムラインプレビューを一時停止します。");
「videoPreview.Pause();」は読んでみると、動画のプレビューを一時停止、と書いてあるのがわかると思います。
そして、デバッグコードは「Console.WriteLine("PauseVideo_Click: タイムラインプレビューを一時停止します。"」の部分。
これは、一時停止ボタンをクリックすると、ログに『タイムラインプレビューを一時停止します。』と出力する、というデバッグコードです。
もし一時停止ボタンをクリックしたのに、このデバッグログが出力されない場合は、ボタン自体に何らかの問題があることがわかるわけです。
1.一時停止ボタンをクリックした時、うまく動かない!
2.デバッグコードを仕込んで何が起きているか調べよう!
3.出力コンソールに仕込んだデバッグログが入っているかチェック!
といった風に問題を捜すために使います。
もし一時停止ボタンクリックしても、意図通りデバッグログが表示されていない場合は、何らかの問題が発生しています。
ログが出力された場合はコピペしてChatGPTに渡しましょう。すると、デバッグログをもとに新たな改善策をだしてくれます。
困ったら「デバッグコードを仕込んで原因を調べたいです!」とChatGPTにいいましょう!
(5)アイデアを10個出してもらう
ChatGPTに質問すると、基本的には1つの回答をだしてくれます。おそらくそれがベストと思って提案してくれているのでしょう。
しかし、その回答が間違っている場合があります。
その時は「〇〇を実現するためにアイデアを10個だしてください」といいましょう。箇条書きでアイデアが10個でます。
それを読んで、上から順、もしくは実現できそうな順に実行しましょう。
(6)どうにならない場合は日を改める
それでもどうにもならないのであれば、その日は諦めましょう。なぜだかわかりませんが、日を改めると、まったく同じ質問をしても正解を返してくることがよくあるのです。ChatGPTも疲れるのかもしれない。
また、ChatGPTの有料版は〇時間以内に〇問だけ回答を受け付けます。制限回数を超えると、指定の時間まで質問ができなくなります。
現在だと3時間に40問です。質問は慎重に行いましょう!
AIプログラミングは習うより慣れろ!
4か月毎日ChatGPTを使ってプログラミングを続けると、コードはまったく読めませんが、指示の仕方や、だいたい次どうすればいいか分かってきます。
以下、先週2日で作った動画再生ソフトです。
動画プレイヤーに動画を読み込むと、その動画のコーデックやフレームレートなどの情報も表示されるというシンプルな機能のソフトです。
修行のおかげか、けっこうカンタンに思ったものが作れるようになりました。
AIプログラミングについてまとめ
4か月もコードをコピペし続けていると「あれ、これちゃんと勉強したほうが早かったんじゃあ……」とふと思いました。
しかし私は別にプログラミングで食べていこうと思っているわけでもなし、本気で勉強するほどプログラミングを書く行為に興味を持てるわけでもなし、というタイプの人間です。
もしChatGPTでプログラミングしてはいけない、と言われれば、もう二度とコードを書くことはないでしょう。
邪道は邪道ですが、その道しか私にはないのです。
本職プログラマーの方がこの記事を読んだら、もしかすると不快な思いをされる方もいるかもしれません。そうだったらすみません。
この記事も公開するかどうか迷いました。あの質問掲示板のように「素人が手出すな!」と怒られるかもしれないと思ったからです。
でも、プログラミングができれば実現できるのに、プログラミングができないために実現できていないことは世の中にたくさんあると思います。
そしてその多くは、お金を出してプログラマーに依頼できない小さなレベルのものなのではないでしょうか。
この記事を書き、公開する意義はそこにあると私は思いました。
長くなってしまいましたが、これを機会にぜひAIプログラミングに挑戦してみてください!私はいまYouTubeに関するプログラミングにチャレンジしています。まだまだ作りたいものでいっぱいです!
AIプログラミングに関してはXでちょこちょこ書いていこうと思います。ご興味あるかたはぜひフォロー宜しくお願いします!
@dougatec
この記事が気に入ったらサポートをしてみませんか?