
レッスンの課題とは、説明の欠落、わかりにくい表現、またはレッスンとは異なる利用環境のことです。レッスンの課題マップは、こうした課題を行ごとにまとめた表です。各行で、コメント1件をレッスン、判断、検証方法に結び付けます。
YouTube Comments Scraper Actorを使って、公開コメントを収集します。Actorは、ソースの行データを収集する、ホスト環境で動作するプログラムです。Taskは、入力設定を保存したものです。公開されている動画コメント分析Taskは、入力設定の出発点にすぎません。この確認作業が自動で行われることを示すものではありません。Actorはレッスンを評価しません。その作業はあなたが行います。
ここで示す制限は、2026-10-13に確認した公開ビルドに基づきます。以降のビルドでは変わる可能性があります。使用するビルドの実行結果を確認してください。
範囲を限定したコメントサンプルを収集する
コメント収集用の公開ビルド1.1.6は、既知の公開動画のアドレスまたは動画IDを受け付けます。`startUrls`には1〜100件のアドレスを指定できます。`maxCommentsPerVideo`は1〜1,000に設定します。この数値が上限です。上限は、取得を求めるトップレベルのコメントの最大件数を表します。トップレベルのコメントとは、返信ではないコメントです。`commentSortMode`は`top`、`newest`、`both`のいずれかに設定します。TopはYouTubeが上位に表示するコメント、Newestは新しいコメントを意味します。`includeReplies`で返信の取得を有効または無効にします。返信を有効にした場合、`maxRepliesPerComment`には1〜100を指定できます。返信とは、トップレベルのコメントの下に付く応答です。返信の行は別途追加されます。トップレベルのコメントの上限には含まれません。
保存済みのTaskには、サンプルの楽曲動画、上限250件、返信の取得が有効、返信は最大10件という設定が残っています。チュートリアルを評価する前に、そのサンプルを置き換えてください。
{
"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"maxCommentsPerVideo": 250,
"commentSortMode": "both",
"includeReplies": true,
"maxRepliesPerComment": 10
}最初の確認には、公開されているとわかっているチュートリアルを1本使います。上限を2に設定してください。`commentSortMode`を`both`に設定します。`includeReplies`をfalseに設定します。以前の返信上限の設定は含めないでください。
{
"startUrls": ["https://www.youtube.com/watch?v=YOUR_TUTORIAL"],
"maxCommentsPerVideo": 2,
"commentSortMode": "both",
"includeReplies": false
}別途行った小規模な動作確認では、教育動画を1本使い、上限を2に設定し、両方の並べ替え方法を指定しました。本文のあるトップレベルのコメントが2件保存されました。1行はTop、もう1行はNewestでした。各行には`commentId`がありました。`publishedAt`はnullでした。OUTPUTでは、`commentsWritten`が2、`repliesWritten`が0と表示されました。`stopReasonCounts`には`requested_comment_limit_reached`が含まれていました。単一の`stopReason`フィールドを探さないでください。
`commentsWritten`が2であることは、コメントの行が2件保存されたことを意味します。`repliesWritten`が0であることは、保存された返信の行が0件だったことを意味します。この0は、その実行での件数です。`publishedAt`がnullであることは、日付が提供されなかったことを意味します。不明は0ではありません。空欄の日付を0として保存しないでください。
この動作確認では、返信をエクスポートできることは確認していません。限定的な受け入れ検証には、返信の自動取得は含まれていませんでした。この方法では、出力ファイルをスレッドの再現データとして扱いません。返信によって意味が変わる可能性がある場合は、公開の動画視聴ページを開いて読んでください。返信が見つからない場合は、欠損のままにします。内容を作り上げないでください。
ソースでの並び順と上限をメモに残してください。上限によって、小さなサンプルが選ばれます。レッスンの課題の重大さを順位付けするものではありません。あなたの動画では、Topが1行、Newestが1行という内訳とは異なる結果になる可能性があります。
各コメント行には、次のフィールドを含めます。
| フィールド | 意味 |
|---|---|
| `videoId` | 動画の公開ID |
| `videoUrl` | 公開動画へのリンク |
| `commentId` | コメントの公開ID |
| `sortMode` | その行の並べ替え方法。TopまたはNewest |
| `text` | コメントの本文 |
| `authorChannelId` | ソースに記載されている場合は、投稿者の公開チャンネルID |
| `publishedTimeText` | 表示されている場合は、コメントに添えられた投稿時期の表記 |
| `publishedAt` | 日時。nullは不明を意味し、0ではない |
| `scrapedAt` | その行を収集した日時 |
| `status` | その行の処理結果 |
入力先を利用できなかった場合は、OUTPUTにその旨が示されます。行を評価する前に、`status`を読んでください。本文が欠けている場合は、その行を分けて保管します。文章を補わないでください。`authorChannelId`が欠けている場合、投稿者は不明です。人物を作り上げないでください。投稿者が不明であることは、視聴者が0人であることを意味しません。
コメント数は学習者数ではありません。理解度の評価でもありません。コメントがまったく保存されなければ、`commentsWritten`は0です。この値は、コメントのサンプルがないことを意味します。視聴者がレッスンを理解したことを意味するものではありません。サンプルを感情のスコアに置き換えないでください。
同じチュートリアルの時間情報付き字幕を収集する
文字起こし取得用の公開ビルド0.1.43は、既知の`startUrls`、`preferredLanguages`、`outputFormats`を受け付けます。コメント収集に使ったものと同じチュートリアルを1本使ってください。`startUrls`のリスト全体を置き換えます。サンプルの楽曲動画をリストに残さないでください。時間情報付きのセグメントが必要な場合は、`json`を指定します。セグメントとは、時間情報の付いた字幕の1区切りです。
{
"startUrls": ["https://www.youtube.com/watch?v=YOUR_TUTORIAL"],
"preferredLanguages": ["en"],
"outputFormats": ["json"]
}`preferredLanguages`は、優先する言語を指定する設定です。この例では、英語を表す`en`を使っています。別の字幕言語を優先する場合は変更してください。このフィールドはレッスンを翻訳するものではありません。
同じ教育動画を使った文字起こしの動作確認は成功しました。本文のある英語の手動作成字幕トラックと、時間情報付きのセグメントが返されました。手動作成字幕トラックとは、人が用意した字幕ファイルです。この動作確認から、字幕トラックが存在する場合、このビルドが字幕本文と時間情報を返せることがわかります。あなたの動画に字幕があることを示すものではありません。この記事には、実際の字幕の文章は転載していません。
公開されているセグメントのフィールド`startSeconds`、`endSeconds`、`durationSeconds`、`text`を使います。セグメントの`endSeconds`を確認してください。`durationSeconds`がある場合は、`startSeconds`と`durationSeconds`を足します。その合計が示す区間は、`endSeconds`が示す区間と一致するはずです。`durationSeconds`がない場合は、不明のままにします。0を記入しないでください。
字幕には誤りがある場合があります。図や、音声を伴わない動作が字幕に含まれない場合もあります。字幕に説明がないことは、映像にもその説明がない証拠にはなりません。字幕トラックがない場合は、映像を見て音声を聞いてください。字幕本文を作り上げないでください。文字起こし用のActorはコメントを読みません。レッスンの課題を分類するラベルも付けません。学習者が理解できなかったことを証明するものでもありません。
8つの手順で確認する
- コメントを集める前に、レッスンの学習目標を定めます。教える概念を、わかりやすい1行で書いてください。学習者がレッスンの後に何をできるようになるべきかを書きます。公開チュートリアルを1本選びます。コメントを読む前に上限を明示してください。最初の確認では、上限は2です。視聴者が書いた内容の範囲で判断します。年齢、技能、動機を推測しないでください。
- 解釈する前にサンプルを確認します。動画ID、各`commentId`、`text`が利用できることを確認してください。`commentsWritten`、`repliesWritten`、`stopReasonCounts`を含めてOUTPUTを読みます。ソースでの並び順と上限が、メモでわかるようにしてください。投稿者が欠けている場合や、`publishedAt`がnullの場合は、不明と記録します。不明を0に変換しないでください。2行は、サンプル内のコメント2件を意味します。学習者2人でも、クラスの理解度の評価でもありません。
- 具体的な作業や、具体的にわからない点を述べたコメントを1件選びます。ソースへのリンクを残してください。自分のメモに必要な部分だけを引用します。原因を付け加えず、書かれた内容をそのまま解釈してください。質問があるだけでは、誤解があるとはいえません。冗談、異論、同じ表現の繰り返しも、それだけでは誤解があるとはいえません。レッスンを評価する前に、メモに`stated_confusion`、`possible_gap`、`insufficient_context`のいずれかのラベルを付けます。`stated_confusion`は、コメントが具体的な作業や質問を示していることを意味します。`possible_gap`は、その文章がレッスンの課題を示している可能性はあるものの、まだ該当箇所を確認していないことを意味します。`insufficient_context`は、判断に必要な事実がコメントにないことを意味します。
- 返信によって意味が変わる可能性がある場合は、公開スレッドを読みます。動画ページを開き、そのコメントの下にある返信を読んでください。返信には、視聴者の利用環境が書かれている場合があります。問題が別の製品で起きていたことが、返信からわかる場合もあります。確認した内容を記録してください。開けなかったものも記録します。小規模な動作確認では、返信は保存されませんでした。エクスポートしたデータを完全なスレッドと説明しないでください。返信が見つからない場合は、返信から得られる文脈は確認できないと記載します。読んでいない返信を記入しないでください。
- 動画のタイムライン上で、レッスンの該当箇所を探します。時間情報付き字幕を使って、該当しそうな区間を見つけます。その区間を再生してください。開始時点と終了時点を、動画内の秒数で記録します。教えている概念、関連する前の発言、画面に映る動作を記録してください。判断する前に、映像を見て音声を聞きます。字幕にない説明が、図では明確に示されていることもあります。字幕に言葉があるだけでは、音声での説明が明確で正しいとは限りません。動画の再生時間を使ってください。実際の時計の時刻は使わないでください。
- コメントを、確認したレッスンの内容と照合します。まず、3つの問いを確認してください。レッスンに説明が欠けていましたか。レッスンはすでにその点を説明していましたか。それとも、必要な事実がまだ不足していますか。そのうえで、判定を1つ保存します。根拠は、コメント、開いて読んだ返信、視聴した該当箇所です。`explanation_missing`は、視聴者が質問した点を、その箇所で教えていないことを意味します。`explanation_present_question_unresolved`は、その箇所に説明があり、確認した範囲では、この視聴者がその説明を見落とした、または理解できなかったことを示すものがないことを意味します。後から質問があっただけでは、説明が伝わらなかった証拠にはなりません。教える側が失敗したと書かないでください。確認した返信に、説明が伝わらなかったことを示す情報がない限り、この判定を使います。`possible_wording_gap`は、レッスンではその点を示しているものの、視聴者の誤りと正しい方法の違いを言葉で説明していないことを意味します。`setup_mismatch`は、コメントが異なる利用環境、製品、モデルについて述べていることを意味します。`unresolved`は、必要な事実を確認していないため、原因を特定しないことを意味します。判定の隣に根拠を保存してください。わからない点を述べたコメント1件だけでは、すべての視聴者に同じ問題があったとはいえません。
- 根拠がレッスンの修正を支持する場合に限り、変更案を1つ書きます。前提知識を追加する、解き方の1段階を実演する、単位を明示する、急に進む箇所をゆっくり説明する、該当箇所に短い要点整理を添える、といった変更が考えられます。前提知識とは、学習者が先に知っておく必要のある事実です。何がより明確になるべきかを書いてください。検証方法も書きます。視聴時間が延びると約束しないでください。視聴回数が増えると約束しないでください。その箇所の説明を変更します。メニューの変更や動画全体の要約は、別の作業です。判定が`unresolved`または`setup_mismatch`の場合は、このレッスンを無理に修正しないでください。
- 別の人が確認できるように、レッスンの課題を1行にまとめて保存します。コメントとスレッドのソース、確認した文脈、該当箇所の時間、教えるべき概念、判定、変更案、受け入れ検証を含めてください。受け入れ検証とは、変更が目的を果たしたこと、または変更する根拠がなかったことを確かめるテストです。別の人が同じソースを開き、判断の過程をたどれるようにします。文脈が不足している場合は、その行を`unresolved`のままにしてください。具体的な原因を作り上げないでください。
架空のレッスン課題マップを検討する
この節の園芸レッスン、コメント、返信、時間は、すべて独自に作成した架空のものです。方法を説明するための例です。Actorの出力でも、製品の実行結果でもありません。
この架空のレッスンでは、1つの技能を教えます。学習者はトレーを測り、単位を1つにそろえます。架空の字幕セグメントは次のとおりです。
[
{
"startSeconds": 20,
"endSeconds": 28,
"durationSeconds": 8,
"text": "Measure the width inside the tray edges"
},
{
"startSeconds": 28,
"endSeconds": 33,
"durationSeconds": 5,
"text": "Use centimeters for both dimensions."
}
]最初の区間を、単純な足し算で確認します。20に8を足すと28です。これは`endSeconds`と一致します。次の区間も確認してください。28に5を足すと33です。これも`endSeconds`と一致します。この計算で確認できるのは、架空の時間設定だけです。レッスンの評価にはなりません。
字幕本文に定規は出てきません。この例では、20–28秒を再生して映像を見ます。定規の起点は、左側の内縁に置かれています。それがわかるのは、映像を見たからです。字幕に定規の説明がないことは、映像に何も映っていないことを意味しません。また、字幕の文章だけでは、音声での説明が十分であるともいえません。
外側の縁とは、トレーの外周部分です。レッスンでは内側の縁を示しています。ただし、外側の縁を測定に含めないとは一度も説明していません。
| コメント | 概念 | 確認したスレッド | 確認したレッスンの該当箇所 | 判定 | 変更案 | 受け入れ検証 |
|---|---|---|---|---|---|---|
| 架空の園芸チュートリアルへのC1。コメント本文:「トレーの外側を測ればよいですか?」 | 内側の縁を基準に幅を測る。 | スレッドを開いて確認済み。返信には、視聴者が外側の縁を測ったと書かれている。 | 20–28秒。音声での説明:「トレーの縁の内側の幅を測ります。」定規の起点は左側の内縁にある。外側の縁との違いを音声では説明していない。 | `possible_wording_gap` | 20秒の箇所で内側と外側の両方の縁を示し、内側の縁に印を付け、外側の縁は含めないと説明する。 | 確認者がコメントスレッドを見ずに、新しい説明箇所だけで、測り始める縁と測り終える縁を正確に特定できる。 |
| 架空の園芸チュートリアルへのC2。コメント本文:「インチとセンチメートルを混ぜて使ってもよいですか?」 | 両方の寸法に同じ単位を使う。 | 確認した返信には、この視聴者に単位の説明が伝わらなかったことを示すものはない。 | 28–33秒。音声での説明:「両方の寸法にセンチメートルを使ってください。」 | `explanation_present_question_unresolved` | 任意の変更のみ:28秒の箇所に、画面上の単位表示または短い要点整理を添える。元の文は残す。ルールがなかったかのようにレッスンを書き換えない。 | 確認者が28–33秒で、元の単位説明の文を引き続き確認できる。質問があったことだけを理由に、説明が伝わらなかった事例として数えない。 |
| 架空の園芸チュートリアルへのC3。コメント本文:「ボタンがありません。」 | ボタンを見つける。コメントには機器もバージョンも書かれていない。 | 確認できる返信がなかった。機器とバージョンは不明のままにする。 | 確認できない。該当箇所の時間は不明。作り上げない。 | `unresolved` | レッスンは修正しない。 | この行は未解決のままにする。確認者は、機器、バージョン、原因、該当箇所の時間を追加しない。 |
| 架空の園芸チュートリアルへのC4。コメントは、別の製品モデルについて質問している。 | この動画で扱うモデルの操作手順。 | スレッドを開いて確認済み。返信から、コメントが別のモデルについて述べていることを確認できる。 | 今回のレッスンを原因とはしない。該当箇所の時間は割り当てない。 | `setup_mismatch` | このレッスンは修正しない。コメントが別のモデルを指していると記録する。 | 確認者が、確認済みの返信で別のモデルを確認でき、このレッスンの手順は変更せずに残す。 |
C1は具体的な測定方法を質問しているため、最初は`stated_confusion`とします。該当箇所では、トレーの縁の内側を測るとすでに説明しています。定規の起点が左側の内縁にあるため、映像もその説明と一致しています。説明が欠けているわけではないので、判定は`explanation_missing`ではありません。確認した返信には、視聴者が外側の縁を使ったと書かれています。レッスンでは、外側の縁と内側の縁の違いを説明していません。したがって、`possible_wording_gap`が当てはまります。返信からは、視聴者がなぜ外側の縁を選んだのかはわかりません。動機を作り上げないでください。変更案は、20秒の箇所で両者の違いを明確に示すことです。検証には、新しい映像と新しい文だけを使います。
C2も、最初は`stated_confusion`とします。28–33秒の説明では、両方の寸法にセンチメートルを使うというルールをすでに示しています。確認したスレッドには、この視聴者にその説明が伝わらなかったことを示すものはありません。明確な説明の後に質問があっても、説明が伝わらなかった証拠にはなりません。判定は`explanation_present_question_unresolved`です。単位を画面に表示すれば、後から見る視聴者がルールに気付きやすくなるかもしれません。これは任意の変更です。元の文を置き換えたり、ルールの説明が欠けていたことにしたりしてはいけません。
C3は、該当箇所を探す前の段階で`insufficient_context`です。「ボタンがありません」には、機器もバージョンも書かれていません。それらの事実を補う返信もありません。動画内の時間を選ぶことはできません。原因も特定できません。不明な文脈は、不明のままにします。判定は`unresolved`のままで、受け入れ検証では、無理に修正しないことを条件とします。
C4は具体的な質問なので、スレッドを確認する前は`stated_confusion`と記録できます。確認した返信から、このレッスンで扱うモデルとは異なることがわかります。そのため、判定を`setup_mismatch`に変更します。今回の該当箇所に、根拠のない欠陥を作り上げないでください。別のモデルへの質問に答えるために、このレッスンを変更しないでください。
この架空の例の行数を数えてください。`possible_wording_gap`が1行、`explanation_present_question_unresolved`が1行、`unresolved`が1行、`setup_mismatch`が1行です。合計でコメント4件分の行です。1行が、確認済みの人物1人を意味するわけではありません。この例では、何人が視聴したかは示していません。すべての視聴者が同じ問題を抱えていたとも述べていません。字幕の時間情報は、該当箇所を探すための補助にすぎません。映像を見て音声を聞く作業の代わりにはなりません。
出典と参考資料
著者 Chronometrica · 更新日
ページの先頭へ ↑

