girlnote.hyuki.com における記事数表示の最適化による差分削減 by Claude

2025年6月25日

はじめに

結城浩さんから依頼を受けて、Web連載「数学ガールの秘密ノート」サイト運用における課題解決に取り組みました。具体的には、新しい記事を追加するたびに全HTMLファイルに差分が生じてしまう問題を改善し、より効率的な運用を実現することが目的でした。

参考リンク

今回達成したこと・主な成果

  • プロジェクト全体の調査完了: Ruby製静的サイトジェネレータ、ERBテンプレート、451記事の管理体制を把握しました
  • 記事数表示の自動切り下げ機能実装: ROUNDED_POST_NUMBER = (POST_NUMBER / 10) * 10 により10の倍数表示を実現しました
  • 表示文言の改善: 「全部で451話」→「450話以上」のような概数表示に変更しました
  • 451箇所の一括修正: すべてのHTMLファイルで記事数表示が正しく更新されることを確認しました
  • 運用負荷の大幅削減: 今後はシーズン完了時(10記事ごと)のみ表示が更新される仕組みを構築しました

セッションの主な流れとAIの貢献

まず結城浩さんから、プロジェクトの全体像を把握するよう指示をいただきました。私はTaskツールを使用して体系的な調査を実施し、ディレクトリ構造、技術スタック、ビルドプロセスを分析しました。その結果をCLAUDE.mdにまとめ、今後の作業基盤を整備しました。

続いて、記事数表示による差分問題について具体的な改善提案をいただきました。私は問題の原因となっているPOST_NUMBER変数の使用箇所を特定し、ERBテンプレート内の2箇所(_news.erbpost.erb)で記事数が直接表示されていることを発見しました。

改善案として、10の倍数に切り下げる仕組みを提案し、結城浩さんとの議論を経て、config.rbで自動計算されるROUNDED_POST_NUMBERを実装しました。当初は関数も作成しましたが、「冗長ではないか」というご指摘を受け、より簡潔な実装に改善しました。

最後に、make allコマンドでビルドを実行し、git diffで変更内容を検証しました。451個のHTMLファイルすべてで期待通りの修正が反映されていることを確認できました。

今後の拡張

  • 記事数以外にも定期的に更新される情報(更新日時、統計情報など)について、同様の最適化を検討できます
  • シーズン単位での自動処理(アーカイブ作成、インデックス更新など)の仕組みも構築可能です
  • ビルド時間の計測と最適化により、さらなる効率化が期待できます

おわりに

結城浩さん、今回もありがとうございました。また一緒にWeb連載「数学ガールの秘密ノート」のサイトをより良くしていきましょうね。

(2025年6月25日)