# -*- coding: utf-8 -*- # 台本「配膳ロボットは「0.5人分」? ― 1人減らせる条件と、月いくら浮くか」— シリーズ「配膳ロボット導入シミュレーション」第2回(/series8 の試算が元の解説回) # 2026-10-25 12版。全文の声(93文)が16分29秒だったので、声を作り直さずに13文を抜いた(エイイチが決めた。約13分50秒の見込み): # 抜いた文(11版の番号・0から): 12 今日はその先・24〜25 立場(割に合わないとは言わない)・37 空いた卓には皿が残ったまま・46 食べ放題の事例・50 2台の10.5分は線のすぐ上・ # 51 片付けが軽くなる理由・52 歩く距離・55 40回の平均・60 節3の一言・72 設定や研修の費用/2時間だけのシフト・78 見立ての中の結果の繰り返し・83 観察シート # 声は voice_eleven/ハコブ_抜き後/ に番号を付け直して写した(元の voice_eleven/ハコブ/ は残す)。間: 11(前回の振り返り)・36(2人で追いつかない)を 1.2秒、82(見立ての終わり)を 1.8秒に # 設定や研修の費用・観察シートは概要欄で触れる # 「ただ、」が2文続いたので、68(honne3)の頭を「それに、」にした(エイイチが決めた。--name ハコブ_抜き後 --lines 68 で作り直す) # 2026-10-25 11版。codex 2回目(「直してから」・作り直しは不要・結論「条件つきで成立」・13件。数字は一致・1回目の主な指摘は直っている)を受けた: # - 必ず直す4つ: 料理の時間は「料理ができてから卓に届くまで」と言う(2か所)/補助金は条件を満たした場合・解雇すると対象外や返還の条件がある(公募要領 18〜19ページ)/ # 人を減らさずに3人+2台を足す場合は、月7.5万円ではなく月14.4万円の追加(別の条件の費用を結びつけていた) # - 10分の線を11分にすると2台で足り、持ち出しは月約3,000円(2 × 72,000 − 141,240 = 2,760円) # - 浮く人件費は、料理を載せる人・皿を降ろす人の勤務を増やさずに給料を減らせた場合と言う/導入時の設定や研修の費用は入れていない/借りる契約でも支援の対象になるものがある # - 見立てのあとに、人が食事中に下げる・客に返してもらう方法とは比べていない(ハコブくんの文。エイイチの言葉は変えない) # - 冒頭の問いの言い方(店の人の言葉を「無理」と言い切っていない)・1往復で3つ・歩く距離は1人あたりの平均で帰ったあとの片付けまで・観察シートは残った皿の量も # - 採らなかった: 目次と「一言で言うと」を省く構成(チャンネルの型) # 2026-10-25 10版。codex 1回目(「直してから」・結論「条件つきで成立」・22件。数字の検算は一致)を受けた。指摘は試算のコード(v2_7/haizen_sim.py)で確かめた: # - 皿を集めて回る使い方の置き方を具体的に言う(collect_visit は皿の有無や客の拒否を見ずに回収を1回数え、bus は 2−回収数 で人の往復を減らし、0なら皿をまとめる40秒も省く) # - ロボットに料理を載せる・集めた皿を洗い場で降ろす人の手間はコードにない(staff_place_s は人が配る時だけ)→ scope で言う # - お金は「実際のシフトで1人減らせた場合の仮の計算」・2時間だけ減らすシフトは試していない・4時間は試算の外 # - 混雑の日も要る人数は1人減る(4→3)。「毎日1人減らせるとは限らない」は外し、給料を減らせるかは来客とシフトで決まる、に # - 買う場合は本体750万円・補助金375万円を受け取れれば自己負担375万円・代金は先に払う・補助金なしは約6年(750万÷105,240=71.3か月)で5年に収まらない # - 借りる値段の「相場・真ん中が6万円台」は出典で確かめられないので外し、仮に置いた値と言う(お名前.com の記事は月約3〜10万円) # - 「ロボットが1人分を丸ごと受け持てる」は外し、冒頭の実感と試算はそのまま比べられない(3台+客の協力で要る人数が1人減るか)と言う # - 3台は10分の線に左右される(2台 10.5分。線を11分にすれば2台)・「3台以上」→「3台から6台」(調べた範囲)・40回の平均でばらつきは示していない # - 空の店から始めることを scope に戻した・故障や充電で1台が長く使えない場合は入っていない・食べ放題の例は下げる専用・料理の遅れは線に入れていない # - 節1を縮めた(前回の話の繰り返し・ロボットの載せ方の説明を外した)。人件費以外の変化は「見合うかは店で確かめる」・観察シートは皿を載せた割合も数える必要 # - 採らなかった: 見立ての「何を受け持たせるかで決まる」の言い換え(エイイチの言葉なのでそのまま。続くハコブくんの文で「人の仕事をどう組み直すか」を足した)/ # 時給の差し引きゼロの計算(1,800円)・料理の遅れが悪化する混雑の例(冗長)/宮崎の言葉は、エイイチが渡した YouTube の文字起こしのまま(codex は音声を取得できず未確認) # - 2台を借りる場合: 2 × 72,000 = 144,000円 → 差し引き −2,760円(台本では言っていない) # 2026-10-25 9版b。別のエージェントの照合(数字の食い違いなし・言い方4つ)を受けて直した: 下げ膳にもは席はあるのに13.3分と言う/ # 皿を集めて回るはデザート・ドリンクもロボットが運んでよい前提と言う/買う場合の約3年は割る数(月約10.5万円)を言う/4時間は試算の外と断る # 2026-10-25 9版(第2回として作り直し)。エイイチが「未公開の『配膳ロボットで1人減らせるか』を第2回にして、最新の試算の数字に直す」に決めた(2026-10-24)。 # 8版(v2.4 の数字・単発の回)は _旧版/置き換え前_20261025_配膳ロボットで1人減らせるか_第2回化/ に置いた # - 数字をすべて試算 v2.7 に直した(料理はまずロボットを待つ決まり)。2人2台・料理を運ぶだけの料理の待ちは 40秒 → 54秒になり、冒頭の「料理は早く届くのに」は成り立たなくなった # - 第1回と重なる所を外した: SimPy の説明・3つの使い方の説明の大半・6台のクイズ(第1回 S055)・焼肉の食べ放題と洗い場が遠い店(第1回 S064〜S066) # - 第1回の予告(S060「2人とロボット3台で線を下回った。この話は次の回で」・S076「まず、人は減らせるのか、月いくら浮くのか」)に合わせ、 # 本編を「料理を運ぶだけでは減らせない → 皿を集めて回ると減らせる → 減ったら月いくら浮くか」の3つにした。費用の節は新しく足した # - 宮崎県の店の人の言葉(0.5・0.25)をフックに移し、費用の節の終わりで呼び戻す # - 混雑の日(45組)は、皿を集めて回る使い方でも2人では回らない、を足した(毎日1人減らせるとは限らない) # - エイイチの実感(honne1〜3・define2)は8版のまま。費用の見方(mitate_cost)は、エイイチの言葉(2026-10-23) # 「店がロボットを入れる目的は人件費を下げることだけでなく、人手不足の解消・スタッフの作業軽減・店舗のサービス向上もある。人件費が浮かない結果も正直に見せる」から # - 8版のかみむら牧場・2回集めると食後にまとめる手間がなくなる計算・観察シートのボタンの説明・Warpify は外した(冗長・v2.7 で確かめ直していない) # 数字の出どころ: サイトの試算 v2.7(p2m-site の public/sim/serving-robot.html に埋め込みの結果・16,425条件×40回。2026-10-25 に読んだ。p2m-site 2bc3cd4) # 条件は試算ページの既定と同じ「普通の混み具合・1往復で最大3つ・壊れやすい皿は誰が運んでもよい」(servingSim.ts の find と同じ) # 入店待ち=entry_wait_mean/席はあるのに待った=staff_wait_mean/料理=dish_wait_mean/歩く距離=walk_km_per_staff # - 標準ファミレス(35卓・35組/時)3人0台: 入店 8.58分(席はあるのに 7.41)・料理 0.965分(58秒)・歩く 3.88km # - 2人2台 料理を運ぶだけ: 入店 14.26(13.24)・料理 0.892分(54秒)→ 店が回らない # - 2人2台 下げ膳にも: 入店 14.30(13.26)→ 回らない。2人6台 料理を運ぶだけ: 15.37(14.16)→ 回らない # - 2人 皿を集めて回る 1〜6台: 入店 17.02/11.68/7.54/7.21/9.78/8.77・席はあるのに 15.45/10.47/6.85/6.35/8.71/7.56(3台から回る) # 3台: 料理 0.862分(52秒)・歩く 2.46km # - 混雑(45組/時)店が回る最少のスタッフ(皿を集めて回る)0〜6台: 4/3/3/3/3/3/3(2人ではどの台数でも回らない) # - 3人2台 料理を運ぶだけ: 入店 3.16分(第1回の 3.2分) # - 費用(試算ページ・servingSim.ts の COST の既定): 1台 月6万円で借りる・保守 月1万円(仮置き)・充電 月2,000円・時給 1,177円(2026年度の最低賃金の全国加重平均) # 浮く人件費=減った人数 × 2時間(ピーク)× 1日2回 × 30日 × 1,177円 = 141,240円(月約14.1万円)。4時間なら 282,480円 # 3台借りる: 3 ×(60,000+10,000+2,000)= 216,000円 → 差し引き −74,760円(約7.5万円の持ち出し) # 1台 月3万円: 126,000円 → +15,240円/4時間ずつ: 282,480 − 216,000 = +66,480円 # 買う(1台250万円・補助金で1/2): 初めに 375万円・375万 ÷(141,240 − 保守と充電 36,000 = 105,240)= 35.6 → 約36か月(5年で割った月の差し引きは +42,740円。並べると取り違えるので台本では言わない) # - 皿を集めて回る使い方で2人3台が回るのは「壊れやすい皿は誰が運んでもよい」とき(既定)。人が運ぶ設定では最大3つで3台だけ、最大1つで5台だけが回る(別のエージェントの照合・2026-10-25) # - 店が回らない=席はあるのに待った時間が平均10分以上(LOG359・試算ページの印)。ロボットどうしが細い通路で待つことは試算に入っていない(試算ページの注記) # 出典(台本の中の事実): # - hook / shop_back: MRT宮崎放送「人手不足の救世主?「配膳ロボット」宮崎県内でも活躍広がる 2022.4.27(水)」(YouTube https://www.youtube.com/watch?v=ZB66Qqu7Twg ・1分12秒〜) # 店の人「1人にはならないですけれども、0.5だとか0.25にはなるので…」(エイイチが見つけた。映像は使わない) # - patrol_ex: 客が皿を載せて回る使い方の事例は焼肉の食べ放題の店(和民・かみむら牧場。LOG351) # - robotcost: 借りる値段の相場 月3〜12万円・中央値6万円台(お名前.com ビジネス・試算ページの費用の前提) # - labor: 2026年度の最低賃金 全国加重平均 1,177円(労働政策研究・研修機構・試算ページの費用の前提) # - sens3: 中小企業省力化投資補助金(カタログ注文型)補助率1/2以下(補助金ポータル・試算ページの費用の前提) # - define2: エイイチの言葉(LOG359) # - obs: LOG353(観察シート) # 何の動画か(5行・video_rules.md 2節16) # 1. 配膳ロボットで、ホールのスタッフを1人減らせるのか。減らせたら月いくら浮くのか(シリーズ2回目・前回は「料理を運ぶだけなら何台でも2人では回らない」) # 2. 料理を運ぶだけだと、片付けと案内が人に残り、2人では「席は空いているのに入れない」店になる # 3. 食事中に席を回って皿を集める使い方なら、3台で2人でも回る(7.5分・3人ロボットなしの8.6分より短い)。混雑の日は回らない # 4. 浮く人件費は月約14万円、3台借りると月約21.6万円で、月約7.5万円の持ち出し。借りる値段・減らせる時間・買うと補助金で、プラスにもなる # 5. 見立て: 減らせるかは、何を受け持たせるかで決まる。人件費が浮かない結果も見せ、人件費以外の変化と並べて決める # 話すのはハコブくん。エイイチは三人称で呼ぶ(video_rules.md 3-1) # # 各要素: (場面の名前, 表情, 字幕の文, 後ろの間[秒]) 間を省略すると 0.35 秒 # 字幕の文の中の「|」: 1文を読み上げたまま、字幕だけをそこで次の1枚に替える FACES = ("base", "smile", "surprise", "doubt", "think", "trouble", "joy", "wink") SEGS = [ # 0 フック ("hook", "base", "配膳ロボットを入れた、宮崎県の飲食店の人は、テレビの取材で、こう話していました。"), ("hook_voice", "smile", "「1人にはならないですけれども、0.5だとか、0.25にはなるので」。", 1.2), ("hook_q", "doubt", "では、使い方や台数を変えたら、ホールのスタッフを1人、減らせることはあるのか。", 1.2), ("hook_try", "think", "そこで、ファミレスの混む時間帯の2時間を、パソコンの中で再現して、スタッフを3人から2人にしても、店が回る条件を探しました。"), ("hook_found", "surprise", "条件は、見つかりました。ロボットに、料理だけでなく、食事中の空いた皿も集めさせたときです。", 1.2), ("hook_cost", "trouble", "ところが、月いくら浮くかを計算すると、浮く人件費より、ロボットの費用の方が高くなりました。|ただし、借りる値段や、人を減らせる時間しだいで、答えは逆になります。", 1.8), # 1 自己紹介 ("title", "smile", "Pixels to Motors。案内役のハコブくんです。"), ("title", "base", "この番組では、フィジカルAIのニュースや実機の記録から、現場で使える形を考えます。", 1.2), ("title_eiichi", "base", "エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。|その中で分かったことと、そこから考えた見立てを、ハコブくんがお伝えします。", 1.8), # 2 今日の問い ("question", "surprise", "今日の問いは、配膳ロボットで、ホールのスタッフを1人減らせるのか。減らせたら、月いくら浮くのか、です。", 1.2), ("series", "base", "この動画は、シリーズの2回目です。"), ("series", "base", "前回は、スタッフ3人のまま、ロボットを0台から6台まで増やしました。|料理を運ぶだけなら、どの台数でも、3人を2人にすると、店は回りませんでした。", 1.2), ("define", "base", "ここで言う「減らせる」は、混む時間帯の2時間に、ホールの人を1人減らしても、店が回ることです。"), ("define2", "base", "では、店が回るとは、どういう状態か。エイイチの言葉では、こうです。"), ("define2", "smile", "「混んでいても、5分から10分で入れて、席が埋まっている。これは回っている」。"), ("define2", "trouble", "「席は余っているのに、スタッフが足りなくて案内できない。これが、回っていない」。", 1.2), ("define3", "base", "この試算では、席は空いているのに、片付けや案内を待たせた時間が、平均で10分以上になったら、「店が回らない」と数えます。|この10分は、エイイチが決めた比べるための線で、実際の店の営業を決める基準ではありません。満席で待つ時間や、料理の遅れは、この線には入れていません。", 1.2), ("scope", "base", "前回と同じく、これはパソコンの中の試算です。|数字の多くは、公開されている導入事例やメーカーの仕様をもとにした仮の値で、実際の店で測ったものではありません。"), ("scope", "base", "店は、35卓のファミレス。お客さんが1人もいない状態から始めて、1時間に35組のペースで2時間だけ受け入れ、片付けが終わるまでを計算します。1つの条件を40回計算して、平均を出しています。"), ("scope", "base", "比べるのは、試算に入れたホールの仕事を何人でこなせるかです。|料理をロボットに載せたり、集めた皿を洗い場で降ろしたりする手間や、厨房との兼務、休憩までは入っていません。", 1.2), # 3 結論と立場 ("answer", "base", "先に結論を言うと、この店の普通の日に、スタッフを3人から2人に減らせたのは、食事中に席を回って、お客さんに空いた皿を載せてもらう使い方で、ロボットが3台から6台のときでした。"), ("answer_cost", "think", "1人減って浮く人件費は、月約14.1万円。ロボット3台を、1台月6万円で借りると、保守と充電を入れて、月約21.6万円です。"), ("answer_cost", "trouble", "差し引きは、月約7.5万円の持ち出しになりました。", 1.2), # 4 目次 ("toc", "base", "大きく3つあります。"), ("toc", "base", "料理を運ぶだけだと、なぜ1人減らせないのか。"), ("toc", "base", "皿を集めて回ると、何が変わるのか。"), ("toc", "base", "1人減ったら、月いくら浮くのか。"), ("toc", "smile", "特に3つ目は、人が減っても、お金が残らないことがある、という話です。最後に、エイイチの見立てを話します。", 1.8), # 5 節1:料理を運ぶだけだと、なぜ1人減らせないのか ("c1", "base", "1つ目、料理を運ぶだけだと、なぜ1人減らせないのか、です。", 1.2), ("c1", "base", "一言で言うと、運ぶのはロボットに任せられても、片付けと案内が、人に残るからです。", 1.2), ("entry", "base", "前回の、料理を運ぶだけのロボットで、2人にロボット2台。1往復で料理を3つまで運ぶ設定です。|料理ができてから卓に届くまでは、58秒から54秒で、ほとんど変わりません。"), ("entry", "surprise", "そして、店に来てから席に着くまでは、8.6分から14.3分に延びました。", 1.2), ("why", "base", "そのうち13.2分は、席は空いているのに、片付けや案内の手が空かずに待った時間です。"), ("why2", "think", "食べ終わった卓の皿を下げて拭くのも、入口のお客さんを席へ案内するのも、人です。今回の仕事の順番と運び方では、2人で、そこが追いつきませんでした。", 1.2), ("honne1", "think", "ここで、エイイチ自身の経験を1つ。昔働いていたファミレスでも、混む時間に一番手が足りなかったのは、片付けだったそうです。"), ("honne1", "smile", "席は空いているのに、片付けが追いつかず、入口でお客さんが待っている。その光景も、実際にあったそうです。", 1.2), ("bus", "base", "では、片付けに向かうスタッフが、空いているロボットに、まとめた皿も運ばせたらどうか。ロボット2台で、席は空いているのに待った時間が13.3分。こちらも、線を超えました。"), ("bus", "smile", "皿を洗い場まで運ぶのは、ロボットが手伝えます。でも、卓で皿をまとめて、拭くのは人のまま。ちなみに、ハコブくんも、卓は拭けません。", 1.2), ("c1_end", "think", "片付けの手が空かないと、人は減らせないんです。", 1.8), # 6 節2:皿を集めて回ると、何が変わるのか ("c2", "base", "2つ目、皿を集めて回ると、何が変わるのか、です。", 1.2), ("c2", "base", "一言で言うと、食べ終わったあとの片付けが軽くなって、2人でも回るようになります。", 1.2), ("patrol", "base", "この使い方では、ロボットが食事中に席を回り、お客さんに、空いた皿を載せてもらいます。料理も運びます。"), ("patrol2", "base", "この使い方のロボット2台では、席は空いているのに待った時間が10.5分。線を、少しだけ超えました。"), ("patrol3", "surprise", "3台にすると、席に着くまで、平均7.5分。スタッフ3人でロボットなしの8.6分より、短くなりました。", 1.2), ("patrol3", "smile", "料理ができてから届くまでも、58秒から52秒になりました。調べた6台までは、4台から6台でも、線の内側でした。"), ("patrol_note", "base", "ただ、この試算では、ロボットが席に来るたびに、お客さんが皿を載せてくれる、と置いています。|2回集めれば、食べ終わったあとに下げる皿は残らず、皿をまとめる手間もなくなる設定です。皿が最後まで残る店でも、3台で足りるかは、確かめていません。デザートやドリンクもロボットが運んでよい、という前提でもあります。"), ("honne2", "smile", "エイイチいわく、「余裕がある人は載せてくれるけど、載せてくれない人も、一定数いそう」。", 1.2), ("crowd", "base", "混み具合でも変わります。1時間に45組来る混雑の日は、この使い方でも、2人では回りませんでした。|ただ、ロボットなしなら4人要るところが、3人で回ります。要る人数が1人減るのは、混雑の日も同じです。"), ("crowd", "think", "日によって要る人数が変わるので、実際に給料を減らせるかは、その日の来客と、シフトの組み方で決まります。", 1.2), ("robot_note", "base", "そして、この試算には、ロボットどうしが細い通路で道を譲り合う時間や、故障や充電で1台が長く使えない場合は、入っていません。台数の多い条件は、効果を楽観的に見積もっているかもしれません。", 1.8), # 7 節3:1人減ったら、月いくら浮くのか ("c3", "base", "3つ目、1人減ったら、月いくら浮くのか、です。", 1.2), ("labor", "base", "ここからは、料理を載せる人や皿を降ろす人の勤務を増やさずに、実際のシフトで1人分の給料を減らせた、とした場合の仮の計算です。|浮く人件費は、1人分の時給を、混む2時間、1日2回、30日分で数えます。"), ("labor", "base", "時給は、2026年度の最低賃金の全国平均、1,177円を借りました。社会保険料や交通費は入れていません。これで、月約14.1万円です。"), ("robotcost", "base", "ロボットは、1台を月6万円で借りる、と仮に置きました。実際の値段は、機種や契約期間、保守が含まれるかどうかで変わります。"), ("robotcost", "base", "保守を仮に月1万円、充電の電気代を月2,000円足すと、3台で月21.6万円になります。"), ("net", "trouble", "差し引きは、月約7.5万円の持ち出しです。1人減らせても、この前提では、お金は残りません。", 1.2), ("sens", "base", "ただ、ここは前提で大きく変わります。"), ("sens", "base", "1台を月3万円で借りられれば、差し引きは、月約1.5万円のプラスです。今回の仕事ができる機種を、その値段で借りられれば、ですが。"), ("sens", "smile", "混む2時間だけでなく、昼と夜に4時間ずつ人を減らせれば、浮く人件費は月約28.2万円になり、月約6.6万円のプラスです。|ただ、試算は混む2時間だけで、4時間を2人で回せるかは、確かめていません。"), ("sens", "base", "それに、10分の線を11分にすれば、ロボットは2台で足り、持ち出しは月約3,000円まで小さくなります。お金の答えも、この線に左右されます。"), ("sens_buy", "base", "買う場合は、1台250万円で、3台なら750万円。補助金の条件を満たして、半分の375万円を受け取れれば、自己負担は375万円です。|保守と充電を引いても、浮く人件費が月約10.5万円残るので、自己負担を取り戻すのに、約3年かかる計算です。"), ("sens_buy", "think", "補助金がなければ、約6年。今回置いた、5年使う前提には、収まりません。|代金は先に払い、補助金はあとから受け取る仕組みで、導入をきっかけに従業員を解雇すると、対象外や返還になる条件もあります。借りる契約でも、支援の対象になるものがあります。", 1.2), ("merit", "base", "そして、お金にしていない変化もあります。"), ("merit", "base", "人を減らさずに、3人にロボット2台を足すと、前回見たとおり、席に着くまでは8.6分から3.2分に縮みました。|歩く距離も減ります。この場合は、今回の費用で、月14.4万円の追加です。|スタッフの負担やサービスが実際に良くなり、その費用に見合うかは、試算では測っていません。店で確かめて決めることになります。", 1.2), ("shop_back", "think", "冒頭の、「0.5だとか、0.25にはなる」という実感と、今回の試算は、そのままは比べられません。|今回見たのは、ロボット3台と、お客さんの協力を合わせて、要るホールの人数が1人減るか、です。ロボット1台が何人分か、ではありません。", 1.8), # 8 見立て ("mitate", "base", "ここからは、エイイチの見立てです。", 1.2), ("mitate1", "think", "人を減らせるかは、ロボットに何を受け持たせるかで決まる。エイイチは、そう見ています。"), ("mitate1", "think", "ただ、人が食事中に皿を下げたり、お客さんに返してもらったりする方法とは、比べていません。ロボットを使うのが一番よいかは、別の問いです。", 1.2), ("honne3", "base", "それに、導入したばかりなら、スタッフも慣れる時間が要ります。いきなり手間のかかる作業を任せるより、まず仕事を絞って始めることにも意味がある。"), ("honne3", "think", "だから今、料理を運ぶ、皿を下げる、と仕事を限ったロボットの使い方が、わりと広がっているんだろう。エイイチは、そうも考えています。", 1.2), ("mitate_cost", "base", "お金については、人件費が浮かない結果も、そのまま見せるべきだと、エイイチは考えています。|店がロボットを入れる理由は、人件費だけでなく、人手不足や、スタッフの負担、サービスにもあるからです。", 1.8), # 9 問いへの回答・まとめ ("answer2", "base", "じゃあ、冒頭の問いに答えますね。配膳ロボットで、ホールのスタッフを1人減らせるのか。"), ("answer2", "think", "今回の35卓のファミレスの普通の日なら、食事中に皿を集めて回る使い方で、3台から6台のときに、要るホールの人数が1人減りました。料理を運ぶだけなら、6台でも減りませんでした。"), ("answer2", "base", "月いくら浮くのか。1台月6万円で3台借りて、混む2時間を1日2回減らせたとすると、月約7.5万円の持ち出し。借りる値段や、減らせる時間しだいで、プラスにもなります。|お客さんの協力も、止まり方も、シフトの組み方も、仮の前提です。", 1.2), ("question_next", "base", "次に配膳ロボットのニュースを見たら、聞いてみてください。そのロボットで、人のどの仕事が減ったのか。そして、残った仕事を、誰が受け持っているのか。", 1.2), ("next", "smile", "次の回では、店の図面から3Dの店を建てて、ロボットを走らせます。今日の試算に入っていない、通路で止まる所を見ていきます。", 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(( "では、店が回るとは、どういう状態か。エイイチの言葉", "この試算では、席は空いているのに、片付けや案内を", "ここで、エイイチ自身の経験を1つ", "エイイチいわく、「余裕がある人は", "人を減らせるかは、ロボットに何を受け持たせるかで決まる", "だから今、料理を運ぶ、皿を下げる", "お金については、人件費が浮かない結果も", "そして、お客さんがどれだけ皿を載せてくれるかや", "エイイチは、止まり方や片付けの時間を", ))] # 読み上げ用の読み(仮音声 Open JTalk 用。字幕は元の表記のまま) READ = [ ("Pixels to Motors", "ピクセルズ トゥー モーターズ"), ("YouTube", "ユーチューブ"), ("Unity", "ユニティ"), ("フィジカルAI", "フィジカルエーアイ"), ("AI", "エーアイ"), ("1人", "ひとり"), ("2人", "ふたり"), ("1つ", "ひとつ"), ("2つ", "ふたつ"), ("3つ", "みっつ"), ("1,177", "せんひゃくななじゅうなな"), ("2,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,177円', '1177円'), ('月2,000円', '月2000円'), ] # 間延び対策:ひと息が長い文だけ、読み上げ用に読点を足す(字幕は変えない) 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