#04:AWS-S3を使った静的Webサイトホスティング~webページ執筆環境構築編~

はじめに

このwebサイト記事は、AWS S3に格納したファイルをCloudFront経由でHTTPS配信することで成り立っています。

本記事にて、Webサイトページの作成を行うHugoの環境構築について説明します。

※本筋(AWSインフラ構築)ではないので、あっさり目に記載しています。

この記事でわかること

  • Hugoプロジェクトの新規作成手順
  • テーマ(テンプレート)の探し方と導入方法
  • hugo.tomlの基本設定(baseURL、言語設定、テーマの指定)
  • ローカル環境(localhost)でのプレビュー方法
  • 新規記事の作成方法とフロントマターの基本
  • ビルドしたファイルをAWS S3へ同期しデプロイする一連の流れ

全体の流れ

  1. AWS-S3を使った静的Webサイトホスティング~設計編~ 

  2. AWS-S3を使った静的Webサイトホスティング~構築準備編~

  3. AWS-S3を使った静的Webサイトホスティング~インフラ構築編~

  4. AWS-S3を使った静的Webサイトホスティング~webページ執筆環境構築編~ ★イマココ!

Hugoとは

HugoはSSG (Static Site Generator; 静的サイト生成)の1つで、Markdown形式で記述することで、htmlを生成することができるツールです。

ⓘNote

「静的サイト」は、html, css, javascriptで構成されるwebページです。基本的に、だれが見ても同じwebページが表示されます。

対義語の「動的サイト」は、上記に加えて、phpなどを使ったDBアクセスなどを含むwebページです。各ユーザーに応じたwebページを表示させることができます。

通常webページを作成するには、htmlを書く必要があり、htmlをまずは勉強しないといけません。いわゆる「お作法」的な要素で<head>、<main>、<body>、<section>、etc…毎回書くのはかなり面倒です。

しかし、Hugoを使うと、そのあたりの「お作法」はすべて自動でやってくれます。

人間が書くのは、<body>の中身だけ。リストを作るときも<li> </li>で囲む必要もなく、タグの終端し忘れも防げます。

Markdownで議事録などを取ったことのある人であれば、かなりなじみやすいものだと思います。

今回は、AWSインフラを構築することがメインであり、htmlを勉強することに時間コストをかけたくはなかったので、こちらを採用しています。 ついでに記事を書く速度が爆速で上がりますので、メリットが大きいです。

環境構築

Hugoをインストールして、webサイトテンプレートを使ってまずは構築しましょう。

step1. Hugoのインストール


Powershellを開き、下記コマンドを実行して、Hugoのインストール状況を確認してください。

hugo version

version情報が表示されない場合は未インストールなので、下記コマンドを実行して、Hugoをインストールしてください。

winget install Hugo.Hugo.Extended

インストールが完了したら、PowerShellを再起動してから、version確認を行い、インストールされていることを確認してください。

step2. webサイトページの新規作成


PowerShellにて、htmlファイルなどを含む「プロジェクト」を作成してもよいディレクトリにcdコマンドで移動します。

cd <プロジェクト作成ディレクトリ>

下記コマンドを実行して、Hugoのプロジェクトを作成します。プロジェクト名(<project name>)は、お好きな名前をどうぞ。

hugo new site <project name>

今いるディレクトリに、<project name>と同じ名前のディレクトリが生成されることを確認してください。

確認出来たら、そのディレクトリの中にcdで入っておきます。

cd <project name>

step3. テンプレートの導入


Hugoのテンプレートは下記サイトで確認できます。お気に入りのテンプレートを探してみてもよいかもしれません。

Hugo Themes - Hugo -

お気に入りのテンプレートが見つかったら、Downloadボタンを押して、githubのページに飛んで、URLを取得します。

そのうえで、下記git submoduleコマンドにより、テンプレートを導入します。

git init
git submodule add <githubのURL> themes/<テンプレート名>

例えば、公式サイトで紹介されている方法では、“Ananke"というテーマを用いる場合下記コマンドを実行します。

git init
git submodule add https://github.com/gohugo-ananke/ananke themes/ananke

gitのからのリポジトリを作成してから、themes/anankeディレクトリ配下に、URL先の構成をダウンロードしてくるイメージです。

テーマをHugoに認識させるために、hugo.tomlに下記を追記します。

