カテゴリ: Go言語 更新日: 2025/11/18

Go言語のテンプレート(html/template)でHTMLを生成する方法

Go言語のテンプレート(html/template)でHTMLを生成する方法
Go言語のテンプレート(html/template)でHTMLを生成する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、GoでWebアプリを作るときにHTMLを動的に生成したいんですが、どうすればいいですか?」

先生

「その場合、Goのhtml/templateパッケージを使うと便利です。HTMLテンプレートを作り、Goのデータを埋め込むことができます。」

生徒

「テンプレートって、どんなイメージですか?」

先生

「テンプレートは雛形のようなもので、変わる部分にデータを埋め込むことで、同じHTMLの構造を使いまわすことができます。」

1. html/templateパッケージとは?

1. html/templateパッケージとは?
1. html/templateパッケージとは?

Goのhtml/templateは、HTMLファイルをテンプレートとして読み込み、動的に文字列や変数を埋め込むことができる標準ライブラリです。これを使うと、ログインユーザー名やリストの情報をHTMLに反映させることができます。

2. テンプレートの基本構文

2. テンプレートの基本構文
2. テンプレートの基本構文

テンプレートでは、変数を{{.変数名}}のように埋め込みます。{{.}}はデータ構造の中身を参照するための記号です。

例えば、{{.Name}}と書くと、Go側で渡した構造体のNameフィールドの値がHTMLに表示されます。

3. 簡単なテンプレートの例

3. 簡単なテンプレートの例
3. 簡単なテンプレートの例

package main

import (
    "html/template"
    "net/http"
)

type User struct {
    Name string
}

func handler(w http.ResponseWriter, r *http.Request) {
    tmpl := template.Must(template.ParseFiles("index.html"))
    user := User{Name: "Gopher"}
    tmpl.Execute(w, user)
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

この例では、index.htmlというテンプレートファイルにUser構造体のデータを渡しています。

4. テンプレートファイルの内容例

4. テンプレートファイルの内容例
4. テンプレートファイルの内容例

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Goテンプレート例</title>
</head>
<body>
    <h1>こんにちは、{{.Name}}さん!</h1>
</body>
</html>

ブラウザで表示すると「こんにちは、Gopherさん!」と動的に表示されます。

5. 条件分岐とループの使用

5. 条件分岐とループの使用
5. 条件分岐とループの使用

テンプレート内では{{if 条件}}{{range 配列}}を使って条件分岐や繰り返し処理も可能です。


<ul>
{{range .Items}}
    <li>{{.}}</li>
{{end}}
</ul>

Go側でItemsに配列を渡すと、リストとしてHTMLに反映されます。

6. テンプレートでの安全性

6. テンプレートでの安全性
6. テンプレートでの安全性

html/templateは、XSS(クロスサイトスクリプティング)対策として自動で特殊文字をエスケープします。例えば<>をHTMLタグとして解釈せず、安全に表示できます。

7. 複数テンプレートの管理

7. 複数テンプレートの管理
7. 複数テンプレートの管理

複数のHTMLファイルを組み合わせてテンプレートを管理することも可能です。共通のヘッダーやフッターをtemplate.ParseFilesで読み込み、共通部分と個別ページを組み合わせて表示できます。

8. 実用的なWebアプリでの活用例

8. 実用的なWebアプリでの活用例
8. 実用的なWebアプリでの活用例

ユーザーのプロフィールページや商品一覧ページなど、動的なWebページを生成する際にテンプレートは非常に便利です。データベースから取得した情報をテンプレートに渡すだけで、HTMLを簡単に生成できます。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