# -*- coding: utf-8 -*- # 台本「配膳ロボット、何台入れたら店は変わる?」— シリーズ「配膳ロボット導入シミュレーション」第1回(/series8 の試算が元の解説回) # 2026-10-24 4版。codex 1回目(「直してから」・結論「条件つきで成立」・27件)を受けた: # 「回る」は今回の線を下回った意味・人を減らすと料理の待ちが延びる(混雑 45秒→2分17秒・食べ放題 1分17秒→3分26秒)・同じサービスのまま減らせたではない/ # 本人の「限界点」の後に、この試算の条件での限界と断る/4台のぶれは言い切らない/動いていた割合→仕事でふさがっていた割合(受け取り待ちを含む)/ # 空の店から始め片付けまで・ホールの仕事を何人でこなせるか(兼務・準備・休憩は外)・料理を載せる人の時間は入れていない・停止は台数に関係なく同じ確率/ # 料理は3卓ではなく3つまで・デザートとドリンクも/店の普通の混み具合はそれぞれ別の設定/食べ放題は約27分半(ページの表示は27.4)・約18分縮む/ # ハコブくんのまとめ(見立てのあと)は、店長やスタッフ・メーカー・導入を手伝う人と一緒に確かめる、に(宣伝に聞こえすぎないように)/ # すかいらーくは公式の沿革(2022年12月に約2,100店・3,000台の導入完了)。クイズ(料理の58秒)は、冒頭と目次で答えを言っていたので外した/速さの冗談は外した(仮の値だと言う) # 採らなかった: 結論・立場・目次を1文にまとめる案(チャンネルの型) # 2026-10-24 3版。codex 1回目は混雑で止まったが、途中の所見「1人減らして回るは、元の人数より待ちが悪化していても成立する判定」を受けて、 # 混雑の日(4人0台 11.4分 → 3人1台 17.4分)・食べ放題(3人0台 9.2分 → 2人1台 9.8分)・洗い場が遠い店(2.9分 → 6.0分)の延びを足した # 2026-10-24 2版。別のエージェントの照合(食い違い・根拠なし・言い過ぎ)を受けて直した: 2分12秒(2.2059分)・「2台目まで」は席に着くまでと歩く距離に限る・ # 2人で回らないは「普通の混み具合で料理を運ぶだけなら」・混雑では1台で4人→3人(席はあるのに 18.0→9.3分)を足した・食事中に皿を集めて回る使い方は2人+3台で回る(7.5分)を次回へのつなぎに・ # 歩く距離は「2時間に来たお客さんを送り出すまで」・40回のぶれは弱めた・食べ放題はぎりぎり(席はあるのに9.19分)・図面は今日の店では使っていない・ # 見立ては本人の言葉(専門家の知見)だけをエイイチの見立てにし、台数・決まり・任せる仕事の並びはハコブくんのまとめにした # 2026-10-24 1版。エイイチがシリーズにすると決め、第1回を「何台入れたら店は変わる?」にした(試算 → 費用 → 店の形 → Unity の順につなぐ) # エイイチの実感(2節26。言い回しだけ整え、中身は足していない): # - 1台で料理が遅くなる結果に「意外な結果だなと。でも現時点での配膳ロボットの限界点もよくわかった」 # - 見かけた店のロボットは「2台くらいかな」 # - 任せたかった仕事「お客さんの食べ終わったお皿下げてほしいし、パントリーに下げてきたお皿類を洗い場まで下げてほしい。 # シルバー(フォークとかスプーン)を拭いて欲しかった(地味に大変)」 # - 見る人に持ち帰ってほしいこと「ロボットを入れるだけでは良くならないこともあり、そこには専門家の知見が必要と知ってほしい」 # 数字の出どころ: サイトの試算 v2.7(public/sim/serving-robot.html に埋め込みの結果・16,425条件×40回)。2026-10-24 に p2m-site の # src/lib/servingSim.ts の find() で読んだ。条件は「普通の混み具合・料理を運ぶだけ・1往復で最大3卓・壊れやすい皿は誰が運んでもよい」 # 入店待ち=entry_wait_mean(店に来てから案内されて卓に着くまで)/席はあるのに待った=staff_wait_mean/料理=dish_wait_mean(料理ができてから卓に届くまで) # - 標準ファミレス(35卓・35組/時)スタッフ3人 0〜6台: 入店 8.58/4.03/3.16/2.91/3.90/3.47/3.29分・ # 料理 0.97/2.21/1.02/0.65/0.55/0.52/0.51分(58秒/2分12秒(2.2059分)/約1分(61.5秒)/39秒/33秒/31秒/31秒)・席はあるのに 7.41/3.26/2.35/2.44/3.21/2.85/2.73分・ # 歩く距離 3.88/2.69/2.35/2.34/2.37/2.38/2.36km・ロボットが動いている割合 —/0.75/0.58/0.43/0.33/0.27/0.23 # - 同 スタッフ2人 0〜6台: 入店 28.25/16.85/14.26/14.17/14.86/16.07/15.37分(すべて「店が回らない」) # - 焼肉食べ放題(35卓・20組/時・150分)スタッフ2人 0/1/2台: 27.45(回らない)/9.80/6.37分 # - 洗い場が遠い店(30卓・22組/時)スタッフ2人 0/1台: 10.94(回らない)/6.03分 # - 同 混雑(45組/時)店が回る最少のスタッフ 0/1台: 4/3人(3人0台は席はあるのに18.0分・3人1台は9.3分) # - 同 スタッフ2人・食事中に皿を集めて回る使い方 3台: 入店7.5分(回る) # - 大型店(60卓・60組/時)店が回る最少のスタッフ 0/1/2/3台: 6/6/5/5人 # - 前提: ロボット 秒速0.5m・人 秒速1.0m・料理はまずロボットを待ち、2分(robot_first_wait_s=120)たっても来なければ人も運べる(v2.7・2026-10-23 エイイチと決めた) # 一時停止は往復の30%で3〜10秒・立ち往生は往復の1%(pause_rate 0.3・stuck_rate 0.01)。店が回らない=席はあるのに待った時間が平均10分以上(LOG359) # 出典(台本の中の事実): # - hook: すかいらーくグループ 2022年末までに約2,100店・約3,000台(Business Insider Japan https://www.businessinsider.jp/article/267599/ ・LOG351) # 1.4台は 3,000÷2,100 を単純に割った値(店ごとの台数ではない) # - fair: v2.6 までは「先に空いた方が運ぶ」で、受け渡し口の横のスタッフが多く運んでいた(haizen_sim.py v2.7 の注記・LOG367) # - buffet_why: 運ぶ仕事が重い店ほど効く(LOG351 の言い方) # 何の動画か(5行・video_rules.md 2節16) # 1. 配膳ロボットは、何台入れたら店が変わるのか(シリーズ1回目・試算の回) # 2. 35卓のファミレスでスタッフ3人のまま0〜6台: 席に着くまで 8.6→3.2分(2台)。3台目からはほぼ変わらない # 3. 1台だけだと料理はかえって遅くなる(58秒→2分13秒)。料理がロボットを待つ決まりのため。台数と決まりはセットで決める # 4. 何台入れても、スタッフ2人では回らない。変わるのは待ちで、人数ではない。ただし焼肉食べ放題・洗い場が遠い店は1台で2人でも回る # 5. 見立て: ロボットを入れるだけでは良くならないこともある。台数・決まり・任せる仕事を、店を見て決める知見が要る。次回から費用・図面・3Dの店へ # 話すのはハコブくん。エイイチは三人称で呼ぶ(video_rules.md 3-1) # # 各要素: (場面の名前, 表情, 字幕の文, 後ろの間[秒]) 間を省略すると 0.35 秒 # 字幕の文の中の「|」: 1文を読み上げたまま、字幕だけをそこで次の1枚に替える FACES = ("base", "smile", "surprise", "doubt", "think", "trouble", "joy", "wink") SEGS = [ # 0 フック ("hook", "base", "ファミレスで、ネコの顔をした配膳ロボットを見かけたとき、その店に何台いたか、覚えていますか。"), ("hook", "base", "すかいらーくグループは、2022年の12月に、約2,100店へ、約3,000台の導入を終えました。|単純に割ると、1店あたり平均で約1.4台です。"), ("hook", "smile", "エイイチが見かけた店も、2台くらいだったそうです。", 1.2), ("hook_q", "doubt", "では、2台より3台、3台より6台。ロボットを増やせば増やすほど、店は良くなるのでしょうか。", 1.2), ("hook_try", "think", "そこで、ファミレスの混む時間帯の2時間を、パソコンの中で再現して、ロボットを0台から6台まで、1台ずつ増やしてみました。"), ("hook_try", "surprise", "すると、ある台数から先は、席に着くまでの時間が、ほとんど縮まなくなりました。|しかも1台だけのときは、料理が、かえって遅く届いたんです。", 1.8), # 1 自己紹介 ("title", "smile", "Pixels to Motors。案内役のハコブくんです。"), ("title", "base", "この番組では、フィジカルAIのニュースや実機の記録から、現場で使える形を考えます。", 1.2), ("title_eiichi", "base", "エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。|その中で分かったことと、そこから考えた見立てを、ハコブくんがお伝えします。", 1.8), # 2 今日の問い ("question", "surprise", "今日の問いは、配膳ロボットを何台入れたら、店は変わるのか、です。", 1.2), ("define", "base", "見るのは3つです。お客さんが店に来てから、席に着くまでの時間。料理ができてから、人かロボットが卓に着くまでの時間。|そして、ホールのスタッフを減らしても、店が回るかどうか。"), ("define2", "base", "この試算では、席は空いているのに、片付けや案内を待たせた時間が、平均で10分以上になったら、「店が回らない」と数えます。|この10分は、エイイチが決めた比べるための線で、実際の店の営業を決める基準ではありません。満席で待つ時間は入れていません。", 1.2), ("scope", "base", "話の範囲も言っておきます。これは、パソコンの中の試算です。|数字の多くは、公開されている導入事例やメーカーの仕様をもとにした仮の値で、実際の店で測ったものではありません。"), ("scope", "base", "店は、お客さんが1人もいない状態から始めて、2時間だけお客さんを受け入れ、最後の片付けが終わるまでを計算します。|比べるのは、試算に入れたホールの仕事を何人でこなせるかで、厨房との兼務や準備、休憩までは入っていません。"), ("scope", "base", "そしてこの動画は、シリーズの1回目です。今日は、時間と数だけで計算する試算の話。|通路でロボットがどこで止まるかは、このあとの回で、3Dの店を建てて調べます。", 1.2), # 3 結論と立場 ("answer", "base", "先に結論を言うと、35卓のファミレスで、スタッフ3人のまま、料理を運ぶロボットを増やすと、席に着くまでの時間は、2台目までで大きく縮み、3台目から先は、大きくは縮みませんでした。"), ("answer_two", "think", "そして、普通の混み具合で、料理を運ぶだけなら、試した6台までのどの台数でも、スタッフを3人から2人にすると、店は回りませんでした。|変わったのは待ち時間で、要る人数ではなかったんです。", 1.2), ("stance", "base", "先に言っておくと、配膳ロボットは意味がない、と言いたいわけじゃないんです。"), ("stance", "smile", "人を減らさずに足せば、席に着くまでの時間は縮みました。|そして、店の種類や混み具合によっては、1台入れると、1人少なくても、今回の線を下回りました。ただし、そのときは料理の待ちが延びています。", 1.2), # 4 目次 ("toc", "base", "大きく3つあります。"), ("toc", "base", "スタッフ3人のまま、ロボットを増やすと、何が変わるのか。"), ("toc", "base", "1台だけだと、なぜ料理が遅くなるのか。"), ("toc", "base", "人を減らせる台数は、あるのか。"), ("toc", "smile", "特に2つ目は、ロボットにとって、ちょっと気の毒な話です。最後に、エイイチの見立てを話します。", 1.8), # 5 節1:3人のまま増やす ("c1", "base", "1つ目、スタッフ3人のまま、ロボットを増やすと、何が変わるのか、です。", 1.2), ("c1", "base", "一言で言うと、席に着くまでの時間は、2台目までで大きく変わり、そこから先は横ばいです。", 1.2), ("setup", "base", "試算の店は、35卓のファミレス。普通の混み具合で、1時間に35組が来ます。|ロボットは料理を運ぶだけで、デザートやドリンクも含めて、1回の往復で料理を3つまで運びます。"), ("simpy", "base", "使ったのは、SimPyという、Pythonの道具です。お客さんが来る、料理ができる、誰かが運ぶ、皿を下げる、といった出来事を時間の順に並べて、どこで待ちが生まれるかを数えます。"), ("simpy", "base", "1つの条件を40回計算して、平均を出しています。"), ("speed", "base", "ロボットの速さは、仮に秒速0.5メートル。人が歩く速さの半分です。この速さも、実際の店で測った値ではありません。", 1.2), ("entry", "base", "まず、お客さんが店に来てから、席に着くまで。ロボットなしで8.6分。1台で4.0分。2台で3.2分。"), ("entry_flat", "surprise", "3台で2.9分。そこから先は、4台でも6台でも、3分台です。"), ("entry_flat", "base", "4台では3.9分と、3台より延びています。偶然のばらつきかどうかは、この平均だけでは分かりません。|ここでは、2台目までのような大きな縮み方は、もう見られなかった、と読んでください。", 1.2), ("why1", "think", "席に着くまでが縮んだのは、料理を運ぶ仕事がロボットに移って、人の手が、片付けや案内に回ったからです。"), ("why1b", "base", "席は空いているのに待たせた時間は、ロボットなしの7.4分から、2台で2.3分まで減りました。"), ("why1c", "think", "でも、皿を下げて卓を拭くのも、案内も、会計も、人の仕事のまま。|今回の作業時間と仕事の順番では、ロボットを増やしても、人の仕事を待つ時間が残りました。"), ("util", "base", "6台入れたときに、ロボット1台が仕事でふさがっていた時間は、平均で2割ちょっと。お客さんが料理を取るのを待つ時間も含めて、です。"), ("util", "smile", "台数に対して、出番は少なくなりました。ハコブくんなら、ちょっと居心地が悪いです。", 1.2), ("walk", "base", "人が歩く距離も見ておきます。お客さんが帰ったあとの片付けまでで、ロボットなしでは1人3.9キロ。2台で2.3キロ。約4割減です。これも、3台目から先は変わりませんでした。"), ("c1_end", "base", "席に着くまでの時間と歩く距離が大きく変わったのは、2台目まで。料理を早く届けたいなら、3台目にも効き目がありました。そこは、次の話です。", 1.8), # 6 節2:1台だと遅くなる ("c2", "base", "2つ目、1台だけだと、なぜ料理が遅くなるのか、です。", 1.2), ("dish_ans", "surprise", "料理ができてから卓に着くまで。ロボットなしの58秒が、1台では2分12秒。倍以上に延びました。"), ("dish_more", "base", "2台で約1分、3台で39秒。ロボットなしより早く届くようになったのは、3台目からでした。", 1.2), ("rule", "base", "理由は、この試算の運び方の決まりにあります。料理ができたら、まずロボットを待つ。2分待ってもロボットが来なければ、人も運べるようにする。"), ("rule", "think", "ロボットを入れたのなら、人よりロボットに働いてもらう。エイイチが、そう決めた決まりです。"), ("rule2", "base", "ロボットが1台だと、往復している間に、次の料理ができてしまいます。その料理は、受け渡し口でロボットの帰りを待つ。これが積み重なって、平均が延びました。"), ("rule2", "smile", "1台のときは、ロボットが仕事でふさがっていた時間が、約4分の3。がんばっているのに、遅いと言われる。ちょっと気の毒です。", 1.2), ("fair", "base", "現場なら、手が空いた人が先に運ぶ、というやり方もあります。|前の版の試算はその決まりで、受け渡し口の近くにいる人が先に運び、ロボットの出番が減っていました。2分待つのがいいか、すぐに人も運ぶのがいいかは、別に比べる必要があります。"), ("honne1", "smile", "この結果を見たエイイチの感想は、「意外な結果だなと。でも、いまの配膳ロボットの限界点も、よくわかった」、だそうです。"), ("honne1", "base", "ただ、今回分かったのは、この試算の条件での限界です。今の製品の性能を測ったわけではありません。", 1.2), ("c2_end", "think", "何台入れるかは、誰が先に運ぶかの決まりと、セットで決める。台数だけを見ても、答えは出ません。", 1.8), # 7 節3:人を減らせる台数 ("c3", "base", "3つ目、人を減らせる台数は、あるのか、です。", 1.2), ("c3", "base", "一言で言うと、このファミレスの普通の日に、料理を運ぶだけなら、試した6台までには、ありませんでした。でも、混み具合や店が変わると、答えも変わります。", 1.2), ("two", "base", "スタッフを2人にすると、ロボットなしでは、席に着くまで28.3分。"), ("two_b", "trouble", "1台で16.9分、2台で14.3分。3台から6台でも、14分から16分のまま。どれも、店が回らない、に入りました。"), ("two_c", "think", "運ぶ仕事はロボットが持っていっても、皿を下げて、卓を拭いて、案内するのは、2人のまま。そこが追いつかないんです。", 1.2), ("honne2", "base", "昔ファミレスで働いていたエイイチに、ロボットに任せたかった仕事を聞いてみました。"), ("honne2_list", "smile", "お客さんが食べ終わった皿を下げること。パントリーに下げた皿を、洗い場まで運ぶこと。|そして、フォークやスプーンを拭くこと。「地味に大変」だそうです。"), ("honne2_c", "base", "どれも、今日の試算のロボットには、任せていない仕事です。"), ("patrol", "smile", "実は試算には、食事中に席を回って、お客さんに空いた皿を載せてもらう使い方もあります。|ロボットが来るたびに、お客さんが一定の量の皿を載せてくれる前提なら、2人とロボット3台で、今回の線を下回りました。この話は、次の回で。", 1.2), ("crowd", "base", "同じ店でも、混雑の日は話が変わります。1時間に45組来ると、ロボットなしでは4人要るところが、1台で、3人でも今回の線を下回りました。"), ("crowd_note", "think", "ただし、席に着くまでの時間は、4人のときの11.4分から17.4分に、料理の待ちは45秒から2分17秒に延びます。|同じサービスのまま人を減らせた、という意味ではありません。", 1.2), ("other", "base", "では、店が変わるとどうなるか。試算には、ファミレスのほかに、店の種類があと4つあります。|それぞれの店に、来客数も食事の長さも別々の、普通の混み具合を置いています。店の種類だけを変えた比べではありません。"), ("buffet", "surprise", "焼肉の食べ放題の店では、スタッフ2人だと、ロボットなしで約27分半。1台入れると9.8分に、約18分縮んで、今回の線を下回りました。"), ("buffet", "base", "ただ、3人でロボットなしの9.2分より少し長く、料理の待ちは1分17秒から3分26秒に延びます。追加の注文が多くて、皿の行き来が多い店です。"), ("hotel", "base", "洗い場が遠い店でも、2人とロボット1台で、線を下回りました。ただ、3人のときの2.9分に比べると、6.0分に延びます。"), ("large", "base", "60卓の大型店は、普通の混み具合で、6人が5人に。ただし、5人で線を下回るのは、2台からです。", 1.2), ("c3_end", "think", "何台で、何が変わるかは、店と混み具合ごとに違う。近い店の数字は、自分の店の答えにはなりません。", 1.8), # 8 見立て ("mitate", "base", "ここからは、エイイチの見立てです。", 1.2), ("mitate1", "think", "ロボットを入れるだけでは、良くならないこともある。そこには、専門家の知見が要る。エイイチは、そのことを知ってほしいと考えています。", 1.2), ("mitate2", "base", "今日の比べでも、台数と、任せる仕事で、答えが変わりました。誰が先に運ぶかという決まりも、結果に関わっています。"), ("mitate2", "smile", "ハコブくんなりに言うと、まず、店の仕事を知る人と一緒に、運び方を確かめることです。|その人は、店長やスタッフかもしれないし、メーカーや導入を手伝う人かもしれません。", 1.2), ("limits", "base", "ただ、フェアに言っておくと、今日の試算は、時間と数だけの計算です。"), ("limits", "base", "ロボットが止まるのは、台数に関係なく、往復の3割で数秒、1%で人が動かしに行く、と仮に置いています。台数が増えて、ロボットどうしが邪魔になることは、まだ入っていません。"), ("limits", "base", "料理をロボットに載せて、行き先を決める人の時間も入っていません。|そして今日の35卓の店は、卓までの距離を幅で置いただけで、図面は使っていません。", 1.2), ("next", "smile", "だから次の回からは、そこを調べていきます。まず、人は減らせるのか、月いくら浮くのか。|そのあと、店の図面から3Dの店を建てて、ロボットを走らせます。実際の店にどこまで合うかは、店での観察とも照らしていきます。", 1.8), # 9 問いへの回答 ("answer2", "base", "じゃあ、冒頭の問いに答えますね。配膳ロボットを何台入れたら、店は変わるのか。"), ("answer2", "think", "35卓のファミレスで、スタッフ3人のまま増やすと、2台までで、席に着くまでの時間が8.6分から3.2分に縮み、3台目から先は、大きくは縮みませんでした。"), ("answer2b", "base", "1台では、ロボットを待つ決まりのため、料理はかえって遅く届きました。|そして、普通の混み具合で料理を運ぶだけなら、試した6台まで、3人を2人にすると、店は回りませんでした。"), ("answer2b", "base", "混雑の日や、焼肉の食べ放題、洗い場が遠い店では、1台で、1人少なくても線を下回りました。ただし、待ち時間は延びています。|何台で変わるかは、店と混み具合と、決まりで変わります。", 1.2), ("question_next", "smile", "次に、配膳ロボットのいる店に行ったら、数えてみてください。何台いて、料理を運んでいるのは、ロボットか、人か。", 1.2), ("try", "smile", "この試算は、サイトのシリーズのページで、台数や人数を変えて試せます。リンクは、概要欄に置いておきます。", 1.8), # 10 アウトロ ("outro", "smile", "この動画が役に立ったら、高評価とチャンネル登録をお願いします。"), ("outro", "base", "ロボットの開発や導入の相談は、概要欄の連絡先から、エイイチに直接どうぞ。"), ("outro", "wink", "コメントは、エイイチが全部読んでいます。それではまた。", 1.2), ] # 「エイイチ」を残す文(自己紹介・目次の最後・見立ての入り・アウトロの2文のほかに、名前が要る文)。文の頭で探す(video_rules.md 3-1) NAME_OK = [i + 1 for i, seg in enumerate(SEGS) if seg[2].startswith(( "エイイチが見かけた店も", "この試算では、席は空いているのに、片付けや案内を", "ロボットを入れたのなら、人よりロボットに", "この結果を見たエイイチの感想は", "昔ファミレスで働いていたエイイチに", "ロボットを入れるだけでは、良くならないこともある", ))] # 読み上げ用の読み(仮音声 Open JTalk 用。字幕は元の表記のまま) READ = [ ("Pixels to Motors", "ピクセルズ トゥー モーターズ"), ("YouTube", "ユーチューブ"), ("SimPy", "シムパイ"), ("Python", "パイソン"), ("Unity", "ユニティ"), ("フィジカルAI", "フィジカルエーアイ"), ("AI", "エーアイ"), ("1人", "ひとり"), ("2人", "ふたり"), ("1つ", "ひとつ"), ("2つ", "ふたつ"), ("3つ", "みっつ"), ("2,100", "にせんひゃく"), ("3,000", "さんぜん"), ("栄一", "えいいち"), ("「", ""), ("」", ""), ("『", ""), ("』", ""), ("|", ""), ("…", ""), ] # ElevenLabs の声で読み間違えた語だけ、読みを直す(tts_eleven.py が使う。字幕は変えない) ELEVEN_READ = [ ('エイイチ', '栄一'), # video_rules.md 3-1(2026-10-12 決定) ('額だけ', 'がくだけ'), ('裏表', 'うらおもて'), ('R2R2R', 'リアルツーレンダーツーリアル'), ('SIer', 'エスアイヤー'), ('ロボットの側', 'ロボットのがわ'), ('4コママンガ', 'よんコマまんが'), ('OpenAI', 'オープンエーアイ'), ('Claude Code', 'クロード コード'), ('Claude', 'クロード'), ('描く', 'えがく'), ('描き', 'えがき'), ('物差し', 'ものさし'), ('力制御', 'ちからせいぎょ'), ('人型', 'ひとがた'), ('Mac', 'マック'), ('SimPy', 'シムパイ'), ('Python', 'パイソン'), ('Unity', 'ユニティ'), # この回で先回りして足す読み(--try で確かめる) ('1.4台', 'いってんよんだい'), ('2分12秒', 'にふんじゅうにびょう'), ('3分台', 'さんぷんだい'), ] # 間延び対策:ひと息が長い文だけ、読み上げ用に読点を足す(字幕は変えない) OVERRIDE = { "エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。|その中で分かったことと、そこから考えた見立てを、ハコブくんがお伝えします。": "エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。その中で分かったことと、そこから考えた見立てを、ハコブくんが、お伝えします。", } def reading(t): t = OVERRIDE.get(t, t) for a, b in READ: t = t.replace(a, b) return t def parse(seg): """1行を (場面, 表情, 字幕, 間) にそろえる。表情の欄がない古い形 (場面, 字幕[, 間]) も読む""" if len(seg) >= 3 and seg[1] in FACES: scene, face, text = seg[0], seg[1], seg[2] pause = seg[3] if len(seg) > 3 else 0.35 else: scene, face, text = seg[0], "base", seg[1] pause = seg[2] if len(seg) > 2 else 0.35 return scene, face, text, pause