ついでに、言語設定を日本語にしておくのと、base urlを自分のURLに書き換えておきましょう。

baseURL = "https://<独自ドメイン>/"
locale = 'ja-jp' #編集する
theme = 'ananke' #追記する

ⓘNote

hugo.tomlはconfigファイルです。

公式サイトは、echoコマンドで追加していますが、PowerShellで実行すると文字コードの問題でうまくいかないので、tomlファイルに直接書いてしまうことをお勧めします。

最後に、下記コマンドでlocalhostでサーバーを起動し、ページを表示させます。

hugo server

Powershellの最後のほうに、下記のようなアクセス方法が書かれていると思いますので、Webブラウザのアドレスバーに入力してアクセスします。

Web Server is available at http://localhost:50174/ (bind address 127.0.0.1)

下記のように表示されれば、構築完了です。

alt text

動作確認が終わったら、Ctrl + Cでサーバーを停止させてください。

step4. 記事を執筆してlocalhostでプレビュー


次に記事を執筆していきます。下記コマンドを実行して、markdownファイルを作成します。

hugo new content content/posts/<記事ファイル名>.md

content/postsディレクトリ配下に、mdファイルが生成されると思います。

mdファイルを開いてみるとあらかじめ必要な設定(フロントマター)が書かれています。

+++
date = '2026-09-27T20:45:31+09:00'  #<date>T<time>+<timezone>の構文。公開時間になる。
draft = true                        #falseにすると、公開される
title = 'My First Post'
+++

#ここに記事を執筆します

下の余白に記事を書けばよいです。

適当な記事が書けたら、Powershellで下記コマンドを実行してみると、ポストが表示されるはずです。

hugo server -D

※ -Dは、draft = trueでも表示するためのオプションです。

下記のように、見えればOKです。

alt text

これでlocalhostでのwebページ確認ができるようになりました。

AWS S3へのデプロイ

最後に、本番環境(AWS S3)へデプロイしましょう。

step1. draftをオフにする


まず、mdファイル冒頭のdraftをfalseにして、本番環境で表示できるようにします。

+++
date = '2026-09-27T20:45:31+09:00'   #未来の日付にすると表示されないので注意(予約公開)
draft = false                        #ここをfalseにすると、公開される
title = 'My First Post'
+++

step2. CloudFrontディストリビューションIDの確認


次に、CloudFrontディストリビューションIDを確認します。

AWSマネジメントコンソールより、CloudFrontの管理画面に入ってください。

画面左ペインから「ディストリビューション」を選択してもらうと、IDが確認できます。

alt text

step3. s3へファイルをsync


この情報がわかったら、Powershellで下記コマンドを実行していきます。

S3のバケット名 ( $BUCKET_NAME )と、CroudFrontディストリビューションID ( $DISTRIBUTION_ID )は、各自の値を入力してください。

# S3バケット名(Step 8)とCloudFrontディストリビューションID(Step 9)を設定
$BUCKET_NAME = <S3バケット名>
$DISTRIBUTION_ID = "XXXXXXXXXXXXX"

# ビルド
hugo --minify

# S3へ同期(deleteコマンドで、ローカルに存在しないファイルをすべて削除し、完全同期させます)
aws s3 sync .\public s3://$BUCKET_NAME --delete

# CloudFrontのキャッシュを無効化
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths "/*"

心配性な方(と本番環境が大事な場合)は、aws s3 syncする際に、末尾に–dryrunオプションをつけて、確認しましょう。

step4. webサイトの確認


あとは、hugo.tomlでbaseURLとして指定した、独自ドメインのURL(https://<ドメイン>/)のトップページにアクセスしてwebページが表示されればOKです。

Webサイトの完成

おめでとうございます!

これでWebサイトページの執筆環境の構築も終わり、Webサイト作成の礎は完成しました。あとは自由に記事を書いていくだけです。

既存のテーマを使ってもいいのですが、レイアウト(css)はAIにぶん投げていろいろ調整してもらうと、理想を実現できておススメです。(このサイトの見た目も、Claudeくんに全部作ってもらっています)

また、私はMarkdownが書きやすいように、VS Codeを使っています。「Formatter CMS」という拡張機能を使うと、Hugoでのwebページ執筆環境を構築することができるので便利です。調べてみてください。(気が向いたら記事にします)

それでは楽しいWebサイトライフを!