Skip to content

Conversation

@yasulab
Copy link
Member

@yasulab yasulab commented Jan 15, 2026

概要

Jekyllビルド時に自動的にデータ更新タスクを実行するプラグインを追加し、GitHub Actionsワークフローを大幅に簡潔化・最適化しました。

変更内容

1. Jekyllビルドフック追加(_plugins/build_hooks.rb

jekyll build または jekyll server 実行時に自動的に以下のRakeタスクを実行:

  • upsert_dojos_geojson: GeoJSON生成
  • compact_geojson: GeoJSON圧縮(22.9%削減)
  • cache_dojo_logos: Dojoロゴキャッシュ

メリット

  • ✅ ローカル開発でも本番環境でも一貫した動作
  • ✅ 手動でのRakeタスク実行が不要に
  • dojo2dojo.csv更新時もjekyll buildだけで自動反映

2. GitHub Actions大幅最適化

scheduler_daily.yml

Before(複数ステップで二重実行):

- name: ☯️ Cache dojo logos in Japan
  run: bundle exec rake cache_dojo_logos

- name: 📍 Generate DojoMap from Earth/Japan data
  run: |
    bundle exec rake upsert_dojos_geojson
    bundle exec rake compact_geojson

- name: 🆙 Commit latest data  # ← テスト前にコミット

- name: 🔧 Build & Test
  run: |
    bundle exec rake compact_geojson  # 二重実行
    JEKYLL_ENV=production bundle exec jekyll build  # 二重ビルド
    bundle exec jekyll doctor
    bundle exec rake test

After(1ビルド、テスト後コミット):

- name: 🔧 Build data to render DojoMap
  run: JEKYLL_ENV=production bundle exec jekyll build  # プラグインが自動実行

- name: ✅ Test  # ← テストが通ってから
  run: |
    bundle exec jekyll doctor  # _siteは既にビルド済み
    bundle exec rake test

- name: 🆙 Commit latest data  # ← コミット(安全)

効果:

  • 二重ビルド・二重実行を完全排除
  • テストをコミット前に実行(安全性向上)
  • ステップ数削減で理解しやすく

deploy_to_pages.yml

  • compact_geojsonの二重実行を削除
  • Jekyllプラグインが自動実行するため不要に

テスト結果

# dojos.min.geojsonを削除して再ビルドでテスト
rm -f dojos.min.geojson
bundle exec jekyll build

# 実行ログ:
# 🔄 Running pre-build tasks...
#   → Updating dojos.geojson...
#   → Creating dojos.min.geojson...
#   ✅ Created dojos.min.geojson
#      Original: 738.9 KB
#      Minified: 569.7 KB
#      Reduction: 22.9%
#   → Caching dojo logos...
#   ✅ Pre-build tasks completed

実装の考慮点

  • YAGNI原則: ファイル名はbuild_hooks.rbというシンプルな名前に
  • 一貫性: Rakeタスク経由で実行(bundle exec rake xxx
  • DRY原則: タスク定義の一元化、二重実行の完全排除
  • 安全性: テストをコミット前に実行(不正データのコミットを防止)
  • シンプルさ: _site/は.gitignoreされているため、jekyll buildをデータ準備に使用可能

全体効果

  • ✅ ワークフローが理解しやすく、レビューしやすい
  • ✅ コード行数削減(scheduler_daily.yml: 9行削減)
  • ✅ ビルド時間短縮(二重実行・二重ビルドの完全排除)
  • ✅ 安全性向上(テスト後コミット)
  • ✅ 保守性向上(Jekyllプラグインが一元管理)

1. Jekyllビルドフック追加(_plugins/build_hooks.rb)
   - jekyll buildまたはjekyll server実行時に自動的に以下を実行:
     - upsert_dojos_geojson: GeoJSON生成
     - compact_geojson: GeoJSON圧縮(22.9%削減)
     - cache_dojo_logos: ロゴキャッシュ
   - ローカル開発でも本番環境でも一貫した動作

2. GitHub Actions最適化(scheduler_daily.yml)
   - 二重実行していたcompact_geojsonを削除
   - Jekyllプラグインが自動実行するため不要に
   - ビルド時間の短縮とコードの簡潔化
- compact_geojsonの二重実行を削除
- Jekyllプラグインが自動実行するため不要に
- データ準備ステップを`jekyll build`に置き換え
- プラグインが自動的にcache_dojo_logos、upsert_dojos_geojson、compact_geojsonを実行
- _siteは.gitignoreされているため問題なし
- ステップ数削減でワークフローがより理解しやすく
- ビルドを1回だけに削減(JEKYLL_ENV=production指定を前倒し)
- テストをコミット前に実行(安全性向上)
- ステップ名を改善:
  - 🔧 Build data to render DojoMap(より明確な命名)
  - ✅ Test(Build & Testから分離)
- 二重ビルドを完全に排除
@yasulab yasulab merged commit c65860d into main Jan 15, 2026
1 check passed
@yasulab yasulab deleted the automate-jekyll-build branch January 15, 2026 12:17
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