Skip to content

Conversation

@yasulab
Copy link
Member

@yasulab yasulab commented Dec 18, 2025

概要

DojoCast(ポッドキャスト)のエピソードを「最近の CoderDojo」セクションに表示されるように、news:fetch タスクに追加しました。

https://coderdojo.jp/#news

image

変更内容

1. RSS フィードの取得機能追加

  • DOJO_CAST_FEED として https://coderdojo.jp/podcasts.rss を追加
  • fetch_podcast_posts() メソッドを実装
  • タイトルの先頭3桁数字からエピソード番号を抽出(例: 033 → 33)
  • 内部リンク生成: https://coderdojo.jp/podcasts/{番号}
  • 番号が取得できない場合はエラーを発生

2. ニュース表示での絵文字使い分け

ソースごとに異なる絵文字を表示:

  • 📰 news.coderdojo.jp(ニュース記事)
  • 📻 /podcasts/*(ポッドキャスト)
  • 📢 prtimes.jp(プレスリリース)

3. ローカル開発対応

  • news_link_url ヘルパーメソッドを追加
  • ポッドキャストURLを相対パス(/podcasts/33)で表示
  • ローカル環境でも内部ページが正しく表示可能

テスト

  • bundle exec rspec spec/helpers/application_helper_spec.rb - 全てパス
  • bundle exec rails news:fetch - 33件のポッドキャストエピソードを取得
  • bundle exec rails news:upsert - データベースへの反映確認

動作確認

# 取得ログ
📰 news.coderdojo.jp から 138 件を取得
📢 PR TIMES から 11 件を取得  
📻 DojoCast から 33 件を取得
 合計 182 件を news.yml に保存しました

- DOJO_CAST_FEED として https://coderdojo.jp/podcasts.rss を追加
- fetch_podcast_posts() メソッドを実装(RSS 2.0 形式対応)
- 本番環境で DojoCast の新着エピソードも「新着情報」として取得可能に
- news:fetch タスクに DOJO_CAST_FEED を追加(📻絵文字でログ出力)
- ポッドキャストエピソードは内部リンクを使用
  - タイトルの先頭3桁数字から番号を抽出(033 → 33、001 → 1)
  - 内部URL: https://coderdojo.jp/podcasts/{番号}
  - 番号が取得できない場合はエラーを発生
- ニュース表示時にソースごとに絵文字を使い分け
  - news.coderdojo.jp → 📰
  - coderdojo.jp/podcasts → 📻
  - prtimes.jp → 📢
- format_news_title ヘルパーメソッドを更新
- テストケースも対応済み
- news_link_url ヘルパーメソッドを追加
  - https://coderdojo.jp/podcasts/* を /podcasts/* に変換
  - ローカル開発環境でも内部ページが表示可能に
- ホームページのニュース表示部分でヘルパーを使用
- format_news_title の絵文字判定を簡素化(Spotify URL削除)
- テストケースも追加
@yasulab yasulab merged commit 98d428b into main Dec 18, 2025
5 checks passed
@yasulab yasulab deleted the add-podcast-rss-to-news branch December 18, 2025 05:35
@yasulab yasulab changed the title ✨ DojoCast ポッドキャストを「最近の CoderDojo」セクションに追加 📻 DojoCast ポッドキャストを「最近の CoderDojo」セクションに追加 Dec 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants