YouTube の解説動画、30秒で45%が離れていた ― 冒頭は問いだけにして答えを山場へ
この記事の素材(コード・ログ・データ 1ファイル・まとめてダウンロードあり)arrow_downwardAIで読む ChatGPT・Claude などで、この記事に質問できます expand_more
Pixels to Motors の YouTube の解説動画は、2026年10月8日〜11月4日のアナリティクスで、本編2本とも再生から30秒の時点で55%しか残っておらず、冒頭を「最初の5秒で問いを出し、答えは山場まで取っておき、自己紹介と断り書きを冒頭から外す」形に変えました。 あわせて、4万6千回見られたショートから本編へ来たのが8回だけだったので、答えを言わずに本編へ送るショートを3本作り、時間帯を分けて試します。
この見直しで、次のことが変わりました。
- 動画を作るたびに冒頭の並べ方で迷わなくなった。問い → 数字 → 自己紹介、の順と、作る側の版の日付を声と画面に出さないことを、動画の決まり(video_rules.md)に書いた。配膳ロボットのシリーズ第3回「配膳ロボットを増やしたのに、入口の行列が減らない?」は、この決まりで作った最初の1本
- ショートが「知ってもらう」だけで終わらず、本編へ人を送れるかを、数字で確かめられるようになった。判定は、本編のトラフィックソースの「関連のショート動画」が、これまでの28日で8回から増えるかどうか
- 時間と効果:冒頭の決まりで台本づくりが何分縮むかは測っていない。視聴者が残るようになったかは、第3回(11月23日公開)の30秒の時点の視聴者維持率で、ショートの効き目は11月24〜26日ごろに確かめる。この記事の効果は、どれもまだ見込み
きっかけは、YouTube Studio のアナリティクスを本編だけに絞って見直したことです。チャンネル(@PixelstoMotors)でいちばん見られた「ジャングリア沖縄の赤字89億円、AIとロボットで埋められるか勝手に試算してみた」は、最初の30秒で700億円・100万人・100億円・89億円と数字を4つ並べ、問いが出たのは0:33でした。そのあと自己紹介と断り書きが1分以上続き、2:04で結論を言った直後に、残っていた人がもう一段減っていました。見る人は、何を確かめる回なのかが分かる前に離れ、答えを聞いたところでも離れていた、と読めます。
ショートのほうも、同じ28日で4万6千回見られていたのに、本編へ来たのは8回だけでした。これまでのショートは答えまで入れていたので、本編を見る理由がありませんでした。10月27日の LOG394 で「再生数を追うのをやめ、ロボットの導入を考える人に届ける」と決めたあと、その人たちを本編につなぐ入口が、冒頭とショートの両方で開いていなかったことになります。
| やったこと | なぜ | 結果 |
|---|---|---|
本編の視聴者維持率とトラフィックソースを読み直した | どこで人が離れ、どこから来ているかを確かめるため | 2本とも0:30で55%。3分を過ぎた人は最後近くまで残る。ショートから本編へは8回 |
冒頭の決まりを4つ、video_rules.md に足した | 次の動画から同じ並べ方で作るため | 問いは最初の5秒・答えは山場・自己紹介と断り書きは冒頭から外す・版の日付は出さない |
入口テストのショートを3本作った | ショートから本編へ人を送れるかを試すため | 12〜21秒。答えを言わず「答えは、下のリンクの本編で。」で終える。11/10〜12 に時間帯を分けて出す |
配膳ロボットの第3回を、この決まりで作った | 決まりを実際の1本に当てはめるため | 問いは0:00、答えは9:17。11月23日 19:30 に公開予約 |
YouTube の動画は、ロボットの導入を考える人に、このサイトの研究を知ってもらう窓です。導入シミュレーションの試算は、別のページでも試せます。
作業ログ ― YouTube の本編の視聴者維持率と、来た道を読み直す
ここから下は作業ログです。数字は YouTube Studio の画面から読み取ったもので、本編が少ない(グラフが出たのは2本)ため、傾向として扱います。効果として書く数字は、測った値ではなく見込みです。
視聴者維持率は、動画のどこで人が離れたかを示すグラフ
視聴者維持率は、YouTube Studio で動画ごとに出る、再生の何秒目に何%の人がまだ見ていたかを示すグラフです。動画を開いて「エンゲージメント」のタブを押すと出ます。視聴が少ない動画では、YouTube がグラフを出しません。
| 言葉 | この記事での意味 |
|---|---|
| 視聴者維持率 | ある秒数の時点で、再生を始めた人のうち何%がまだ見ているか |
| 平均視聴時間 | 1回の再生で平均何秒見られたか |
| トラフィックソース | 見た人がどこから来たか(YouTube 検索・ブラウジング・関連動画・ショートのフィードなど) |
| 関連のショート動画 | ショートの画面に付けた本編へのリンクから、本編へ来た回数 |
このプロジェクトでは、10月27日に「再生数と登録者数は判断に使わない」と決め、代わりにクリック率・30秒の時点の視聴者維持率・平均視聴率・シリーズの次の回に進む割合を見ることにしています(LOG394)。
本編2本は、どちらも0:30で55%しか残っていなかった
視聴者維持率のグラフが出たのは、次の2本でした。
| 動画 | 長さ | 0:30 | 3:00 | 最後 | 平均視聴 |
|---|---|---|---|---|---|
ジャングリア沖縄の赤字89億円、AIとロボットで埋められるか勝手に試算してみた | 10分28秒 | 55% | 約30% | 15〜20% | 3分弱(長さの24〜27%) |
人型ロボットの出荷は4倍。ロボットにも「ChatGPTの瞬間」は来たのか | 12分30秒 | 55% | 約30% | 15〜20% | 3分弱(長さの24〜27%) |
「ロボットが事故を起こしたら」の回は視聴が少なく、グラフが出ませんでした。
2本とも、最初の30秒で45%が離れ、3分を過ぎて残った人は、ほとんどが最後近くまで見ていました。中身でつかめている人はいるのに、入口で半分近くを落としている形です。
ジャングリアの回は、問いが0:33、結論のあとにもう一段落ちた
いちばん見られたジャングリアの回の冒頭を、維持率のグラフと並べて見ました。
| 時間 | 画面と声 | 維持率の動き |
|---|---|---|
| 0:00〜0:30 | 700億円・100万人・100億円・89億円と、数字を4つ並べる | 30秒で55%まで減る |
| 0:33 | 問い(ロボットにしたら、赤字は埋まるのか)がやっと出る | ― |
| 0:46〜2:00 | 自己紹介と断り書きが1分以上続く | じわじわ減る |
| 2:04 | 結論(約87億円で、少し届かない)を言う | ― |
| 2:30〜2:50 | 結論のあとの説明 | 45%から33%へ、もう一段落ちる |
数字を先に並べたのは、「答えか数字を最初に出す」と決めていたからでした(10月27日の C 節)。ところが見る人には、何を確かめる回か分からないまま数字が続き、答えを聞いたら見る理由がなくなっていた、と読めます。
なお、10月27日の C 節に書いた「一番伸びた回でも平均57秒(約9%)」は、チャンネル全体の一覧を書き出した数字から出したもので、動画ごとの画面(平均2分50秒・27%)と食い違っていました。動画ごとの画面を正にすると決まりに書き添えました。
本編の来た道と、ショートからは8回だったこと
同じ期間(10月8日〜11月4日)のトラフィックソースです。
| 何を見たか | 数字 |
|---|---|
| チャンネル全体の視聴 | 49,386回。うち93%がショートのフィード |
| 登録の増加 | 23人。うち20人がショート経由 |
| ショートから本編へ | 8回 |
| 本編(788回)の来た道 | YouTube 検索 286・ブラウジング 279・関連動画 111・チャンネルページ 37・外部 28 |
検索と関連動画から来た人の平均視聴 | 3分前後 |
| 検索の言葉 | 66%がジャングリア関連(打ち間違いも含む)。フィジカルAI で探して本編に来た人はほぼいない(ショート込みで57回・平均13秒) |
外部(ショート込み60回)の内訳 | X 7・LinkedIn 4・Google 検索 3・前の Studio のサイト 2 |
ショートは登録を連れてくるのに、本編へはほとんど人を送っていませんでした。SNS から YouTube へもほぼ流れていません(LinkedIn は動画を直接上げているので、LinkedIn の中で見られた分は YouTube に出ません)。検索から来る人は、会社名・施設名・出来事の名前で探しています。
作業ログ ― 冒頭の決まりを4つ、video_rules.md に足す
決めた4つ:問いは5秒以内・答えは山場・断り書きは後ろ・版の日付は出さない
分析をもとに、次の3つを video_rules.md の C 節に足しました。どの型(解説回・謎解きの型・考察回)にも当てはめ、1節の型の時間の目安と食い違うときは、こちらを正にします。
- 最初の5秒で問いを出す。 数字を並べる前に、何を確かめる回かを1文で言う
- 答えは山場まで取っておく。 冒頭で言うのは問いと、答えの方向を消す予告まで
- 自己紹介と断り書きを冒頭から外す。 断り書きはその数字が出る場面に回し、自己紹介は短くするか問いのあとへ移す
- ねらい:何を確かめる回かを最初に分かってもらい、答えを聞くまで見る理由を残す
- 変わったこと:「答えか数字を最初に出す」(C 節)と「先に結論を言う」(1節の型)をやめ、問い → 数字 → 自己紹介の順にした
- 見込める効果:30秒の時点の維持率が55%より上がる見込み。第3回の公開後に、同じ画面で確かめる(測った値ではない)
4つ目は、第3回の確認用の動画を見たときに足しました。声と画面に「11月3日の版」「10月末の版」のような、シミュレーションの版の日付が出ていたためです。
これ、動画の中で11月3日でーとかあるけど、動画見るユーザーに必要な情報か?おかしくないか?
版の日付は作る側の都合で、見る人には要らない情報でした。どの版の数字かは概要欄の「この動画で扱う範囲」に書き、声で断るのは、見る人が数字を読み違えるとき(本物の店の数字ではない、など)だけにしました。第3回では、日付を言っていた5つの文の声を作り直しました。
video_rules.md の C 節「冒頭の作り方」(足した全文)
### 冒頭の作り方(アナリティクス 2026-10-08〜11-04 で見直した・2026-11-06 エイイチの指示)
本編の視聴者維持率(動画ごとのアナリティクスのエンゲージメントの画面)と、本編だけに絞ったトラフィックソースを見て決めた。全部の型(解説回・謎解きの型・考察回)に当てはめる。1節の型の時間の目安と食い違うときは、こちらを正にする。
1. **最初の5秒で問いを出す。** 数字を並べる前に、何を確かめる回かを1文で言う(例: 「ロボットにしたら、ジャングリア沖縄の赤字は埋まるのか」)。数字は問いのあとに出す
2. **答えは山場まで取っておく。** 冒頭で言うのは問いと、答えの方向を消す予告まで。結論そのものは言わない(1-4 の謎解きの型で決めた読み方を、全部の型に広げた)
3. **自己紹介と断り書きを冒頭から外す。** 断り書き(この数字は足さない・予測ではない・誰の判断かは話さない など)は、その数字が出てくる場面に回す。自己紹介は短くするか、問いのあとへ移す
4. **作る側の版の日付は、声と画面に出さない。** 「11月3日の版」「10月末の版」「11月2日の夜」のような、シミュレーションや試算の版の日付は、見る人に要らない情報(2026-11-06 エイイチの指摘「動画の中で11月3日でーとかあるけど、動画見るユーザーに必要な情報か?おかしくないか?」)。版の違い・どの版の数字かは、概要欄の「この動画で扱う範囲」に書く。声で断るのは、見る人が数字を読み違えるときだけ(本物の店の数字ではない、など)
**根拠(2本の視聴者維持率・本数が少ないので傾向として扱う)**
- 「ジャングリア沖縄の赤字」(10分28秒)と「人型ロボットの出荷は4倍」(12分30秒)は、どちらも0:30の時点で55%しか残っていなかった(最初の30秒で45%が離れた)。3分を過ぎて残った人は、ほとんどが最後近くまで見ていた(3分で約30%・最後で15〜20%)。平均視聴は2本とも3分弱(長さの24〜27%)
- ジャングリアの回の0:00〜0:30は、700億円・100万人・100億円・89億円と数字を4つ並べ、問いが出たのは0:33だった。0:46〜2:00は自己紹介と断り書きが1分以上続き、じわじわ減った。2:04で結論(約87億円で少し届かない)を言ったあと、2:30〜2:50で45%から33%へもう一段落ちた
- 「ロボットが事故を起こしたら」は視聴が少なく、YouTube が維持率のグラフを出さなかった
- 「決めた理由」の「一番伸びた回でも平均57秒(約9%)」は、チャンネル全体の一覧を書き出した数字から出したもので、動画ごとの画面(平均2分50秒・27%)と食い違う。動画ごとの画面を正にする
**ほかに分かったこと(同じ期間)**
- 視聴49,386回のうち93%がショートのフィード。登録の増加23人のうち20人がショート経由。ショートから本編へ来たのは8回だけで、ショートは本編への入口になっていない
- 本編(788回)の来た道は、YouTube 検索286・ブラウジング279・関連動画111・チャンネルページ37・外部28。検索と関連動画から来た人は平均3分前後見ていた
- 検索の66%はジャングリア関連の言葉(打ち間違いも含む)。フィジカルAI で探して本編に来た人はほぼいなかった(ショート込みで57回・平均13秒)。題名には世間で探される会社名・施設名・出来事を先に置く
- 外部60回(ショート込み)のうち、名前が出たのは X 7・LinkedIn 4・Google 検索 3・前の Studio のサイト 2。SNS から YouTube へはほぼ流れていない(LinkedIn は動画を直接上げているので、LinkedIn の中で見られた分は YouTube に出ない)
video_rules.md の更新履歴(この作業で足した3行)
- 2026-11-06(104回目): C節「冒頭の作り方」に4つ目を足した。作る側の版の日付(11月3日の版・10月末の版など)は声と画面に出さず、概要欄に書く(配膳ロボット第3回「入口の待ちが減らない」の確認用でエイイチが指摘。5文の声を作り直した)
- 2026-11-06(103回目): 9-5「入口テストのショート」を足した。「何台入れたら店は変わる」(配膳ロボットのシリーズ第1回)の本編へ送るショートを3本作った(1台だと遅い 15.6秒・増やすほど 20.5秒・1人減らせる 12.2秒)。答えを言わず、問いと数字で止め、ハコブくんの声「答えは、下のリンクの本編で。」と「↓ 下のリンクから」で本編へ送る。投稿は本編の公開(11/9)のあと、11/10 12:30・11/11 19:30・11/12 22:00 に分けて時間帯も試す。9-1 の「答えまで入れる」に、入口のショートは 9-5 で試している、と書き添えた
- 2026-11-06(102回目): C節に「冒頭の作り方」を足した(エイイチの指示)。最初の5秒で問いを出す・答えは山場まで取っておく・自己紹介と断り書きを冒頭から外す、の3つ。根拠は 2026-10-08〜11-04 のアナリティクス(本編2本とも0:30で55%しか残らない・ジャングリアの回は結論を言った直後にもう一段落ちた・ショートから本編へは8回・検索の66%はジャングリア関連の言葉・SNS から YouTube へはほぼ流れない)。C節の「冒頭30秒: 答えか数字を最初に出す」と、1節の型の「先に結論を言う」を改め、自己紹介は問いのあとへ移すか短くするにした。「決めた理由」の平均57秒は一覧の書き出しの数字で、動画ごとの画面(2分50秒)を正にすると書いた
作業ログ ― 答えを言わない入口テストのショートを3本作る
ショートは問いと数字で止め、「答えは、下のリンクの本編で。」で終える
入口テストのショートは、配膳ロボットのシリーズ第1回「配膳ロボット1台だと、料理が遅くなる? ファミレスで0〜6台を試算」(本編・11月9日 19:30 公開)へ送る3本です。本編の文から、問いと数字の文を1〜2つだけ使い、答えの文は入れていません。最後の場面は大きな問いと「答えは本編で」「↓ 下のリンクから」で、ハコブくんの声「答えは、下のリンクの本編で。」を、このショートのために作って足しました。

