「関連動画でさらに便利に!初心者でも挑戦できるレコメンド機能」
TAKA: 老師、今回は動画詳細ページに関連動画を表示する機能を追加したい!ユーザーが次に観る動画を探しやすくしたいんだ。
AI老師: よいぞ、それは動画プラットフォームにおいて重要な機能じゃ。関連動画を表示することで、ユーザーの滞在時間が増え、より便利なアプリになるぞ。
レコメンド機能の基本アイデア
TAKA: でも、どうやって関連動画を表示すればいいの?ランダムに選ぶだけじゃ関連性が薄いよね?
AI老師: そうじゃな。関連動画を表示するには、次のような簡単な条件を使うとよいぞ。
同じジャンル: 動画のジャンルやカテゴリが一致するものを選ぶ。
キーワードの一致: 動画のタイトルや説明文に共通するキーワードを探す。
ランダム表示: 最後の手段として、ランダムにいくつかの動画を表示する。
今回は初心者向けじゃから、簡単にランダム表示を使う方法から始めるぞ。
ステップ1: テンプレートの修正
TAKA: 動画詳細ページに関連動画のリストを追加したいんだけど、どうすればいい?
AI老師: テンプレートに関連動画のHTML構造を追加して、関連動画のタイトルや説明をリスト形式で表示するのじゃ。リンクをクリックすると、選んだ動画の詳細ページに飛ぶように設定するのじゃ。
テンプレートに以下の部分を追加するのじゃ。
関連動画
- {{ related_video.title }} {{ related_video.description }}
これで関連動画が表示されるようになるぞ。
ステップ2: バックエンドの実装
TAKA: じゃあ、バックエンドで関連動画を取得するロジックはどう書けばいい?
AI老師: 簡単じゃ。動画データベースからランダムにいくつかの動画を選んで渡すだけじゃ。app.py の video_detail 関数を次のように修正するのじゃ。
from random import sample
@app.route(‘/video/’, methods=[‘GET’, ‘POST’])
@login_required
def video_detail(video_id):
video = videos.find_one({‘video_id’: video_id})
if request.method == ‘POST’:
comment = request.form.get(‘comment’)
if comment:
videos.update_one({‘_id’: video[‘_id’]}, {‘$push’: {‘comments’: {‘text’: comment}}})
return redirect(url_for(‘video_detail’, video_id=video_id))
if video:
video['statistics'] = get_video_statistics(video_id)
video['average_rating'] = sum(video.get('ratings', [])) / len(video.get('ratings', [])) if video.get('ratings') else 0
# 関連動画の取得
related_videos_cursor = videos.aggregate([{'$sample': {'size': 5}}])
related_videos = list(related_videos_cursor)
return render_template('video_detail.html', video=video, related_videos=related_videos)
else:
return "Video not found", 404
ステップ3: 動作確認
TAKA: 老師、コードを書いてアプリを再起動したよ!さっそくブラウザで試してみるね。
AI老師: 動画詳細ページにアクセスし、関連動画が表示されているか確認するのじゃ。ランダムに選ばれる動画が毎回変わることもチェックしてみるのじゃぞ。
TAKA: おお、ちゃんと関連動画が表示されてる!他の動画のリンクをクリックすると、その動画の詳細ページにも飛べるね!
解決した問題と次の課題
今回の課題: 動画詳細ページに関連動画を表示する機能を追加すること。
解決したこと: 動画データベースからランダムに動画を取得し、動画詳細ページに表示できるようになった。
次の課題: 関連動画をランダムではなく、もっと関連性のある動画が表示されるように改善すること。
TAKA: 老師、今回も大成功だよ!簡単な方法から始めて、実際に動く機能を作るのって楽しいね。
AI老師: その意気じゃ。まずは動くものを作るのが大事じゃ。そして、徐々に機能を改善していけばよい。次は、ジャンルやキーワードに基づいて関連動画を表示する方法に挑戦するかのう?
TAKA: いいね!またよろしく、老師!