【YouTube要約アプリ開発】シリーズ第1回では、「API」がプログラムとサービスを繋ぐ窓口であることを学び、AIと一緒に郵便番号検索APIを使った簡単なプログラムを作ってみました。
「APIを使うって、こういうことなんだ!」という感触を掴んでもらえたら嬉しいです。
第2回となる今回は、みんなが毎日見ているかもしれないYouTubeに注目します!
YouTubeには数えきれないほどの動画がありますが、実はその動画の情報に、あなたのプログラムからアクセスできるYouTube Data API」というものがあるんです。
この記事では、この YouTube Data API を使って、プログラムから YouTube 動画を検索する方法を学びます。
AIと協力して、キーワードで動画を探したり、特定の条件で絞り込んだりするプログラムを作っていきましょう!
第1回の振り返り:APIとAIプログラミングの第一歩
まずは、前回の学びをちょっと振り返ってみましょう。
- APIとは?: プログラムとインターネット上のサービス(情報や機能を持っている場所)を繋ぐ「仲介役」でしたね。
- AIがパートナーに: AIは、分からないことを教えてくれたり、コードを書いてくれたり、エラーの原因を探してくれたり… プログラミング学習の心強いパートナーになってくれることを実感しました。
- 開発環境とrequests: 前回は Google Colaboratory (Colab) を使いましたが、今回はVisual Studio Code (VS Code) と Google Code Assist を開発環境として使用します。
VS Code や Google Code Assist のインストールおよび詳細な設定については、別の記事を参照してください。
requestsライブラリを使えば API に簡単にお願いできることは変わりません。 - 郵便番号検索API体験: 無料・簡単で API キー不要な郵便番号検索 API を使って、実際に API から情報を取得し、表示するプログラムを作ってみました。
API を使うことの面白さを体験できたと思います!
VS CodeとGemini Code Assistの詳細については以下をご覧ください。
YouTube要約アプリ開発のシリーズ展開
このシリーズでは、YouTube動画の検索と要約アプリを完成させるために、以下のステップで進めていきます。
- 第1回: 【YouTube要約アプリ開発】第1回:APIってなんだろう? アプリ開発の基礎を学ぼう! プログラミングとAIの新しい学習スタイル、APIの基本、そして簡単なAPIを使ったプログラミングを体験します。
- 第2回: 【YouTube要約アプリ開発】第2回:YouTube動画を検索してみよう! Data API入門 いよいよYouTubeのデータに触れます。YouTube Data APIを使って、キーワードで動画を検索し、その情報を取得する方法を学びます。
- 第3回: 【YouTube要約アプリ開発】第3回:AIに動画内容を理解させよう! Gemini API入門 最新のAI、Gemini APIに動画を渡し、動画の要約を生成させます。AIの活用方法を実践的に学びます。
- 第4回: 【YouTube要約アプリ開発】第4回:ついに完成! 検索と要約機能を組み合わせる
これまでのステップで学んだAPIの利用方法を組み合わせ、動画検索から要約までを一連の流れで行えるアプリとして完成させます。。
YouTubeの情報をプログラムで活用しよう!
今回使うのは、YouTube Data API (v3) という API です。
「v3」というのはバージョン番号だと思ってください。
この API を使うことで、プログラムからYouTubeの様々な情報にアクセスしたり、操作を行ったりできるようになります。
YouTube Data API を使うと、具体的にこんなことができるようになります。
- 動画の検索: キーワードや様々な条件を指定して、関連する動画を探す。
- 動画情報の取得: 特定の動画のタイトル、説明文、再生回数、公開日、高評価数、サムネイル画像など、詳しい情報を取得する。
- チャンネル情報の取得: 特定のチャンネルの名前、登録者数、チャンネル登録日、アップロードした動画リストなどを取得する。
- 再生リスト情報の取得: 特定の再生リストに含まれる動画の一覧を取得する。
- コメントの取得: 動画に付けられたコメントを取得する。(取得できるコメント数などに制限がある場合があります)
なんかおもしろそうですね。
これらの機能を使えば、例えば「自分の好きなテーマの最新動画を自動でチェックするプログラム」とか、「よく見るチャンネルの動画情報をまとめて表示するアプリ」なんてものが作れそうですよね!
YouTube Data APIを使う準備:APIキーを取得しよう!
第1回で触れたように、多くの API を使うには「APIキー」が必要です。
YouTube Data API も例外ではありません。
あなたのプログラムが YouTube Data API を使うためには、API キーを取得する手続きが必要です。
APIキーはGoogle Cloud Platform (GCP)で取得します。
Google Cloud Platform (GCP) にアクセスする
ウェブブラウザで Google Cloud Console
にアクセスし、Google アカウントでログインします。
Google Cloud Consoleでは2段階認証が必要です。
もし、2段階認証の設定を求められたら、携帯電話番号を入力し、指示に従い設定をしておきます。

