# -*- 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))