0
0

Hugoを使って爆速で静的サイトを作ってみる

Posted at

Hugoとは

  • 静的サイトジェネレーターの1つ
  • Go言語で開発された高速なHTMLサイト作成ツール
  • 動的なデータベース等を使わず静的ファイルのみでサイトを構成する
  • ビルドが非常に高速、セキュリティ面でのリスクが少ない、といったメリットがある

この記事では、Hugoのインストールから簡単なサイトの作成までの流れを紹介します。

1. Homebrewをインストールする

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(インストールコマンドはHomebrew公式サイトより)

2. Hugoをインストールする

$ brew install hugo
$ hugo version     
hugo v0.133.1+extended darwin/arm64 BuildDate=2024-08-26T13:58:46Z VendorInfo=brew

バージョンが確認出来ればインストール完了です。

3. Hugoのサイトを作成する

$ cd ~
$ mkdir hugo_project  # 専用のディレクトリを作成
$ cd hugo_project     # 作成したディレクトリに移動
hugo_project $ hugo new site my_site
Congratulations! Your new Hugo site was created in /Users/[user_name]/hugo_project/my_site.
  • hugo new site <site_name>:現在いるディレクトリに<site_name>で指定した名前のサイトを作成するコマンド
hugo_project $ cd my_site
my_site $ tree .
.
├── archetypes
│   └── default.md
├── assets
├── content
├── data
├── hugo.toml
├── i18n
├── layouts
├── static
└── themes

9 directories, 2 files

作成されたサイトのディレクトリ構造はこんな感じ

4. テーマをインストールする

Hugo公式テーマサイトから使用したいテーマを選択します。
今回は Hermit-V2 を使ってみます。

スクリーンショット 2024-09-04 20.35.09.png

Downloadボタンを押すとGitHubのリポジトリページに遷移するので、先ほど作成したサイトのthemesディレクトリ下にcloneし、hugo.tomlに使用するテーマを追加します。

スクリーンショット 2024-09-04 20.36.14.png

my_site $ git clone https://github.com/1bl4z3r/hermit-V2 themes/hermit-v2
hugo.toml
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
+ theme = 'hermit-v2'

5. 開発サーバーを立ち上げる

テーマがインストールできたので、サーバーを起動してみます。

my_site $ hugo server
Watching for changes in /Users/[user_name]/hugo_project/my_site/{archetypes,assets,content,data,i18n,layouts,static,themes}
Watching for config changes in /Users/[user_name]/hugo_project/my_site/hugo.toml
Start building sites … 
hugo v0.133.1+extended darwin/arm64 BuildDate=2024-08-26T13:58:46Z VendorInfo=brew
                   | EN  
-------------------+-----
  Pages            |  8  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     |  0  
  Processed images |  0  
  Aliases          |  0  
  Cleaned          |  0  

Built in 13 ms
Environment: "development"
Serving pages from disk
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) 
Press Ctrl+C to stop
  • hugo server:ローカル開発サーバーを起動し、ローカル環境でサイトをプレビューできるようにするためのコマンド
    • デフォルトだと http://localhost:1313/ でサイトが立ち上がる
    • サイトのコンテンツやテンプレートの内容の変更を検知すると自動的にサイトを再ビルドし、ブラウザを更新する(この機能を「ホットリロード」と呼びます。)

http://localhost:1313/ で、先ほどインストールしたテーマが反映されたサイトが見られるようになりました。

6. サイトをカスタマイズする

この段階だとサイトにはタイトルが表示されているだけなので、少し手を加えてそれっぽくしてみます。

各テーマのリポジトリページには、基本の構成やカスタマイズの方法などが記載されているので、それを参考に自分のサイトに必要なコードをコピペします。

今回使用しているテーマはデモサイトのブランチを公開しているので、hugo.tomlから設定をピックアップして自分のサイトのhugo.tomlに追加し、細かい部分を書き換えてみます。

hugo.toml
baseURL = 'https://example.org/'
languageCode = 'en-us'
- title = 'My New Hugo Site'
+ title = "Chika's Hugo Site"
theme = 'hermit-v2'

+ [languages]
+   [languages.en]
+     [languages.en.params]
+       homeSubtitle = 'This is my portfolio site created with Hugo.'
+ 
+ [params.author]
+   name = 'kwtck'
+ 
+ [params]
+   homeSubtitlePrinter = true
+   [[params.socialLinks]]
+     name = 'github'
+     url = 'https://github.com/'
+     [[params.socialLinks]]
+     name = 'facebook'
+     url = 'https://www.facebook.com/?locale=ja_JP'
+   [[params.socialLinks]]
+     name = 'twitter'
+     url = 'https://x.com/?lang=ja'
+   [[params.socialLinks]]
+     name = 'instagram'
+     url = 'https://www.instagram.com/'
+ 
+ [menu]
+   [[menu.main]]
+     name = 'Profile'
+     url = 'profile/'
+     weight = 1
+   [[menu.main]]
+     name = 'Skills'
+     url = 'skills/'
+     weight = 2

これだけでも、かなりそれっぽくなりました。

7. 新規ページを作成する

6で「Profile」と「Skills」いうメニューを配置しましたが、該当のページを作成していないため、このリンクを押しても現時点では404となってしまいます。

正しくページが表示されるように、ひとまずProfileページを作成します。

my_site $ hugo new profile.md
  • hugo new <file_name>:contentディレクトリ下に<file_name>で指定した名前のページを作成するコマンド

作成されたファイルを編集して、プロフィール項目を追加します。

content/profile.md
+++
title = 'Profile'
date = 2024-09-08T13:52:13+09:00
draft = true
+++
+ Name: Chika  
+ Address: Tokyo  
+ Occupation: Web Engineer  
+ Hobby: Curry Shop Tour

デフォルトだとドラフト状態でファイルが作成されているので、-Dオプションを付けてドラフト状態のコンテンツも含めてサーバーを起動します。

my_site $ hugo server -D

再度、http://localhost:1313/profile/にアクセスしてみます。

ページが作成され、プロフィール項目が反映されていることが確認できました。
「Skills」ページも同じ要領で作成することができます。

終わりに

ものの5分程度で簡単なサイトを作成することができました。
ページを増やしたり、cssやjsで色々いじってみたりするともっとリッチになりそうです。

ちなみに、Hugoは全てのコンテンツをHTMLファイルとして変換してpublicディレクトリに出力するため、サイトを公開する際にはpublicディレクトリだけウェブサーバーにアップロードすればOKです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0