| ショート | 長さ | 使った本編の文 | 最後の問い | 公開 |
|---|---|---|---|---|
1 配膳ロボット1台で、料理が遅くなった? | 15.6秒 | 21 なぜ遅くなるのか → 41 58秒が2分12秒に → 85 | なぜ? | 11/10(火)12:30 |
2 配膳ロボット、増やすほど店は良くなる? | 20.5秒 | 3 増やすほど良くなる? → 4 0台から6台まで試した → 85 | 結果は? | 11/11(水)19:30 |
3 配膳ロボットを入れたら、スタッフを1人減らせる? | 12.2秒 | 22 減らせる台数はあるのか → 53 2人だとロボットなしで28.3分 → 85 | 1台?3台?6台? | 11/12(木)22:00 |
時間帯を昼・夜・遅い夜に分けたのは、過去のショートを公開した時刻で比べると、7〜8時台は視聴が少なく、12時台と19時台が多かったためです(中身と日がばらばらなので参考)。3本とも中身が違うので、時間帯の差は参考として見ます。
- ねらい:ショートを見た人が、答えを知るために本編を開く理由を残す
- 変わったこと:これまでのショートは答えまで入れていた(9-1)。入口テストの3本は答えを言わず、関連動画に本編を必ず付ける
- 見込める効果:本編のトラフィックソースの「関連のショート動画」が、28日で8回より増える見込み。各ショートの公開から2週間後(11月24〜26日ごろ)に確かめ、効いたら本編を出すたびにこの型で1〜3本作る
video_rules.md の 9-5「入口テストのショート」(足した全文)
### 9-5. 入口テストのショート(2026-11-06「何台入れたら店は変わる」で3本・エイイチ「3本くらい作ってみていいよ」)
ショートから本編へ人が来るかを試す型。10/8〜11/4 は、ショートが4万6千回見られたのに、本編へ来たのは8回だった(C節「冒頭の作り方」の根拠)。今までのショートは 9-1 のとおり答えまで入れていたので、本編を見る理由がなかった、と見立てた。
- **答えは言わない。** 本編の問いの文と、数字の文を1〜2つだけ使い、答えの文(本編のフックの結論・章の答え)は入れない。最後の場面は、大きな問い(なぜ?・結果は?・1台?3台?6台?)+「答えは本編で」+「↓ 下のリンクから」
- **最後に声で送る。** ハコブくんの声「答えは、下のリンクの本編で。」を足した(このショートのために作った文。本編の narration.py にはないので、本編の tts/ に 085.wav と index.json の1行を手で足してから書き出す。作業フォルダの README.md)
- 長さは12〜21秒(30秒より短くした。最初の5秒で問いを出す)。図・背景の映像・字幕の作りは 9-2 と同じ(assemble_short2.py・BGV)。部品は `何台入れたら店は変わる/ショート/_common.py`(背景の置き場所・CTA())
- 投稿: 本編の公開後に出し、関連動画に本編を必ず付ける。時間帯も分けて試す(12:30・19:30・22:00。エイイチ「時間別に投稿して試す」)。過去のショートを公開した時刻で比べると、7〜8時台は視聴が少なく、12時台と19時台が多かった(中身と日がばらばらなので参考)
- 判定は各ショートの公開から2週間後: 本編のトラフィックソースの「関連のショート動画」が8回より増えたか。あわせて「視聴された割合」。3本とも中身が違うので、時間帯の差は参考として見る。効いたら、本編を出すたびにこの型で1〜3本作る
ショートの共通部品 _common.py
# 入口テストのショート(2026-11-06)の共通部品。答えは言わず、本編へ送る(video_rules 9-5)
import os as _os
_here = _os.path.dirname(_os.path.abspath(__file__))
_BG_CANDS = [_os.environ.get("P2M_BG", ""),
_os.path.expanduser("~/mnt/KIOXIA/r2r2r-data/videos/何台入れたら店は変わる/_取り込み/背景"),
"/Volumes/KIOXIA/r2r2r-data/videos/何台入れたら店は変わる/_取り込み/背景",
"/home/claude/v/bgsrc/背景"]
BGDIR = next((c for c in _BG_CANDS if c and _os.path.isdir(c)), _BG_CANDS[2])
CAP_U = "背景:Unity で建てた仮のファミレス(数字はパソコンの中の試算)"
SIM = "パソコンの中の試算・35卓のファミレス・40回の平均"
def bg(name, ss=0, cx=0.5, cy=0.5, h=1.0):
return dict(file=_os.path.join(BGDIR, name), ss=ss, cx=cx, cy=cy, h=h, veil=0, cap=CAP_U)
def TOP(inner, pad=60):
return f'<div class="fig c" style="justify-content:flex-start;padding-top:{pad}px">{inner}</div>'
def BIG(t, size, cls=""):
return f'<div class="bleed {cls}" style="font-size:{size}px;font-weight:900;line-height:.95;letter-spacing:-.04em">{t}</div>'
def CTA(big_html):
"""最後の場面: 大きな問い+「答えは本編で」+下のリンクを指す矢印"""
return TOP(big_html + '<div class="mid" style="margin-top:36px">答えは<span class="red">本編</span>で</div>'
'<div class="sm" style="margin-top:28px">↓ 下のリンクから</div>')
ショート1 01_1台だと遅い/short.py
# 入口テスト①「配膳ロボット1台で、料理が遅くなる?」本編の答え(なぜ遅いか)は言わずに本編へ送る(2026-11-06)
# 本編の文番号: 21 なぜ遅くなるのか → 41 58秒が2分12秒に → 85 答えは、下のリンクの本編で(このショートのために作った声)
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
_sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")
HEAD = '配膳ロボット1台で、<br><span class="red">料理が遅くなる?</span>'
SEGS = [
dict(i=21, scene="q", pause=0.3, face="surprise"),
dict(i=41, scene="num", pause=0.4),
dict(i=85, scene="cta", pause=1.0, face="smile"),
]
_N1 = '<div class="sm">料理ができてから卓まで</div>' + BIG('なし <span class="blue">58秒</span>', 150)
_N2 = _N1 + BIG('1台 <span class="red">2分12秒</span>', 135)
VS = {
"q": [dict(at=0, m="slam", html=TOP('<div class="sm muted">ロボットを1台入れたら</div>' + BIG("料理が", 190) + BIG("遅くなった", 175, "red")))],
"num": [dict(at=0, m="pop", html=TOP(_N1 + f'<div class="src" style="margin-top:20px">{SIM}</div>')),
dict(at='0+4.0', m="slam", html=TOP(_N2 + f'<div class="src" style="margin-top:20px">{SIM}</div>')),
dict(at='0+6.2', m="slam", html=TOP(_N2 + BIG("倍以上!", 150, "red")))],
"cta": [dict(at=0, m="slam", html=CTA(BIG("なぜ?", 290, "red")))],
}
BGV = {
"q": bg("fv-oblique.mp4", ss=2, cx=0.5, h=1.0),
"num": bg("LOG364_v4_run4_robots_back_and_forth.mp4", ss=4, cx=0.42, h=0.9),
"cta": bg("top-pass.mp4", ss=3, cx=0.45, h=0.95),
}
ショート1 01_1台だと遅い/sound.py
# ショートの音(本編と同じ BGM・場面が替わる音。章の音は使わない)。assemble_short*.py が読む(video_rules.md 9-3)
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
ショート2 02_増やすほど/short.py
# 入口テスト②「ロボットを増やすほど、店は良くなる?」本編の答え(何台で変わるか)は言わずに本編へ送る(2026-11-06)
# 本編の文番号: 3 増やせば増やすほど良くなる? → 4 0台から6台まで試した → 85 答えは、下のリンクの本編で
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
_sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")
HEAD = 'ロボットを増やすほど、<br><span class="red">店は良くなる?</span>'
SEGS = [
dict(i=3, scene="q", pause=0.3),
dict(i=4, scene="try", pause=0.4),
dict(i=85, scene="cta", pause=1.0, face="smile"),
]
VS = {
"q": [dict(at=0, m="slam", html=TOP(BIG("2台", 260))),
dict(at='0+1.1', m="slam", html=TOP(BIG("3台", 260))),
dict(at='0+2.3', m="slam", html=TOP(BIG('<span class="red">6台</span>', 300))),
dict(at='0+3.6', m="pop", html=TOP('<div class="mid">増やすほど</div>' + BIG("良くなる?", 170, "red")))],
"try": [dict(at=0, m="pop", html=TOP('<div class="sm">混む2時間を、パソコンで再現</div>' + BIG('0台<span class="red">→</span>6台', 180)
+ '<div class="mid" style="margin-top:20px">1台ずつ増やした</div>'
+ f'<div class="src" style="margin-top:20px">{SIM}</div>'))],
"cta": [dict(at=0, m="slam", html=CTA(BIG("結果は?", 230, "red")))],
}
BGV = {
"q": bg("LOG357_v1_stage2_oblique.mp4", ss=6, cx=0.5, h=1.0),
"try": bg("top-busy.mp4", ss=2, cx=0.45, h=0.95),
"cta": bg("fv-oblique.mp4", ss=10, cx=0.55, h=1.0),
}
ショート2 02_増やすほど/sound.py
# ショートの音(本編と同じ BGM・場面が替わる音。章の音は使わない)。assemble_short*.py が読む(video_rules.md 9-3)
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
ショート3 03_1人減らせる/short.py
# 入口テスト③「ロボットを入れたら、1人減らせる?」本編の答え(何台でも回らなかった)は言わずに本編へ送る(2026-11-06)
# 本編の文番号: 22 人を減らせる台数は、あるのか → 53 2人にするとロボットなしで28.3分 → 85 答えは、下のリンクの本編で
# -*- coding: utf-8 -*-
import os as _os, sys as _sys
_here = _os.path.dirname(_os.path.abspath(__file__))
for _c in (_os.environ.get("P2M_BASE", ""), _os.path.join(_here, "..", "..", "..", "_制作ベース")):
if _c and _os.path.exists(_os.path.join(_c, "short_kit.py")):
_sys.path.insert(0, _c); break
_sys.path.insert(0, _os.path.join(_here, ".."))
from short_kit import *
from _common import *
SRC = _os.path.join(_here, "..", "..")
HEAD = 'ロボットを入れたら、<br><span class="red">1人減らせる?</span>'
SEGS = [
dict(i=22, scene="q", pause=0.3, face="think"),
dict(i=53, scene="num", pause=0.4),
dict(i=85, scene="cta", pause=1.0, face="smile"),
]
VS = {
"q": [dict(at=0, m="slam", html=TOP(BIG("1人", 300, "red") + BIG("減らせる?", 165)))],
"num": [dict(at=0, m="pop", html=TOP('<div class="sm">スタッフ3人 → 2人</div><div class="sm" style="margin-top:12px">ロボットなしで、席に着くまで</div>')),
dict(at='0+3.0', m="slam", html=TOP('<div class="sm">スタッフ3人 → 2人</div><div class="sm" style="margin-top:12px">ロボットなしで、席に着くまで</div>'
+ BIG("28.3分", 230, "red") + f'<div class="src" style="margin-top:20px">{SIM}</div>'))],
"cta": [dict(at=0, m="slam", html=TOP(BIG("1台?", 200))),
dict(at='0+0.6', m="slam", html=TOP(BIG("1台?3台?", 170))),
dict(at='0+1.2', m="slam", html=CTA(BIG('1台?3台?<span class="red">6台?</span>', 112)))],
}
BGV = {
"q": bg("LOG364_v3_run3_people_and_robots.mp4", ss=8, cx=0.42, h=0.9),
"num": bg("top-busy.mp4", ss=8, cx=0.45, h=0.95),
"cta": bg("LOG357_v1_stage2_oblique.mp4", ss=20, cx=0.5, h=1.0),
}
ショート3 03_1人減らせる/sound.py
# ショートの音(本編と同じ BGM・場面が替わる音。章の音は使わない)。assemble_short*.py が読む(video_rules.md 9-3)
BGM = [dict(file="sound/bgm_明るいB_2.mp3", start=0, end=None, level=-23, gap=-16, fade_in=0.3, fade_out=1.2)]
SE = []
SCENE_SE = dict(file="se_rise", level=-6, offset=-0.15)
書き出しのログ(3本)
=== 01_1台だと遅い/log.txt
長さ 15.6秒
重なり 0 件。図の段 5 枚
BGM 1本・効果音 2個 → mix.wav
3.15秒 文001 se_rise -6dB 「料理ができてから卓に着くまで。ロ」
11.78秒 文002 se_rise -6dB 「答えは、下のリンクの本編で。」
frames 467 = 15.6s out.mp4 3.7MB
=== 02_増やすほど/log.txt
長さ 20.5秒
重なり 0 件。図の段 6 枚
BGM 1本・効果音 2個 → mix.wav
7.62秒 文001 se_rise -6dB 「そこで、ファミレスの混む時間帯の」
16.68秒 文002 se_rise -6dB 「答えは、下のリンクの本編で。」
frames 614 = 20.5s out.mp4 3.9MB
=== 03_1人減らせる/log.txt
長さ 12.2秒
重なり 0 件。図の段 6 枚
BGM 1本・効果音 2個 → mix.wav
2.62秒 文001 se_rise -6dB 「スタッフを2人にすると、ロボット」
8.38秒 文002 se_rise -6dB 「答えは、下のリンクの本編で。」
frames 365 = 12.2s out.mp4 2.6MB
ショートのフォルダの README.md
# 何台入れたら店は変わる ― ショート(入口テスト・2026-11-06)
本編の答えを言わずに、問いと数字で止めて本編へ送るショート3本(video_rules 9-5)。
- 01_1台だと遅い: 本編の文 21 → 41 → 85
- 02_増やすほど: 本編の文 3 → 4 → 85
- 03_1人減らせる: 本編の文 22 → 53 → 85
- 文 85「答えは、下のリンクの本編で。」はこのショートのために作った声(voice_eleven/ハコブ_入口/試し_01.mp3)。本編の narration.py にはない。書き出す前に、本編の tts/ に 085.wav と index.json の1行を足す(tts_import.py では入らない)
- 共通の部品は _common.py(背景の映像の置き場所・最後の場面 CTA())
- 背景の映像は KIOXIA の videos/何台入れたら店は変わる/_取り込み/背景/
- 書き出し: 各フォルダで python3 ../../../_制作ベース/assemble_short2.py(--render で一覧だけ)
- 上げるものは KIOXIA の videos/何台入れたら店は変わる/ショート/
ショートのタイトル・説明文・投稿のしかた(ショート_タイトルと説明文.txt)
入口テストのショート 3本(2026-11-06 作成)
本編: 配膳ロボット1台だと、料理が遅くなる? ファミレスで0〜6台を試算
本編の URL: https://www.youtube.com/watch?v=Ayq0zDZcaWo (11/9 19:30 公開予約)
ねらい: ショートから本編へ人が来るかを試す。今までのショートは答えまで入れていたので、本編を見る理由がなかった(10/8〜11/4 でショートから本編へは8回)。この3本は答えを言わず、問いと数字で止め、下の関連動画のリンクへ送る。
あわせて、投稿の時間帯も分けて試す(昼・夜・遅い夜)。
投稿のしかた(3本とも同じ)
・本編の公開(11/9 19:30)のあとに出す
・YouTube Studio のショートの編集画面で、関連動画に本編を選ぶ(これがないとテストにならない)
・字幕ファイルは上げない(焼き込み済み)
判定(各ショートの公開から2週間後・11/24〜26 ごろ)
・本編のアナリティクス → トラフィックソース → 関連のショート動画 の回数(今までは28日で8回)
・各ショートの「視聴された割合(スワイプされなかった割合)」と、時間帯ごとの視聴回数
・3本とも中身が違うので、時間帯の差は参考として見る
==============================
ショート1_1台だと遅い_版1.mp4(15.6秒)
予約: 11/10(火)12:30
タイトル:
配膳ロボット1台で、料理が遅くなった? ファミレスで試算
説明文:
料理ができてから卓に着くまで、ロボットなしで58秒。1台入れたら2分12秒に延びました。なぜでしょう?
答えは本編で:配膳ロボット1台だと、料理が遅くなる? ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo
数字はパソコンの中の試算(35卓のファミレス・40回の平均)。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声(ElevenLabs)です。
#配膳ロボット #ファミレス #フィジカルAI
==============================
ショート2_増やすほど_版1.mp4(20.5秒)
予約: 11/11(水)19:30
タイトル:
配膳ロボット、増やすほど店は良くなる? 0台から6台で試算
説明文:
ファミレスの混む2時間をパソコンの中で再現して、配膳ロボットを0台から6台まで1台ずつ増やしてみました。結果は本編で。
配膳ロボット1台だと、料理が遅くなる? ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo
数字はパソコンの中の試算(35卓のファミレス・40回の平均)。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声(ElevenLabs)です。
#配膳ロボット #ファミレス #フィジカルAI
==============================
ショート3_1人減らせる_版1.mp4(12.2秒)
予約: 11/12(木)22:00
タイトル:
配膳ロボットを入れたら、スタッフを1人減らせる?
説明文:
ファミレスのスタッフを3人から2人にすると、ロボットなしでは席に着くまで28.3分。では、配膳ロボットを何台入れたら1人減らせるのか。答えは本編で。
配膳ロボット1台だと、料理が遅くなる? ファミレスで0〜6台を試算
https://www.youtube.com/watch?v=Ayq0zDZcaWo
数字はパソコンの中の試算(35卓のファミレス・40回の平均)。背景は Unity で建てた仮のファミレスです。
ナレーションは AI 音声(ElevenLabs)です。
#配膳ロボット #ファミレス #フィジカルAI
作業ログ ― 配膳ロボットの第3回を、冒頭の決まりで作る
この記事のコード・ログ・データは、1ファイルずつ下に置いています。全文はリンク先にあります。
ファイルの一覧(1本)
01_sec04.txt ― 第3回の書き出しのログ(文ごとの開始時間)・3,011字
第3回は0:00で問いを出し、答えは9:17まで言わない
配膳ロボットのシリーズ第3回「配膳ロボットを増やしたのに、入口の行列が減らない? ファミレスを3Dで再現したら」(10分33秒)は、図面から作った仮のファミレスを、パソコンの試算と、人とロボットが歩く3Dの店(Unity)で回して比べた回です。謎解きの型で作り、冒頭は決まりのとおりに並べました。

