YouTubeの検索結果ビューワーの試作
お久しぶりです。
えれめんです。
しばらく仕事に追われていたため、外部公開する成果が出せていませんでしたが、少し余裕ができたため、最近趣味で開発しているものを紹介します。
表題の通り、YouTubeのキーワード検索結果を保存するビューワーを最近試作しました。開発期間は3日ほど(調査を含めると5日)です。
短期間で試作したため、必要なページ全てが揃っているわけではありませんが、動作確認ができ、個人で使用する分にはそこそこのものができました。
使用した技術・ライブラリ
・YouTube Data API v3
このAPIを使って、検索結果をリクエストし、JSON形式でデータを受け取ります。
・Laravel
PHPのフレームワークで、上記APIの利用、結果の取得、結果のDBへの保存処理の実装、ビューの表示部分の実装をPHPで記述しました。
・lorisleiva/laravel-docker
Laravelの環境を簡単に構築できるDockerイメージです。
・googleapis/google-api-php-client
YouTube APIのPHP用のクライアントライブラリです。
試作したビューワー
キーワード検索結果一覧の表示
(キーワード「ASMR」で日本リージョンの視聴回数が多い順に表示した例)
動画タイトルクリックで、該当の動画ページにジャンプします。
特定チャンネルの詳細表示と特定キーワード(今回の場合は「ASMR」)が含まれる動画一覧の表示
(ホロライブの「猫又おかゆ」さんの結果を例として示させていただきました)
上記の一覧表示でチャンネル名のリンクを選択することで表示される画面です。
サムネイルのアイコンをクリックすると、該当のYouTubeチャンネルページにジャンプします。
ビューワーの表示をつくるまでの手順
① Laravelから検索キーワード、取得件数、その他の条件(再生回数が多い順に50件を取得。日本リージョンの動画のみ取得 など)とAPIキーを付して、YouTube Data APIを用いて検索結果のリクエストを行う
② ①でのリクエスト結果(検索結果)を取得する
③ ②で取得したデータを適切な形でMySQL(データベースの一つ)に保存する
④ MySQLから、必要なデータのみを取得して、Laravelに返す
⑤ ④で取得したデータを適切に処理し、ビューワーとして表示する
今回使用したPHP、MySQL、Laravelのバージョンは以下の通りです。
PHP:8.0.7
MySQL:8.0.26
Laravel:8.54.0
今後の展望
■ビューワーの見た目の向上
今のところHTMLのみでの記述で、表示周りの調整をしていないので、調整を行い、もう少しましな見た目にする予定です。
■機能の拡充
・チャンネルをお気に入り登録する機能
・お気に入り登録したチャンネルの統計情報(チャンネル登録者数、投稿動画本数など)を定期的に取得する機能
・対象の動画の統計情報(再生数、高評価数など)を定期的に収集する機能
・特定のキーワードで定期的に検索結果を収集し、ビューワーに反映する機能
の実装をひとまず予定しています。
■クォーター消費量を抑える工夫を加える
YouTube Data APIで無制限に検索できるわけではなく、「クォータ」を使い切ると太平洋時間で日付が変わるまで(日本だと夏では17時に相当)YouTube Data APIが使えなくなります。
デフォルトでは、1日で1万クォータが上限ですが、申請で上限を引き上げることもできます。
このクォータの消費量は、雑に言うと取得するデータの量に依存するので、必要最小限のデータの取得を要求するリクエストを行うのが良いです。
APIには、idのみを取得するか、統計情報 (statistics)も取得するか、諸々の情報(snippet)を取得するかなど、取得したい情報の種類を指定できるので、snippetの情報がいらないときは、それをリクエストに加えないといった調整をする必要があります。
この調整を少しずつ進めていく予定です。
最後に
今回は、試作した試作ビューワーの概要と今後の開発展望についてまとめてみました。気が向いたら、今後も開発進捗をnoteにまとめていこうと思います。
ここまでお読みいただき、ありがとうございました。
参考にしたサイト
今回のビューワーの試作にあたり、以下のサイト記事を参考にさせていただきました。こちらに記して感謝申し上げます。
YouTube Data API公式リファレンス
YouTube Data API を使って自分のチャンネルに関するデータを集計してみた(YouTube Data API ×Pythonによるデータ収集)
YouTubeDataAPIv3をPythonから使って最近の動画傾向を調べてみた
【YouTube Data API】クォータの使用量はどのように確認する?オーバーするとどうなる?読み取りでの使用量は?
Laravel公式サイト
DockerでLaravelのローカル開発環境構築を行う(lorisleiva/laravel-dockerによる環境構築)
Laravel:改行コードを含んだ変数をBladeで表示させる