# -*- coding: utf-8 -*-
"""英語の論文を読む(ショート専用・舞台型・2026-11-07)
エイイチの言葉: 英語は「ほんと全然」できない/英語が混ざっていてわからない
事実: 調査メモ(research/)と原文の PDF(research/pdf/)は同じ名前で置く(MASTER の保存先テーブル)。例は AIRoA-0 の調査(2026-11-06)"""
from butai_parts import *
OUTRO_K = 5
NAME, VER = "英語の論文を読む", 3
HEAD = "英語の論文
読めない?"
T_ON = (0, 0.9)
def paper(left, top, w, h, n, t0, step=0.04, col="#3A4558", lw=None):
"""英語の論文の行(細かい灰色の帯がびっしり並ぶ)"""
import random
random.seed(left + top)
out = ""
for k in range(n):
ww = lw or random.randint(int(w * .55), w)
out += (f'
')
return out
def scene(T, S):
h = CSS
# 0: 英語の論文(細かい行がびっしり)
t0 = T(*T_ON)
h += win(t0, T(1, 0), kick("論文(英語)")
+ f''
f'Abstract
'
+ paper(180, 180, 540, 360, 16, t0 + 0.2)
+ f'?
')
# 1: 僕が読んで、日本語のメモにする(左の英語 → 右の日本語)
t1, s1 = T(1, 0), S(1)
h += win(t1, T(2, 0), kick("Claude が読む")
+ f'原文
'
+ paper(74, 210, 280, 300, 12, t1, 0.0)
+ f''
+ f''
f'日本語のメモ'
f'何がすごいのか
仕組みの要点
うちとの関係
')
# 2: 原文の PDF も、メモと同じ名前で並べる
t2, s2 = T(2, 0), S(2)
def fcard(top, label, ext, d):
return (f''
f'{label}paper_airoa0_20261106{ext}
')
h += win(t2, T(3, 0), kick("置き方") + 'メモと原文は、同じ名前
'
+ fcard(220, "メモ(research/)", ".md", 0.3) + fcard(392, "原文(research/pdf/)", ".pdf", s2 * 0.45))
# 3: 英語が混ざってると、わからん(混ざった英語に線を引く)
t3, s3 = T(3, 0), S(3)
h += win(t3, T(4, 0), kick("エイイチの声")
+ f''
f'同じ重みが cross-embodiment で
別のロボットでも動く
'
+ f''
+ f'わからん
')
# 4: メモは日本語だけで書く
t4 = T(4, 0)
h += win(t4, None, kick("だから")
+ f''
f'同じ重みが、別のロボットでも
そのまま動く
'
+ f'日本語だけ
')
h += outro(T, OUTRO_K)
return h
def OVER(T):
return stage_fx(T, shakes=[(T(3, 1.0), 0.5)], fx=[dict(kind="speed", t=T(3, 0.0), d=1.2), dict(kind="shine", t=T(4, 1.2), d=0.9)])
FACE = [(-1, 0.0, 1.0, "smile"), (1, 0.0, 2.5, "joy"), (3, 0.0, 2.3, "surprise"), (4, 0.0, 2.8, "joy"), ("end", 0.0, 3.0, "smile")]
POSE = [(-1, 0.0, 1), (0, 0.4, 3), (1, 0.0, 1), (3, 0.0, 2), (4, 0.6, 4)]
LEAN = []
INTRO = "drop"
MOVES = [(1, 0.3, "hop", 1.0), (3, 0.4, "back", 0.8), (4, 0.3, "spin", 1.0)]
SE = [(-1, 0.0, "se_whoosh", -9), (0, 0.9, "se_boot", -12), (0, 2.4, "se_pop", -12), (1, 1.0, "se_ding", -11),
(2, 0.3, "se_whoosh", -13), (2, 1.6, "se_whoosh", -13), (3, 0.9, "se_pechin", -10), (3, 1.4, "se_buzz", -14),
(4, 1.2, "se_ding", -9), (5, 0.0, "se_whoosh", -12)]
ENDING = dict(kind="jump", at=(4, 1.2))