プロジェクトを作成する
「無料で利用開始」「無料トライアルを試す」のボタンがありますが、今回はトライアルではなく、無料の範囲でAPIを利用するので、このボタンはクリックせず、「プロジェクトの選択」をクリックします。

APIキーを作成するためには「プロジェクト」が必要です。
「新しいプロジェクト」をクリックします。

プロジェクト名にわかりやすい名前を入力して「作成」ボタンをクリックします。

作成されたプロジェクトを選択します。


「YouTube Data API v3」を有効にする
上部の検索欄に「YouTube Data API」と入力し、表示された「YouTube Data API v3」をクリックします。

YouTube Data API v3 を「有効にする」ボタンをクリックします。

「API キー」を作成する
YouTube Data API v3 が有効になったら、API キーを作成します。
「認証情報の作成」をクリックします。

「一般公開データ」を選択し、「次へ」をクリックします。

API キーが作成され画面に表示されます。コピーして大切に保管してください。
最後に「完了」ボタンをクリックします。

【超重要!】取得したAPIキーは、あなたの「鍵」です!
画面に表示された API キーは、あなたのプログラムが YouTube Data API を使うための大切な「鍵」です。
この API キーを、他の人に見せたり、インターネット上にそのまま公開したりすることは絶対にしないでください!
もし知られてしまうと、第三者にあなたの API キーを使って勝手に API を利用され、無料枠を超えて料金が発生してしまうなどのリスクがあります。
API キーは、安全な場所に保管しておきましょう。
AIと協力して! YouTube動画を検索するプログラムを作ろう!
API キーの準備ができたら、いよいよプログラミングです!
プログラム作成の準備
まずは、このプロジェクトの作業用フォルダを作成し、VS Code で開く準備をしましょう。
- 作業用フォルダの作成:
コンピューター上の任意の場所に、このプロジェクトのためのデスクトップなどに新しいフォルダを作成します。例えば、「youtube_summary_app」のような分かりやすい名前にすると良いでしょう。 - VS Code でフォルダを開く:
Visual Studio Code を起動し、メニューから「ファイル」>「フォルダを開く」を選択します。先ほど作成した「youtube_summary_app」フォルダを選んで開きます。
これで、VS Code のエクスプローラー(左側のサイドバー)に作成したフォルダが表示され、このフォルダ内でファイルを作成したり編集したりできるようになります。
AIとプログラム作成しよう
VS Code と Google Code Assist を使って、AI に手伝ってもらって、YouTube Data API を使った動画検索プログラムを作ってみましょう。
今回は「Gemini Code Assist」を使ってみます。
「Gemini Code Assist」の導入方法などについては、こちらの記事を参照してください。
チャットエリアで次のようなお願いをしてみます。
Pythonを使って、requestsライブラリでYouTube Data API v3にアクセスし、動画を検索するプログラムを書きたいです。
このプログラムは、他のPythonコードから関数として呼び出されることを想定しています。検索機能は関数として実装し、検索結果をリストで返すようにしてください。
検索キーワードは関数の引数で受け取るようにします。デフォルトの検索キーワードは「プログラミング 初心者」とします。
検索結果として、動画のタイトルとYouTubeの動画URLを5件表示したいです。表示件数も関数の引数で受け取れるようにし、デフォルトは5件とします。
取得したAPIキーは、同じディレクトリにある「config.json」ファイルから読み込むようにしてください。config.jsonには {“youtube_api_key”: “YOUR_API_KEY”} という形式でキーが保存されているとします。
プログラムコードと、それぞれの行が何をやっているかの解説をお願いします。コードは、このファイル単体で実行された場合(mainの場合)に、検索処理のデモを行うようにしてください。

