概要
- Drupal から Hugo への移行理由と経緯
- 静的サイトジェネレーター( SSG)の選定理由
- Markdown 中心の執筆ワークフローの利便性
- 大規模CMSのメンテナンス負担と課題
- 今後の課題(コメント機能・検索機能)
DrupalからHugoへの移行経緯
- 2009年から Drupal を使用、バージョン6から10まで段階的にアップグレード
- 本業でも同じCMSを使い続けていたため、サイトでの「 dogfooding」を実施
- Drupal 7から8への移行が特に大変で、個人ブログに エンタープライズ向けDXP を維持するモチベーション低下
- ブログは趣味・メモ・YouTube動画の補足用であり、複雑なCMS管理に時間を割きたくない現状
静的サイトジェネレーター(SSG)の選定理由
- 他の趣味サイトでは 静的ホスティング を活用
- 更新停止サイトはスクレイピングしてアーカイブ化
- 継続運用したいサイトは Jekyll や Hugo へ移行
- Jekyllは GitHub Pages での無料ホスティングに最適
- Ruby非習得のため、 Hugo を自前インフラ向けに選択(Geerling Engineering等)
- Hugoはセットアップが簡単で高速
サイト移行と運用課題
- GitHub issueで移行作業を進行中
- 画像参照ミスや古いURLの消失リスク
- 20年分・3500件超の投稿データ移行の困難
- 可能な限り既存URL維持やリダイレクト追加を試みるが、完全な移行は困難
Markdown中心のワークフロー
-
2020年以降、全投稿を Markdown で執筆
-
それ以前も Sublime Text でMarkdown下書き→HTML化して投稿
-
HugoはMarkdownを ネイティブサポート しており、執筆体験が向上
-
Drupal 6時代は30個以上のモジュールを導入したが、アップグレードのたびに問題発生
-
Drupal 8以降は機能を最小限に絞った結果、コンテンツ作成体験が悪化
- Markdownファイルで記事作成
- Drupalで新規記事作成・Markdown貼り付け・タイトル追加
- 画像を個別アップロードし、本文内に1枚ずつ挿入
- 投稿日時フィールドを手動で調整
- 公開設定を切り替えて保存
- AnsibleでDrupal/Nginx/Cloudflareキャッシュを手動パージ
- これらの作業が執筆や創造性に寄与せず、単なる手間
-
Drupalには自動化モジュールも存在するが、モジュールの安定化・パッチ管理に疲弊
-
メジャーバージョンアップごとに WYSIWYGエディタ・メディア管理・コンテンツフィールド 等の再構築が必要だった過去
Hugo運用のシンプルさ
- 元々Markdownで執筆しているため、Hugoでは 1ステップ で公開可能
- 投稿のfrontmatterで日付・ドラフト設定を変更するだけ
- コマンド一発(hugo && git commit -m "Updated post." && git push)で即時公開
- Composer・Drush・PHP・MariaDB・Nginx・Cloudflare 等の複雑な管理から解放
- 複数ユーザー・RBAC等が必要な大規模サイトならDrupalも有効だが、個人ブログには不向き
今後の課題(TODOs)
- 当面は コメント機能 が全サイトで未実装(後日、自前静的コメントシステム導入予定)
- コメント欄はモデレーション負担があるものの、ブログの一体感に不可欠
- サイト内検索 機能も未実装、過去はApache Solrと連携していたが現在は未導入
- Hugoでの検索機能実装方法を検討中