| 時間 | 中身 | 決まりとの対応 |
|---|---|---|
| 0:00 | 問い「配膳ロボットを増やしたのに、入口で待つお客さんが、思ったほど減らない。なぜでしょう。」 | 最初の5秒で問い |
| 0:06〜0:48 | 数字(試算では4.1分→1.1分、3Dの店では3.9分→2.5分、28卓の店では10.8分→18.0分)と、仮のファミレスだという断り | 数字は問いのあと。断りは数字の場面で1文だけ |
| 0:53〜1:41 | 作り手の紹介と、番組の名前 | 自己紹介は問いと数字のあと |
| 2:16 | 予告「今日の犯人は、ロボットの足の速さではありません」 | 答えの方向を1つ消すだけ |
| 9:17 | 答え「止まるたびに人の手。片付けと案内が後回し」 | 答えは山場まで取っておく |

第3回の確認では、答えのカードの文字が枠からはみ出していたので、2つの文を並べる形から、大きな2行の形(104px)に変えて書き出し直しました。版の日付を消した5つの文は、声を作り直しています。公開は、第2回(11月16日 19:30)の1週間後の11月23日 19:30 に予約しました。
第3回の冒頭の文(narration.py の 0〜21 番)
000 hook_q surprise 「配膳ロボットを増やしたのに、入口で待つお客さんが、思ったほど減らない。なぜでしょう。」 間0.35
001 hook_num base 「42卓のファミレス。パソコンの試算では、ロボットを2台入れると、|お客さんが店に来てから席に着くまでの時間が、4.1分から1.1分に縮みました。」 間0.35
002 hook_num2 surprise 「ところが、同じ店を3Dで建てて、人とロボットを歩かせると、3.9分が2.5分。|縮み方は、試算の半分足らずでした。」 間0.35
003 hook_num3 doubt 「もっと狭い28卓の店では、2台目を入れたら、かえって延びました。10.8分が、18.0分に。|試算でも少し延びますが、3Dの店では、7分も延びたんです。」 間0.35
004 hook_src base 「どちらも、この番組で作った、仮のファミレスでの話です。本物の店で測った数字では、ありません。」 間0.35
005 hook_joke trouble 「ちなみにハコブくんも、病院の廊下で、よく立ち止まっています。」 間0.35
006 ei_intro smile 「ここで、もう1人紹介させてください。この番組を作っている、エイイチです。」 間0.35
007 ei_react think 「この結果を見たエイイチは、こう話していました。」 間0.35
008 ei_react think 「どこに原因があるのか、よく調べないといけないなと思ったな。」 間0.8
009 hook_q2 doubt 「ロボットは、料理を運ぶのは得意です。それなのに、なぜ、入口のお客さんが、思ったほど減らないのか。|この謎を、今日は3つの手がかりで解いていきます。」 間1.2
010 title smile 「Pixels to Motors。案内役のハコブくんです。」 間0.35
011 title base 「この番組では、フィジカルAIのニュースや実機の記録から、現場で使える形を考えます。」 間0.35
012 title_eiichi smile 「エイイチは、本業のデザイナーをしながら、ロボティクスの研究と開発をしています。|その中で分かったことと、そこから考えた見立てを、ハコブくんがお伝えします。」 間1.2
013 question base 「今日の謎は、これです。配膳ロボットを増やしたのに、入口で待つお客さんが、なぜ思ったほど減らないのか。」 間0.35
014 define base 「ここで言う入口で待つ時間は、お客さんが店に来てから、席に案内されて座るまでの時間です。|第1回で、席に着くまでの時間、と呼んだものと同じです。」 間0.35
015 define2 base 「今日の店は、第1回と第2回の、35卓の店ではありません。図面から作った、仮のファミレス6つです。|同じ店を、パソコンの試算と、3Dの店の、2つの道具で回して比べました。」 間0.35
016 teaser wink 「先に言っておくと、今日の犯人は、ロボットの足の速さではありません。」 間1.2
017 hayatochiri joy 「とはいえ、ハコブくんは最初、こう考えました。3Dの店のロボットは、足が遅いんだ。」 間0.35
018 hayatochiri2 trouble 「……でも、3Dの店のロボットが走る速さは、秒速0.57メートルほど。試算の0.5メートルより、少し速いくらいです。|足の速さでは、説明できません。」 間1.2
019 promise_cards base 「謎を解く前に、約束を1つ。今日の話は、出どころを、画面の左上に札で出します。」 間0.35
020 promise_cards smile 「エイイチの記録、公開されている実物の店の動画、そしてエイイチの見立て。|どこまで信じるかは、札を見て決めてください。」 間0.35
021 promise_fair base 「それから、3Dの店も、シミュレーションです。作りの間違いを見つけては、直し続けています。」 間1.2
第3回の書き出しのログ(文ごとの開始時間)
BGM 1本・効果音 55個 → mix.wav
6.25秒 文001 se_rise -6dB 「42卓のファミレス。パソコンの試」
17.85秒 文002 se_rise -6dB 「ところが、同じ店を3Dで建てて、」
28.28秒 文003 se_rise -6dB 「もっと狭い28卓の店では、2台目」
41.32秒 文004 se_rise -6dB 「どちらも、この番組で作った、仮の」
48.95秒 文005 se_rise -6dB 「ちなみにハコブくんも、病院の廊下」
53.52秒 文006 se_rise -6dB 「ここで、もう1人紹介させてくださ」
67.22秒 文009 se_rise -6dB 「ロボットは、料理を運ぶのは得意で」次に確かめること
| いつ | 何を | 何と比べる |
|---|---|---|
| 11月9日 19:30 以降 | 第1回の公開と、ショート3本の関連動画の設定 | ― |
| 11月24〜26日ごろ | 第1回のトラフィックソースの「関連のショート動画」と、各ショートの視聴された割合 | これまでの28日で8回 |
11月23日の公開から1〜2週間 | 第3回の0:30の時点の視聴者維持率 | ジャングリアの回・人型ロボットの回の55% |
冒頭で答えを言わないことと、ショートで答えを言わないことは、同じ判断です。 どちらも、見る人が次の数秒・次の1本を見る理由を残すためで、効いたかは上の3つの数字で確かめます。