こんな感じで、やりたいこと(検索)、キーワード、欲しい情報(タイトル、URL)、表示件数、使う API、API キーの取得方法(ファイルから読み込み)、そして「関数として呼び出される」という要件を具体的に伝えると、AI は望に沿ったコードを提案してくれます。
「Accept changes」をクリックしエディターに表示してから、「Ctrl + S」キーを押して保存します。
ファイル名は「youtube_search.py」とします。

AIは学習状況やタイミングにもより、生成してくれるコードは異なります。
私の場合は以下のようなコードを生成してくれました。
YouTube Data API を使用して動画を検索するコード
このコードは、APIキーを「config.json」から読み込むように作られています。
VS Codeで「ファイル」>「新しいファイル」をクリックし、以下の内容で「config.json」という名前で保存します。
「作成したAPIキー”」の部分はGoogle Cloud Consoleで作成したAPIキーに置き換えます。
{
"youtube_api_key": "作成したAPIキー"
}
本来は API キーをコードや設定ファイルに直接書くのはセキュリティ上好ましくありませんが、今回は分かりやすさを優先してファイルから読み込む例を示しています。
(本来は環境変数に設定、暗号化するなどの考慮が必要です)
プログラムを実行してみよう
VS Code のメニューから「表示」>「ターミナル」を選択します。
または「Ctrl + @」キーを押します。
画面下部にターミナルが表示され、現在開いているフォルダがカレントディレクトリになっているはずです。
ターミナルに以下のコマンドを入力して Enter キーを押してください。
python youtube_search.py
指定したキーワードに関連する YouTube 動画のタイトルと URLが表示されたら成功です!

