1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBAしか書けなかった会社員が、eラーニング動画制作をPythonで自動化してSaaS公開するまで

1
Posted at

はじめに

本業で、研修や eラーニング向けの動画を作ることがよくあります。

ただ、この作業がとにかく面倒でした。
自分はもともと Excel VBA を少し触れる程度で、本格的な開発経験があったわけではありません。動画編集も専門ではありません。

そんな自分が、「この作業、毎回やるのしんどいな……」というところから少しずつ自動化を進めていった結果、最終的に Web アプリ化し、SaaS として一般公開するところまで来ました。

この記事では、その流れと、途中で何に困ってどう乗り越えたかを書いてみます。

手作業の動画作成が本当につらかった

eラーニング動画を作るとき、やっていたことはだいたい次のような流れでした。

  1. PowerPoint でスライドを作る
  2. スライドごとに AI 音声生成ソフトでナレーション音声を作る
  3. Premiere Pro にスライド画像と音声を並べてタイミングを合わせる
  4. 字幕を手で入れる
  5. 書き出して確認し、修正があればまたやり直す

これを1本作るのに、平気で数時間かかります。

しかも、たとえば「3枚目の内容を少し変えて」と言われると、そのスライドの音声を作り直し、編集もやり直し、場合によっては字幕も修正です。
動画の本数が増えるほど、この手戻りがかなりつらくなっていきました。

まずは音声生成だけ自動化した

最初から全部を自動化しようと思ったわけではありません。
まず手をつけたのは、一番面倒だった音声生成でした。

調べてみると、Google Cloud に Text-to-Speech API があり、テキストを投げると音声ファイルを返してくれます。
そこで Python から API を呼び出し、PowerPoint のノート欄に書いた原稿をまとめて音声化するスクリプトを書きました。

Python は本格的な開発で使ったことはありませんでしたが、VBA を触っていたので、

  • 変数に値を入れる
  • 条件分岐する
  • ループで回す

くらいの感覚は流用できました。
文法はその都度調べながら進めましたが、「やりたい処理を順番に書いていく」という意味では、思っていたより入りやすかったです。

この時点ではまだ、生成した音声とスライド画像を Premiere Pro に取り込んで手動で編集していました。
それでも、音声を1枚ずつ手で作る苦行から解放されたのはかなり大きかったです。

次に、動画の結合も自動化した

音声が自動で作れるようになると、次に気になったのは編集作業でした。

「画像と音声を順番につなげるだけなら、これも自動化できるのでは?」と思って調べて見つけたのが FFmpeg でした。
コマンドラインから画像・音声・動画を扱える定番ツールで、スライド画像とナレーション音声を結合して動画にできます。

流れとしては、こんな感じです。

PowerPoint
  → スライド画像を書き出す
  → ノート欄のテキストを取得する
  → Google Cloud Text-to-Speech で音声を生成する
  → FFmpeg で画像と音声を結合する
  → スライド単位の動画を連結する

これで、スクリプト1本で最後まで処理できるようになりました。
それまで数時間かかっていた作業が、「実行して数分待つ」に変わった瞬間はかなり感動しました。

もちろん、最初から完璧だったわけではありません。
字幕のタイミングがズレたり、読み上げの間が不自然だったり、微調整は必要でした。
それでも「全部手でやるより圧倒的に速い」というだけで、十分価値がありました。

スクリプト運用には限界があった

しばらくは Python スクリプトで回していたのですが、使っていくうちに限界も見えてきました。

一番大きかったのは、部分修正に弱いことです。
たとえば「3枚目の音声だけ差し替えたい」「字幕だけ少し直したい」といったケースでも、全体を最初から再実行する構成だと効率が悪い。

さらに、実際の運用では次のような調整ニーズが出てきました。

  • 音声の速度やピッチを変えたい
  • BGM の音量を調整したい
  • 字幕フォントを変えたい
  • スライドごとに細かくパラメータを調整したい

スクリプトだけだと、パラメータを書き換えて再実行し、出力を見てまた修正、というループになります。
自分ひとりならまだしも、他の人に使ってもらうには厳しいと感じました。

同僚から「自分も使ってみたい」と言われたときに、Python の環境構築から説明するのも現実的ではありませんでした。

そこで欲しくなったのが、次のような形のアプリでした。

  • ブラウザで開ける
  • PowerPoint をアップロードできる
  • プレビューしながら調整できる
  • ボタンを押したら動画が出力される

Web アプリ化した

技術スタックは、生成 AI と相談しながら決めました。

自分の条件はこんな感じでした。

  • バックエンドは Python で書きたい
  • 既存の自動化スクリプトをできるだけ流用したい
  • フロントエンドも必要
  • 自分は VBA レベルからのスタート

その条件で候補を出してもらい、自分でも調べて比較した結果、最終的に次の構成にしました。

  • バックエンド: FastAPI
  • フロントエンド: Next.js
  • インフラ: GCP の Windows Server VM

FastAPI を選んだ理由

一番大きいのは、Python でそのまま書けることです。
既存の自動化スクリプトを活かしやすく、API 化もしやすい。
「まず動くものを作る」という意味で、自分にはかなり相性が良かったです。

Next.js を選んだ理由

フロントエンドは最初かなり迷いました。
ただ、React ベースで情報量が多く、困ったときに調べやすかったのが大きかったです。
AI ツールに相談しやすいのも助かりました。

GCP の Windows Server VM を選んだ理由

