

# YouTubeのプログラミング教材が今でも使えるか確認する方法

古いYouTubeチュートリアルが手元のソフトウェアのバージョンでも使えるかを確認するには、動画に明記されたバージョンと、画面に表示される正確な手順を記録します。その手順を、手元のバージョンに対応する公式ドキュメントと比較します。次に、自分のコンピューターで安全な例を1つテストします。結果はバージョン・手順確認表に保存します。チュートリアル全体を進める前に、変更した指示と未解決の手順を確認できる状態にしておきましょう。

まず、動画、使用するソフトウェア、公式ドキュメントを用意します。短いチュートリアルなら、手作業で確認できます。長い動画では、時刻付き字幕が指示を探す助けになります。ただし、字幕だけでは画面上のコードを確認できず、そのコードが動くことも証明できません。

作成する表には、確認したこと、変更点、まだ根拠が必要なことを記録します。この表は、明記した1つの環境で、チュートリアルの1つの作業を進められるかどうかを判断するために使います。

## 1. 作業を決め、両方のバージョンを記録する

チュートリアルで得たい結果を1つ選びます。例えば、テキストから完全一致する接頭辞を取り除く作業です。接頭辞とは、長いテキストの先頭にあるテキストです。

確認できる小さな作業に絞ります。「このテキスト操作は動くか」なら、明確なテストができます。「このプログラミング講座は今でも役に立つか」では、明確なテストになりません。