コードの解説
コードは2つの関数と「if __name__ == "__main__":
」 ブロックで構成されています。
関数(defで定義)は、特定の処理をひとまとめにし、名前を付けて定義することで、プログラムの様々な場所から繰り返し呼び出して実行できます。
load_api_key(config_path="config.json") 関数:
- 指定された
config_path
(デフォルトは"config.json"
) から API キーを読み込む役割を担います。 - ファイルが見つからない場合 (
FileNotFoundError
) や、JSON 形式が不正な場合 (json.JSONDecodeError
)、必要なキー("youtube_api_key"
) が見つからない場合には、エラーメッセージを表示します。
search_youtube_videos(query="プログラミング 初心者", max_results=5) 関数:
- この関数の名前の通り、YouTube 動画を検索するメインの機能を提供します。
- 引数として検索キーワード (
query
) と表示件数 (max_results
) を受け取ります。それぞれデフォルト値が設定されています。 - 内部で
load_api_key()
関数を呼び出し、API キーを取得します。API キーが取得できなかった場合は、エラーメッセージを表示して空のリストを返します。 - YouTube Data API の search エンドポイント URL (
search_url
) と、API に渡すパラメータ (params
) を設定します。パラメータには、取得した API キー、検索キーワード、取得したい情報の種類 (snippet
など)、検索対象の種類 (video
)、表示件数などが含まれます。 - 設定したパラメータを使って、
requests.get()
で API に HTTP GET リクエストを送信します。 - API からの応答を JSON 形式で受け取り (
response.json()
)、HTTP エラーがないか確認します (response.raise_for_status()
)。 - 応答データの中から検索結果のリスト (
items
) を取り出し、各動画のタイトル (item['snippet']['title']
)、動画 ID (item['id']['videoId']
) を抽出します。 - 抽出した動画 ID を使って、その動画の YouTube 上での URL を組み立てます。
- 取得した動画情報を
{'title': 動画タイトル, 'url': 動画URL, 'video_id': 動画ID}
の辞書のリストとしてまとめ、関数の戻り値として返します。API リクエストやデータ処理中にエラーが発生した場合は、空のリストを返します。
if __name__ == "__main__": ブロック:
- この Python スクリプトが直接実行されたときのみ処理される部分です。
- ここには、
search_youtube_videos()
関数を呼び出して検索を実行し、その結果をコンソールに表示するデモンストレーションのコードが含まれています。デフォルト設定での検索と、カスタムキーワードでの検索の両方のデモが行われます。 - 他の Python ファイルからこのスクリプトをインポートして
search_youtube_videos()
関数を呼び出す際には、このブロック内のコードは実行されません。これにより、ライブラリとして利用する場合と単体で動作確認する場合とを両立できます。
(他のファイルのコードなどからも関数が呼び出せます)
もしわからない個所があったら、VS Codeでその部分を選択し、Gemini Code Assistに質問してみましょう
APIへのアクセス方法について
YouTube Data API にアクセスする方法はいくつかありますが、今回は Python のrequests
ライブラリを使用しています。
Google が提供する API には、google-api-python-client
のような専用のクライアントライブラリも存在しますが、requests
は特定の API に依存しない汎用的な HTTP 通信ライブラリです。
このシリーズでは、API の基本的な仕組みや HTTP 通信の概念を理解することを重視し、より汎用的な requests
を使って API にアクセスする方法を学びます。
これにより、他の様々な API を利用する際にも応用できる基礎知識を身につけることができます。
もっと詳しく探したい! 検索条件を指定してみよう!
ただキーワードで検索するだけでなく、「最近アップロードされた動画だけ」「特定のチャンネルの動画だけ」のように、もっと条件を絞り込んで検索したいと思うことがありますよね。YouTube Data API は、様々な検索パラメータを用意しています。
例えば、こんなパラメータがあります。
publishedAfter
,publishedBefore
: 投稿された期間を指定できます。(例:publishedAfter="2025-01-01T00:00:00Z"
のような形式で日時を指定)channelId
: 特定のチャンネル IDを指定して、そのチャンネルの動画だけを検索できます。order
: 検索結果の並び順を指定できます。(例:relevance
関連度順,viewCount
再生回数順,date
投稿日順など)maxResults
: 取得する検索結果の最大件数を指定できます。
検索パラメータについては公式ドキュメントを参照してください。
今回のまとめ
【YouTube要約アプリ開発】第2回、お疲れ様でした!
今回は、YouTube Data API を使って、プログラムから YouTube 動画の情報を取得・検索する方法を学びました。
- API を使うためのAPI キーの取得方法(GCP での手続き)を知り、セキュリティ上の注意点も確認しました。
- AI と協力して、キーワードで動画を検索するプログラムを作成し、実行することができました。
- 検索パラメータを使うことで、投稿日やソート順など、より詳細な条件で検索できることを学びました。
次のステップへ
第2回で「動画を見つける」ことができるようになりましたが、このシリーズの最終目標は「動画を要約する」ことです。
動画の内容を理解して要約するのは、まさにAI の得意技!
次の【YouTube要約アプリ開発】第3回では、いよいよGemini APIに挑戦します。
YouTube Data API で取得した動画を、Gemini API に渡して、AI に内容を理解させて要約してもらう方法を学びます。
YouTube Data API と Gemini API という、2 つの API を組み合わせることで、より高度でおもしろい機能が実現できることへの期待感を高めて、ぜひ次回の記事に進んでください!
コメント