ここは少し特殊で、PowerPoint のアニメーションを動画化するのに、PowerPoint COM という Windows 専用の API を使う必要がありました。
そのため、少なくともこの用途では Linux サーバーでは完結しませんでした。

また、Text-to-Speech も Google Cloud を使っていたので、費用をある程度まとめて管理しやすいという理由もありました。

技術的に一番大変だったこと

実装してみて、「単純に音声と画像をくっつける」だけならまだ簡単でした。
本当に大変だったのは、その先の運用寄りの要件です。

たとえば、

  • スライドのアニメーションをどう扱うか
  • 修正時にどこまで再生成するか
  • ユーザーごとにファイルをどう分離するか
  • 失敗したジョブをどう再試行するか
  • 長い処理時間の間に UI でどう状態を見せるか

このあたりは、単なるスクリプトではなく「アプリとして使える形」にしようとした瞬間に一気に難しくなりました。

作っていて強く感じたのは、自動化スクリプトと SaaS は似ているようで別物だということです。
本体の処理が動くだけでは足りなくて、失敗時の扱い、再実行、権限、保存、見た目、説明など、周辺機能の比重がかなり大きいです。

SaaS 化して初めて「本体以外」が本番だと気づいた

自分用ツールとして使っていた頃は、「動画が作れればOK」でした。
でも SaaS として公開しようとすると、それ以外の実装が一気に増えます。

認証

認証には Firebase Authentication を使いました。
Google ログインとメール/パスワード認証を入れ、ユーザーごとにデータを分離する仕組みも必要になりました。

決済

決済は Stripe を使いました。
サブスクリプション課金、Webhook 連携、解約フローなどを組み込む必要がありました。

さらに、Stripe の審査を通すために、次のようなページも整備する必要がありました。

  • 利用規約
  • プライバシーポリシー
  • 特商法表記

集客

ここは今でもいちばん難しいです。
ランディングページを作る、SEO を意識する、記事を書く、導線を見直す……と、やることは多いのですが、技術実装のように明確な正解がありません。

コードは動けば前進した感じがありますが、集客は「これで正しいのか」が見えづらく、別の難しさがありました。

個人開発 SaaS の費用感

個人開発で SaaS を運用するにあたって、ざっくりこんな費用感で動いています。
※ 2026年4月時点のおおよその金額です。

項目 月額 備考
GCP VM (e2-medium) 約 ¥5,000〜6,000 2 vCPU / 4 GB RAM の Windows Server
ドメイン 約 ¥170 年間約 ¥2,000
Cloudflare ¥0 DNS + SSL + CDN
Firebase Authentication ¥0 無料枠内
Stripe 決済時 3.6% 売上がなければ ¥0
Google Cloud Text-to-Speech 従量課金 動画ごとに変動
合計 約 ¥6,000〜7,000/月

VM 1台にフロント、バックエンド、リバースプロキシをまとめて載せているので、この金額で収まっています。
個人開発でも、思っていたより現実的なコストで運用できるのは発見でした。

AI ツールを使って開発して感じたこと

開発には Cursor や Claude Code を使いました。

ただ、実際にやってみて思ったのは、「AI が全部作ってくれる」というより、学習速度と試行回数を大きく増やしてくれる道具だということです。

たとえば、

  • Next.js でこの UI を作りたい
  • FastAPI でこの API を切りたい
  • このエラーの原因を切り分けたい

といったときに、かなり強い補助になります。

一方で、

  • 何を作るのか
  • なぜその構成にするのか
  • どこを責務分離するのか
  • 何がバグの原因なのか

といった部分は、自分で考えないと前に進みません。

感覚としては、「すごく詳しい同僚が隣にいる」に近いです。
答えはたくさん返してくれますが、質問の切り方や最終判断は自分の仕事でした。

個人開発が楽しい理由

個人開発の楽しいところは、「面倒だな」「こうだったらいいのに」と思った瞬間に、自分で改善を始められることだと思っています。

仕事だと、改善提案を出して、承認を取って、予算を確保して、依頼して……と時間がかかることも多いです。
でも個人開発なら、その日のうちに試せます。

しかも、自分が最初のユーザーなので、「ここ使いづらいな」「この機能はいらないな」がすぐわかる。
その感覚をそのまま改善に反映できるのはかなり楽しいです。

まとめ

今回の流れを振り返ると、やったことはシンプルでした。

  • まず、自分が一番つらいと思っていた作業を自動化した
  • 次に、全体をつないで最低限動く形にした
  • その後、使いづらい部分を UI や運用面も含めて改善した
  • 最後に、自分以外でも使える形に整えて公開した

特に大きかった学びは次の4つです。

  • 最初から完璧なシステムを作ろうとしないこと
  • 一番痛い作業から順に自動化すること
  • スクリプトで動くものと、SaaS として使えるものは別だということ
  • AI を使っても、設計と切り分けは自分の仕事だということ

自分はもともと VBA くらいしか触っていませんでしたが、それでも「面倒な作業をなんとかしたい」という動機があれば、少しずつ形にしていけました。

同じように、日々の業務の中で「これ毎回やるのしんどいな」と思っているものがある人の参考になればうれしいです。

おまけ

実際に、この流れの中で作った PowerPoint から研修動画・eラーニング動画を生成するサービスも公開しています。
興味がある方は見てみてください。

  • Note2Video
    PowerPoint をアップロードするだけで、AI ナレーション・字幕・BGM・チャプター付きの動画を自動生成するサービスです。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?