はじめに #
ブログを始めるにあたって、まず悩んだのがプラットフォームの選定だ。
WordPress をはじめとする CMS は機能が豊富な反面、DB・PHP・プラグイン管理など
運用コストが高い。今回は「書くことに集中できる、軽量で安全な構成」を目指した。
その結果として選んだのが Hugo だ。
なぜ Hugo を選んだのか #
1. セキュリティ #
Hugo は静的サイトジェネレーター(SSG)であり、ビルド時にすべてのページを HTML ファイルとして生成する。つまり:
- SQL インジェクション不可
- php等の言語の脆弱性と無縁
さらに Hugo は 単一の Go バイナリとして配布されており、 npm のようなサプライチェーンリスクもない。 依存パッケージがゼロというのは、セキュリティ観点では大きな強みだ。
2. リソース効率 #
Web サーバー側に求められるのは「静的ファイルを返すだけ」の能力のみ。 Nginx の最小構成で十分動作し、メモリ・CPU ともにほぼ消費しない。
WordPress のような動的 CMS と比べると、1 リクエストあたりの処理が DB クエリ → PHP 実行 → レンダリング から、ただのファイル読み込みになる。
3. SEO への対応 #
Hugo はビルド時に以下を自動生成する:
| 機能 | 詳細 |
|---|---|
| サイトマップ | /blog/sitemap.xml |
| RSS フィード | /blog/index.xml |
| メタタグ | title / description / OGP |
| パーマリンク | 柔軟に設定可能 |
静的 HTML は検索エンジンのクローラーが即座に解析できるため、 Core Web Vitals のスコアも出しやすい。
4. 記事記載 #
記事は Markdown で書く。フォーマットに悩まず内容に集中できる。
ローカルで hugo server を起動しておけば、ファイルを保存するたびに
ブラウザがリアルタイムで更新される。
セットアップの概要 #
環境は以下の 2 台構成だ:
[ローカルサーバ] 執筆・プレビュー(hugo server)
↓ rsync
[Web サーバ] 静的ファイル配信のみ(Nginx)インストール・初期構築は Ansible で自動化 #
手順を再現可能にするため、ローカルサーバのセットアップは
Ansible Playbook として管理している。
主な処理の流れは下記のとおりだ:
- Hugo 専用ユーザーを作成(権限分離)
- Hugo Extended バイナリを GitHub Releases から取得・配置
hugo new siteでプロジェクトを初期化- PaperMod テーマを
git submoduleとして追加 hugo serverを systemd サービスとして登録・自動起動
Hugo のバージョン #
執筆時点での最新 stable は v0.160.1(2026-04-08 リリース)。
URL 構成 #
既存コンテンツとの共存を考慮し、ブログは /blog/ 配下に配置した:
https://blackratel.com/ # 既存コンテンツ(Hugo 管理外)
https://blackratel.com/blog/ # Hugo 管理ブログhugo.toml の baseURL を https://blackratel.com/blog/ に設定することで、
サイトマップや内部リンクが正しく生成される。
まとめ #
| 観点 | Hugo の評価 |
|---|---|
| セキュリティ | ◎ 依存ゼロ・DB なし・攻撃面最小 |
| 運用コスト | ◎ Web サーバは静的配信のみ |
| SEO | ○ サイトマップ・メタタグ自動生成 |
| 執筆体験 | ○ Markdown・リアルタイムプレビュー |
| 学習コスト | △ Go テンプレート構文はやや独特 |
個人ブログや技術情報の発信用途であれば、Hugo は現時点で最もバランスの 取れた選択肢の一つだと感じている。