# -*- coding: utf-8 -*- """このショートの作り方(ショート専用・舞台型・2026-11-06) エイイチの言葉: 動画づくりで一番時間を取られるのは音声確認(2026-11-02)。部屋は依頼箱 #99 で Claude Code が Unity で建てた(22:46 開始 → 22:59 完了=13分)""" from butai_parts import * OUTRO_K = 6 # 締めの文の番号(narration.py の最後に足した文) NAME, VER = "このショートの作り方", 3 HEAD = "この動画
誰が作った?" T_ON = (0, 1.0) STEPS = ["台本", "画面", "部屋", "声", "決める"] def pipe(done, now=(), t=None): """下の段に5つの工程。done はもうオレンジ、now は t で灯す""" out = "" for k, nm in enumerate(STEPS): st = f"background:{ORANGE};color:#fff;" if k in done else "" an = f"animation:{a('on', t, .25)};" if (k in now and t is not None) else "" out += (f'
{nm}
') return out def wave(t0, left=48, top=150, w=804, h=220, n=36, dim=False): import random random.seed(3) bw = w / n out = "" for k in range(n): d = random.uniform(.35, .8) out += (f'
') return out def scene(T, S): h = CSS # 0: どうやって作ってる? h += win(T(0, 1.0), T(1, 0), f'
?
') # 1: 台本と画面は Claude t1 = T(1, 0) h += win(t1, T(2, 0), kick("台本と画面") + '
Claude
' + pipe([], [0, 1], t1 + 0.6)) # 2: この部屋は Claude Code が Unity で建てた(13分) t2 = T(2, 0) h += win(t2, T(3, 0), kick("この部屋(Claude Code × Unity)") + f'
0分で建った
' + counter_js("m13", t2 + 0.4, t2 + 2.4, 13, 0) + pipe([0, 1], [2], t2 + 0.6)) # 3: 声は ElevenLabs(波形が動く) t3 = T(3, 0) h += win(t3, T(4, 0), kick("声は ElevenLabs") + wave(t3 + 0.2, top=130, h=260) + pipe([0, 1, 2], [3], t3 + 0.5)) # 4: いちばん時間がかかるのは、音声の確認(波形の上を再生ヘッドが何度も往復) t4, s4 = T(4, 0), S(4) h += win(t4, T(5, 0), kick("いちばん時間がかかる") + wave(t4, top=130, h=200, dim=True) + "" + f'
' + f'
音声の確認
') # 5: 見て決めるのは、エイイチさん t5 = T(5, 0) h += win(t5, None, kick("見て決めるのは") + f'
エイイチ
' + pipe([0, 1, 2, 3], [4], t5 + 0.3)) h += outro(T, OUTRO_K) # 締め:サイトへの入口 return h def OVER(T): return stage_fx(T, bursts=[(T(5, 0.3), 200)]) FACE = [(-1, 0.0, 1.0, "joy"), (1, 0.0, 3.3, "joy"), (2, 0.0, 3.5, "smile"), (3, 0.0, 3.6, "wink"), (4, 0.0, 3.0, "trouble"), ("end", 0.0, 3.0, "joy")] POSE = [(-1, 0.0, 1), (2, 1.5, 3), (3, 0.0, 2), (4, 0.0, 2), (5, 0.3, 4)] LEAN = [] INTRO = "hop" MOVES = [(1, 0.2, "jump", 1.0), (2, 0.5, "turn", 1.6), (3, 0.3, "tilt", 1.2), (5, 0.3, "bow", 1.2)] SE = [(-1, 0.0, "se_rise", -9), (0, 1.0, "se_boot", -12), (1, 0.0, "se_whoosh", -12), (1, 0.6, "se_ding", -11), (2, 0.0, "se_whoosh", -12), (2, 2.4, "se_ding", -10), (3, 0.0, "se_whoosh", -12), (4, 0.0, "se_whoosh", -12), (4, 1.4, "se_pechin", -9), (5, 0.3, "se_jaran", -10), (5, 0.3, "se_ding", -9)] ENDING = dict(kind="jump", at=(6, 0.9)) # 2026-11-07 跳ねると頭が工程の「声」にかかるので、締め(サイトの入口)で跳ねる