Skip to content

Conversation

@yasulab
Copy link
Member

@yasulab yasulab commented Nov 14, 2025

概要

CoderDojo Japan の PR TIMES 公式 RSS フィードをニュース取得システムに追加しました。これにより、PR TIMES で配信されるプレスリリースが自動的にトップページのニュースセクション(「最近の CoderDojo」)に表示されるようになります。

実装内容

1. RSS フィード統合

  • PR TIMES フィード追加: https://prtimes.jp/companyrdf.php?company_id=38935
  • 変数名: PR_TIMES_FEED として定義
  • フィード一覧: RSS_FEED_LIST に既存の CoderDojo News フィードと共に追加

2. RSS 形式の互換性対応

PR TIMES と CoderDojo News で異なる RSS 形式を使用しているため、両方に対応:

フィード RSS 形式 日付フィールド タグ形式
PR TIMES RSS 1.0 (RDF) dc:date <rdf:RDF>
CoderDojo News RSS 2.0 pubDate <rss version="2.0">

実装:

published_at = if item.respond_to?(:pubDate) && item.pubDate
                 item.pubDate
               elsif item.respond_to?(:dc_date) && item.dc_date
                 item.dc_date
               else
                 raise "Unexpected RSS format: neither pubDate nor dc:date found"
               end

3. 日付形式の統一

  • すべての published_atISO 8601 形式に統一(例: 2025-10-24T20:00:07+09:00
  • .iso8601 メソッドで変換
  • 一貫性のあるデータ形式で保存

4. Fail-Fast 原則の適用

  • 予期しない RSS 形式の場合は例外を発生させて早期エラー検出
  • 問題を隠蔽せず、即座に開発者に通知
  • YAGNI 原則に従い、不要な防御的コードを削除

実施したステップ

  1. 初期実装: RSS フィードを追加し、両形式に対応
  2. リファクタリング:
    • 変数名を PR_TIMES_FEED に統一
    • 日付形式を ISO 8601 に統一
    • Fail-Fast 原則を適用
  3. 動作確認: ローカルで bundle exec rake news:fetch を実行
    • PR TIMES から11件の新しい記事を取得成功
  4. テスト準備: PR TIMES エントリを一時削除(GitHub Actions での自動追加を確認するため)

今後の予定

このPRで(マージ時)

  • GitHub Actions の Daily Workflow(毎朝 9:00 JST)で自動実行を確認
  • 削除した PR TIMES の11件が自動的に再追加されることを確認
  • トップページの「最近の CoderDojo」セクションに表示されることを確認

将来の改善(別PR)

  • WordPress REST API を使用した過去記事の一括取得
  • ページネーション対応(?paged=2 パラメータ)
  • 取得エラー時のリトライ処理
  • フィード別のカスタム処理(例: PR TIMES 特有のメタデータ活用)

動作の仕組み

  1. GitHub Actions の Daily Workflow が毎朝 9:00 JST に news:fetch タスクを実行
  2. 両方のフィード(CoderDojo News + PR TIMES)から RSS データを取得・解析
  3. URL で重複を排除し、公開日時の降順でソート
  4. db/news.yml に保存後、news:upsert タスクでデータベースに同期
  5. トップページの「最近の CoderDojo」セクションに最新 7 件を表示

テスト環境での動作

テスト環境および staging 環境では、従来通り spec/fixtures/sample_news.rss を使用するため、既存のテストには影響ありません。

参考情報

claude and others added 6 commits November 14, 2025 03:12
This commit adds the PR TIMES RSS feed (company_id: 38935) to the RSS_FEED_LIST
in the news:fetch rake task. This enables automatic fetching and display of
CoderDojo Japan's press releases from PR TIMES alongside the existing news feed.

The news items from both feeds will be:
- Fetched daily via GitHub Actions workflow
- Merged and saved to db/news.yml
- Displayed on the homepage news section (最近の CoderDojo)

PR TIMES RSS feed URL: https://prtimes.jp/companyrdf.php?company_id=38935
PR TIMES の RSS フィードが RSS 1.0 (RDF) 形式を使用しているため、
既存の RSS 2.0 形式と両方に対応できるよう修正しました。

- RSS 2.0: pubDate フィールドを使用
- RSS 1.0 (RDF): dc:date フィールドを使用
- respond_to? メソッドで動的に判定

これによりPR TIMESフィードから11件の新しいニュースを正常に取得できました。
- すべての published_at を ISO 8601 形式(例: 2025-10-24T20:00:07+09:00)に統一
- 予期しない RSS 形式の場合は例外を発生させて早期にエラー検出
- YAGNI原則に従い不要な防御的コードを削除
- 変数名を PR_TIMES_FEED に統一
- RSS形式の違いを明確にするコメント追加
  - PR TIMES: RSS 1.0 (RDF) 形式
  - CoderDojo News: RSS 2.0 形式
すべてのニュースエントリの published_at フィールドを
ISO 8601 形式(例: 2025-11-02T13:10:18+00:00)に統一
GitHub Actions で PR TIMES フィードが正しく自動取得・追加される
ことを確認するため、既存の PR TIMES エントリ(11件)を削除。

Actions が実行されると、これらのエントリが自動的に再追加される
はずです。
@yasulab yasulab merged commit d3d5bed into main Nov 14, 2025
10 checks passed
@yasulab yasulab deleted the claude/register-prtimes-rss-feed-for-news-section branch November 14, 2025 04:31
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.

3 participants