こんにちは。集中してたはずが、気づいたら机の配線を全部組み直してました。ADHD社長です。
本業は音楽まわりの仕事をしていて、AIで生成した楽曲の配信運用も担当しています。本記事では楽曲そのものではなく、生成後から公開までの運用をどう実装寄りに整えたかを書きます。生成の話は多いのに、後工程の話はあまり出てこないので、自分の失敗込みで残します。
運用の流れと、詰まる場所
1曲の公開までの工程は、生成→選別→ジャケット整形→メタデータ確定→配信申請→状態確認→記録、です。このうち生成は最初の1工程にすぎません。
実際に詰まったのは次の3点でした。
メタデータの二重管理
曲名・クレジット・ジャンルなどを、申請フォームを開くたびにその場で入力していると、表記が少しずつブレます。後工程(検索・照合・集計)で一致しなくなり、どれが正か分からなくなる。いわゆる「正のデータが複数ある」状態です。
仕様チェックの後回し
ジャケット画像には配信側の仕様(サイズ・形式)があります。作ったまま申請して弾かれ、直して再申請する往復は、1回は小さくても曲数分で効いてきます。
状態の不透明さ
申請中なのか、公開されたのか、差し戻されたのかが一覧できないと、対応漏れが出ます。特に差し戻しは検知が遅れるほど公開も遅れます。
実装方針:正は1つ、関所は前段、状態は明示
曲IDと命名規則
曲ごとに連番IDを振り、音源・ジャケット・管理表の行をIDで結びます。ファイル名にタイトルを含めると改名や表記ゆれで崩れるので、IDベースに寄せるのが安定しました。
管理表を単一の正にする
入力項目は管理表の1行に集約し、フォーム入力は「転記」と定義します。転記と決めると、入力ミスは「正が間違っているか、写し間違えたか」の二択に切り分けられます。切り分けられる失敗は、直しやすいです。
申請前チェックのスクリプト化
判断を含まない確認はスクリプトに落とします。例はジャケットの寸法・形式チェックです。
from PIL import Image
from pathlib import Path
def validate_artworks(folder, size=3000):
ng = []
for p in Path(folder).glob("*"):
try:
with Image.open(p) as im:
if im.size != (size, size) or im.format not in ("JPEG", "PNG"):
ng.append(p.name)
except Exception:
ng.append(p.name)
return ng
凝ったことをする必要はなく、申請前に必ずここを通るという関所として機能すれば十分です。チェックリストの項目を少しずつこの形に置き換えていくと、人の注意力に依存する部分が減っていきます。
状態遷移を表で持つ
曲の状態は draft → submitted → live、差し戻し時は理由つきで rejected に戻す、という単純な遷移で管理しています。状態と次アクションが対応するので、作業の再開地点が常に明確です。これは自作AIアシスタントのタスク管理でも同じ作法を使っていて、「状態のないものは引き継げない」というのが両方に共通する学びでした。
どこまで自動化するか
線引きは「判断が要るかどうか」です。
- 機械に渡す:仕様チェック、転記補助、状態の一覧化
- 人間が残す:曲の選別、公開前の音の確認、差し戻しへの対応判断
生成AIで作るコストが下がった時代、運用の実務は「作る」より「出し続ける」側に寄っていきます。下回りを先に組んでおくと、曲数が増えても運用は崩れません。派手さはないですが、長く効く部分だと思っています。