ある[公開のプログラミングに関する質問](https://www.reddit.com/r/learnprogramming/comments/1gz6km5)には、「YouTube動画と大量の練習だけでプログラミングを学べますか」とあります。提供された資料によると、返信ではソフトウェアのバージョンが古くなる問題が挙げられています。これは、練習前に環境を確認する理由になります。ただし、この1件の質問から、同じ問題を抱える学習者の人数は分かりません。

指示をコピーする前に、次の情報を記録します。

1. チュートリアルのタイトルと動画URL。
2. 公開日。分かる場合に記録します。
3. チュートリアルに明記されたソフトウェア名とバージョン。
4. そのバージョンが明記されている場所。
5. 実際に使用するソフトウェアのバージョン。
6. 確認した日付。
7. 再現したい結果を1つ。

環境とは、作業に使用するソフトウェアの構成です。選んだ手順に影響する場合は、ほかの構成情報も記録します。例えば、チュートリアルで必要なツールのバージョンが指定されていれば、それも記録します。

公開日とソフトウェアのバージョンは、分けて記録します。最近公開された動画でも、その指示が手元のバージョンに合うとは限りません。古い動画でも、すべての指示が使えなくなったとは限りません。

チュートリアルにバージョンの記載がなければ、「不明」と書きます。動画の古さや見た目から推測しないでください。手元のバージョンを確認できない場合は、バージョンが一致すると判断する前に、その不明点を解消します。

## 2. 各指示のある箇所を探し、画面を確認する

選んだ作業を実行している箇所を視聴します。必要な操作ごとに一時停止します。変更を提案する前に、画面に表示される指示を正確に書き写します。

字幕とは、動画に付随して保存されているテキストです。字幕のテキストをまとめたものがトランスクリプトです。時刻付き区間とは、開始時刻と終了時刻を持つ1つの字幕部分です。

字幕で該当しそうな箇所を探します。その後、その箇所を視聴します。話し手は「これを実行します」としか言わず、完全なコマンドが画面にしか表示されない場合があります。また、字幕にはソフトウェア名の誤りがあったり、説明なしで行った操作が抜けていたりすることもあります。

長い動画では、[長い講義から1つの概念を探す方法](/ja/articles/youtube%E9%95%B7%E6%99%82%E9%96%93%E8%AC%9B%E7%BE%A9-%E6%A6%82%E5%BF%B5%E3%81%AE%E8%AA%AC%E6%98%8E%E3%82%92%E6%8E%A2%E3%81%99%E6%96%B9%E6%B3%95/)で紹介している、範囲を絞って探す方法を使います。ここでの目的は、検証が必要な指示を見つけることです。講義全体の索引を作る必要はありません。

必要な手順ごとに、次のことを行います。

1. 指示が表示される動画内の時刻を保存します。
2. 画面上のコード、メニュー項目、設定を読みます。
3. その直前に表示された環境設定を記録します。
4. 元の指示を保存します。
5. 判読できないテキストは未解決と記録します。

音声の言葉を、抽出したコードとして扱わないでください。後で説明する字幕ツールは、光学文字認識を行いません。光学文字認識とは、画像から文字を読み取る処理です。画面は自分で確認する必要があります。

「動きました」というコメントは、確認項目を考える手がかりになります。ただし、互換性の証明にはなりません。互換性とは、対象のソフトウェアのバージョンで指示どおりに動くことです。コメントには、そのバージョンや実際に行った正確な手順が書かれていない場合があります。

ボタンが見つからない、またはエラーが出るというコメントは、根拠として使う前に、動画の該当箇所と照合します。この確認方法は、[コメントをチュートリアルの該当箇所と照合する方法](/ja/articles/youtube-%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%AE%E8%AA%AC%E6%98%8E%E4%B8%8D%E8%B6%B3/)で説明しています。環境と関連性を確認するまでは、そのコメントを手がかりとして扱ってください。

## 3. 必要に応じて時刻付き字幕を使う

[YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)はActorです。Actorとは、ホストされた環境でデータを収集するプログラムです。ここで文書化されている役割は、既存の公開字幕を読み取ることです。指示の特定、画面の確認、公式ドキュメントの確認、テスト結果の判断は、自分で行います。

2026年10月25日に確認した公開仕様は、ビルド0.1.43について説明しています。入力できるのは、公開YouTube動画の直接URLまたは動画IDです。IDとは、動画を識別する短いコードです。チャンネル、再生リスト、検索結果ページは、取得元のリストとして受け付けません。既存の字幕トラックを読み取るもので、音声から新たにテキストを作成したり、音声や動画をダウンロードしたりはしません。

公開されている[時刻付きトランスクリプトのTask](https://apify.com/chronometrica/youtube-transcript-scraper/examples/youtube-timestamped-transcript-json)は、作業を始めるためのプリセットです。Taskとは、入力値をまとめて保存したものです。2026年10月25日に、その公開ページとTask IDの存在を確認しました。この確認では、認証が必要な保存済み入力の確認や、実行テストは行っていません。

この小さな入力例は、提供されたスキーマチェックに合格しています。スキーマとは、入力できる項目と値を定めたものです。スキーマチェックへの合格は、データ収集の実行成功を意味しません。

```json
{"includeFailedInputDetails":true,"outputFormats":["json"],"preferredLanguages":[],"startUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}
```

3. 必要に応じて時刻付き字幕を使う

実行前に、次のことを行います。

1. `startUrls`のサンプルリスト全体を、対象の公開チュートリアルのURLに置き換えます。
2. 時刻付き区間をリクエストするため、`outputFormats`は`["json"]`のままにします。
3. 字幕の言語を選ぶ方針を決めます。
4. 失敗した入力が実行レポートに残るよう、`includeFailedInputDetails`はtrueのままにします。

サンプルURLは、スキーマを示すための例です。チュートリアルに役立つ結果が得られた根拠ではありません。このガイドのためにActorを実行した事実はありません。

`preferredLanguages`のリストを空にすると、利用可能な字幕トラックのうち最適なものをリクエストします。英語になる保証はありません。希望する言語を設定すると、Actorは指定順に試します。どの言語も利用できない場合は、言語を利用できないことを示す種類付きの失敗結果を返すと文書化されています。つまり、通知せずに別の言語へ切り替えるのではなく、失敗の分類を明示します。

文書化されている入力件数の範囲は1～1,000件です。同じ動画IDが複数あっても、処理は1回だけです。今回の確認では、チュートリアルを1つだけ使います。

計画した収集を実行した後は、テキストを使う前に結果を確認します。データセットの1行は、保存された1本の動画の結果です。重複を除いた動画のうち、取得に成功したものが行として保存されます。失敗した入力は、OUTPUTという実行レポートに表示されます。

動画を識別する情報と、`status`、`statusReason`、`transcriptLanguageCode`、`isAutoGenerated`、`scrapedAt`を保存します。最後の項目には、収集時刻が記録されます。元の`segments`も、`text`、`startSeconds`、`endSeconds`、`durationSeconds`を含めて保存します。

返された時刻を使って、該当箇所を探します。時刻のないテキストだけでは、字幕の終了時刻を確認できません。終了時刻があっても、継続時間が欠けていれば、継続時間は不明のままです。欠けている値をゼロに置き換えないでください。

言語ラベル、字幕の出所を示すラベル、収録範囲を示す値は、字幕の言葉が正しいことを証明しません。どの場合も、動画の該当箇所を視聴してください。

字幕は、公開された元データです。保存済みの入力、非公開の実行記録、手元のバージョンの記録、テスト結果は、それぞれ別の記録です。公開プリセットのページだけでは、アカウント所有者が何を保存し、何を実行したかは分かりません。

## 4. バージョン・手順確認表を作る

バージョン・手順確認表では、各指示を、その出典、公式資料、テスト結果と結び付けます。必要な手順ごとに1行を使います。2つの操作に異なる確認が必要なら、行を分けます。

次の項目を保存します。

| 項目 | 保存する内容 |
| --- | --- |
| 作業 | 得たい小さな結果 |
| 動画の出典 | タイトルと公開URL |
| 出典内の該当箇所 | 動画内の時刻と、利用できる場合は関連する字幕区間 |
| 元の指示 | 画面に表示された正確なコード、選択項目、操作 |
| チュートリアル側のバージョン | 明記されたバージョンと確認した場所。分からなければ不明 |
| 手元の環境 | 実際に使用するソフトウェアのバージョンと、関連する構成 |
| 公式資料 | ページのURL、対象バージョンの範囲、関連する記述 |
| 公式資料の確認日 | そのページを読んだ日付 |
| 変更案 | 元の指示とは分けて保存する、置き換え用の指示 |
| テスト入力 | テストした場合は、安全な入力の正確な内容 |
| 予想される結果 | 起こるはずのことと、その理由 |
| 実際の結果 | 実際に確認した正確な出力またはエラー。実施していなければ未テスト |
| テスト日 | テストした日付。実施していなければ未テスト |
| 状態 | 確認済み、公式資料で確認した変更、未テスト、確認不可のいずれか |
| 未解決の問題 | 不足している根拠と、次に必要な確認 |

成功した出力と同じように、エラーも正確に保存します。エラーを予想していた結果に置き換えないでください。

情報が欠けている場合は「不明」と記録します。ゼロは、実際の値がゼロだと分かっている場合にだけ使います。「テストの記録なし」は「失敗ゼロ」を意味しません。その行には、テストによる根拠がないという意味です。

元の指示と変更案は、別の項目に保存します。そうしないと、後で読む人が、何を、なぜ変更したのか分からなくなります。

## 5. 機能とバージョンに対応する公式資料を読む

対象機能の公式ドキュメントを開きます。機能とは、ソフトウェアが持つ1つの働きや動作です。そのページがどのバージョンを対象にしているか確認します。

動作の説明に加え、その機能がいつ追加、変更、削除されたかの注記も読みます。関連する記述と、確認した日付を保存します。

次の順序で確認します。

1. 画面上の指示に対応する、正確な機能名を確認します。
2. 公式資料の対象バージョンを確認します。
3. 想定される動作を読みます。
4. バージョンに関する注記を確認します。
5. 公式資料の対象範囲と手元のバージョンを比較します。
6. まだ確認できない点を記録します。

現在のドキュメントに、機能が追加された時期が書かれていることがあります。ただし、それだけでは、それ以前のすべてのバージョンのあらゆる動作を裏付ける根拠にはなりません。必要なバージョンがそのページの対象外であれば、対応する公式資料が見つかるまで、その部分は未解決のままにします。

ドキュメントが見つからなかったという理由で、機能が使えないと判断しないでください。検索で見つからなかったことは、資料の不足として記録します。

[Pythonの文字列に関する公式リファレンス](https://docs.python.org/3/builtins/stdtypes.html#str.removeprefix)に、分かりやすい例があります。`str.removeprefix`は、指定した接頭辞と完全一致するテキストが先頭にあれば、それを取り除きます。一致しなければ、元の文字列をそのまま返します。この資料には、Python 3.9で追加されたと記載されています。

提供された同じ公式資料では、`lstrip`との違いも示されています。この処理は、指定した集合に含まれる文字を先頭から取り除きます。完全一致する接頭辞を取り除く処理と同じものとしては使えません。名前が似ていたり、1つの入力で似た結果が出たりしても、同じ動作だとは確認できません。

## 6. 結果が明確で、安全にできるテストを選ぶ

再現性テストとは、明記した環境と入力から、明記した結果を得られるか確認するテストです。

機能について知りたいことを確認できる、最小のテストを選びます。手元の値だけを処理し、外部に影響を与えない操作を優先します。実行前に、予想される結果を書きます。

この最初の確認では、内容を確認していないインストール、アカウント作成、認証情報の使用、本番システムでの操作、確認せずにコピーしたコマンドの実行を避けます。認証情報とは、アクセスするために使う秘密の情報です。本番システムとは、実際の業務やサービスに使っているシステムです。

正確な入力、予想される出力、実際の出力、手元のバージョン、テスト日を記録します。テストが失敗したら、正確なエラーを保存し、その手順を止めます。説明のない変更をいくつも加え、最後に成功した結果だけを記録しないでください。

安全な機能テストで確認できる範囲は限られています。手元の環境で1つの操作を確認できます。ただし、プロジェクト全体をインストールできること、チュートリアルのすべての手順が動くこと、ほかのバージョンでも同じ動作になることは証明できません。

## 7. 実例：完全一致する接頭辞を取り除く

この例では、提供された、手元の環境でのテスト記録を使います。創作例ではありません。また、実際のYouTubeチュートリアルをテストしたものでもありません。

記録された環境はPython 3.12.12です。確認日は2026年10月25日です。テストでは、手元で標準ライブラリの文字列式だけを使いました。標準ライブラリとは、Pythonに付属するツール群です。このテストには、インストール、ネットワークへのアクセス、チュートリアルの実行は含まれていません。

作業は、文字列から完全一致する接頭辞を取り除くことです。文字列とは、テキストを表す値です。

1つ目の式：

```python
"Arthur: three!".removeprefix("Arthur: ")
```

7. 実例：完全一致する接頭辞を取り除く

予想される結果は`three!`でした。記録された実際の結果も`three!`でした。

接頭辞は、英字6文字、コロン1文字、スペース1文字の計8文字です。元のテキストは14文字です。この接頭辞を取り除くと、14 − 8 = 6文字が残ります。`three`の英字5文字と感嘆符1文字です。ここでの単位は文字であり、バイトではありません。

2つ目の式：

```python
"Arthur: three!".lstrip("Arthur: ")
```

7. 実例：完全一致する接頭辞を取り除く

予想される結果は`ee!`でした。記録された実際の結果も`ee!`でした。

この場合、`lstrip`は、指定したテキストを、先頭から取り除く文字の集合として扱います。`Arthur: `を取り除いた後も、`three!`の先頭にある`t`、`h`、`r`を続けて取り除きます。これらの文字も、指定した集合に含まれているためです。`e`に達すると停止します。

そのため、接頭辞の8文字に加え、さらに3文字が取り除かれます。文字数は14 − 8 − 3 = 3文字です。残るテキストは`ee!`です。

| 確認項目 | 記録された根拠 | 確認できる範囲の限界 |
| --- | --- | --- |
| 手元のバージョン | Python 3.12.12 | ほかの環境については説明していない |
| 公式のバージョン注記 | `str.removeprefix`はPython 3.9で追加 | 以降のすべてのバージョンのあらゆる動作を裏付けるものではない |
| 完全一致する接頭辞のテスト | 予想：`three!`、実際：`three!` | この式と入力だけを確認している |
| 先頭の文字を取り除くテスト | 予想：`ee!`、実際：`ee!` | この式を同等の代替処理として使えない理由を示している |
| チュートリアル側のバージョンと該当箇所 | 不明。チュートリアルはテストしていない | チュートリアルのどの手順も確認済みにはできない |
| 作業全体 | 未テスト | チュートリアル全体が成功するとは言えない |

この根拠から判断できる範囲は限られています。完全一致する接頭辞を取り除きたい場合は、使用するバージョンが対応していれば、その処理を使います。`lstrip`を同じ意味の処理として代用しないでください。

自分が使うチュートリアルでは、実際に画面に表示された指示と、その動画内の時刻を追加します。その後、明記した手元のバージョンで、安全なテストを自分で行います。提供された結果はPython 3.12.12についての根拠であり、あなたのコンピューターで得られた結果ではありません。

## 8. 状態を付け、進められる手順を判断する

表全体で、次の4つの状態を統一して使います。

| 状態 | 意味 | 次の判断 |
| --- | --- | --- |
| 確認済み | 指示を調べ、明記した環境で選んだテストの結果を確認した | テストで確認した範囲内で進める |
| 公式資料で確認した変更 | 関連するバージョン間の違いが、公式資料で裏付けられている | 元の指示を保存し、変更案を示し、その変更をテストしたか記録する |
| 未テスト | 必要なテストをまだ行っていない | 手元で動くと判断する前にテストする |
| 確認不可 | 根拠の不足、または安全でない必須操作のため、確認を進められない | その手順を実行する前に、確認を妨げる問題を解消する |

公式資料で変更を確認できても、修正後の動作をテストできたことにはなりません。テスト結果は、専用の結果項目に記録します。新しい指示が必要なら、根拠を明確にするため、別の行を設けます。

字幕がなくても、動画を自分で確認できます。画面が読めなければ、正確な指示は未解決のままにします。手元のバージョンが不明なら、互換性があると判断する前に確認します。公式資料の対象範囲が合わなければ、資料の不足として残します。

チュートリアル全体を進める前に、必要な行をすべて確認します。各行には、実行予定の操作を裏付ける根拠が必要です。式のテストに合格しても、未テストのインストールやアカウント関連の手順まで確認できたことにはなりません。

この表を、動画全般の品質を示す点数に置き換えないでください。目的は、1つの実用的な判断を支えることです。明記した環境で、どの指示に従って進められ、どの指示にまだ確認が必要かを判断します。

## 次に、必要な手順を1つ確認する

チュートリアルの画面に表示される指示を1つ選びましょう。チュートリアル側と手元のバージョンを記録し、関連する公式資料を読んで、安全にできるテストを1つ決めます。次に進む前に、正確な結果と、その結果で確認できる範囲を保存してください。

指示のある箇所を探すのに時間がかかる場合は、[YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)を使い、対象の公開チュートリアル動画にある時刻付き字幕の取得をリクエストできます。最初にサンプルURLを置き換えてください。取得結果を確認するまでは、データ収集を実施候補の操作として扱います。その後、動画に戻り、自分でバージョンの確認を完了してください。

## 出典と参考資料

- [Pythonの組み込み型：接頭辞の除去と先頭文字の除去 — 2026年10月25日確認。公式の動作説明とバージョン注記であり、チュートリアルのテストではない](https://docs.python.org/3/builtins/stdtypes.html#str.removeprefix)
- [YouTube Transcript Scraper — 2026年10月25日確認。公開ビルド0.1.43の仕様。データ収集の実行と、実行環境が正常に動作するかのテストは行っていない](https://apify.com/chronometrica/youtube-transcript-scraper)
- [時刻付きトランスクリプトのTask — 2026年10月25日確認。公開ページとTask IDの存在のみを確認。保存済み入力と実行は未確認](https://apify.com/chronometrica/youtube-transcript-scraper/examples/youtube-timestamped-transcript-json)
- [YouTubeでプログラミングを学ぶことについての公開質問 — 2024年11月25日公開、2026年10月25日確認。読者からの1件の質問であり、需要や性能を示す根拠ではない](https://www.reddit.com/r/learnprogramming/comments/1gz6km5)