Pick up

Hugoブログテーマ「Salt」とは?

Hugoブログテーマ「Salt」とは?

 Saltの使い方
 2022-08-10

「Salt」はシンプルなブログを低コストで作成できる

を目標にしたHugo用テーマです。名前の通り、できるだけ素材そのものを引き出せるようなシンプルなデザイン・レイアウトにしました。

実際にSaltでできることについて紹介したいと思います


1. レスポンシブデザイン対応

PCとSP表示に対応しています。 デフォルトで横幅600pxをデフォルトにしていますが、任意のサイズに変更できます。


2. サイトカラーを自分の好きなように変更可能

ヘッダー・フッダー・コンテンツの背景色、記事カードの細かいスタイルも簡単に変更できます

Hugoでできること

Hugoでできること

 Hugo
 2021-09-12

最近はSSG(静的サイトジェネレータ)全盛期の時代で、サーバー代をかけずにブログが作れる時代になりました。 そこで実際にHugoを使ってこのブログを作ってみた所感とHugoでできることを紹介したいと思います

ちなみにHugoとGatsbyどっちの方がいいの?

サイト内でリッチなグラフやテーブルを使ったり、動きのあるサイトを作りたい場合は、Gatsbyのほうが良いと思います。

というのもGatsbyの方がReactベースで作られているので、jsとの相性が非常に良く、Reactのライブラリをそのまま使えます。

New Article

Content adaptersに対応しました&既存の記事の移行方法

Content adaptersに対応しました&既存の記事の移行方法

 2025-05-29

Hugo Theme Salt v3.0.0でもContent adaptersに対応しました。
使用方法と移行方法をまとめたので参考にして下さい

前提として

  • 目次が使えません
  • ページバンドル内の画像ファイル等が考慮されていません(記事本文を修正する必要あり)
  • 本文内にHugoの記法がある場合ビルドエラーになります({{ xxx }}の記述)
  • ディレクトリ構造について
    • 下記の構成で記事を保存している
      • content/article/[category]/[article]/index.md
      • content/article/[category]/[article]/thumbnail.jpg
    • 記事ディレクトリパスと記事URLパスが同一(slugを使用している場合は未検証)

Content adaptersを使用した記事表示方法

大まかな流れとしては下記の通り

Hugo v0.147.0 リリースノートまとめ

Hugo v0.147.0 リリースノートまとめ

 Hugoリリース
 2025-05-29

Warning

※この記事は生成AIを使用して作成された記事です。(create by GPT-4o)
記事内容については未検証ですので参考程度にご活用ください

2025年4月25日にリリースされた Hugo v0.147.0 の主な更新内容をまとめます。既存ユーザー向けに 新機能主な変更点バグ修正非推奨事項を分類し、プロジェクトへの影響や対応方法のヒントを解説します。

新機能

  • images.Text の縦位置指定オプション追加
    画像操作機能 images.Text にテキストの縦位置を指定できる新オプション aligny が導入されました。従来からの alignx オプションと組み合わせることで、画像上のテキストを縦横とも中央に配置するなど、柔軟なレイアウトが可能になります。

主な変更点

  • 設定(config)マージの改善
    デフォルト設定の適用順序が見直され、モジュールやテーマから読み込んだ設定をルートの設定により柔軟に統合できるようになりました。具体的には、config.toml 等で _merge = "deep" を指定すると、インポートしたモジュールやテーマの設定を深い階層までマージするようになります。これにより、複数サイトで共通設定を共有する際に、設定の上書きや階層構造が意図しない形で失われる問題を回避しやすくなります。詳細についてはドキュメントを参照してください。

  • テーマスケルトンのテンプレート名調整
    テーマ作成用スケルトン (create/skeletons) において、一部テンプレートファイル名が変更されました。既存のカスタムテーマをインポートしている場合は、ファイル名の差分に注意してください。

バグ修正

  • コードブロックレンダリング
    組み込みのコードブロックレンダリングを、カスタムの render-codeblock-*.html テンプレートよりも優先するよう修正されました。

  • Vimeo/YouTube ショートコード
    allowFullScreen オプションの不具合が修正され、YouTube/Vimeo ショートコードで全画面表示が正しく機能するようになりました。

  • 設定マージ (_merge) のバグ
    キーが存在しない場合の _merge 処理に関する不具合が修正されました。

  • タイポ・文言修正
    ドキュメントやコード内の軽微な誤記やコメント表記の修正が行われました。

非推奨事項

今回のリリースでは、非推奨(deprecation)とされた機能は特にありません。既存の機能が削除・変更される予定も発表されていないため、現状のコードをそのまま継続利用できます。

影響と対応のヒント

  • 画像テキスト配置の活用
    新しい aligny オプションにより、images.Text を使用した画像上のテキスト配置の自由度が高まりました。alignx と組み合わせて使うことで、テキストを画像の縦横中央に配置するレイアウトが簡単になります。必要に応じてショートコードやテンプレートの更新を検討してください。

  • 設定統合の活用
    複数テーマやモジュールにまたがる設定を共通化している場合、config.toml_merge = "deep" を追加すると良いでしょう。これにより、インポートした設定を階層構造のまままとめて取り込めます。ただし、マージ時に意図しない上書きが発生しないか、アップデート後に設定ファイルの挙動を確認してください。

  • カスタムテンプレートの確認
    独自に作成した render-codeblock-*.html テンプレートなどがある場合、内部レンダリングの優先度変更によって出力結果が変わる可能性があります。新バージョンでサイトをビルドした際に、コードブロックの表示が期待通りかチェックしておくと安心です。

  • ショートコードの挙動確認
    既存サイトで Vimeo/YouTube ショートコードの allowFullScreen オプションを使用している場合、今回の修正により全画面表示が正しく動作するようになります。特に何か対応する必要はありませんが、アップデート前後で動作に差がないか確認しておくと良いでしょう。


参考: Hugo v0.147.0 リリースノート(GitHub)

Hugo v0.146.0 リリースノートまとめ

Hugo v0.146.0 リリースノートまとめ

 Hugoリリース
 2025-05-29

Warning

※この記事は生成AIを使用して作成された記事です。(create by GPT-4o)
記事内容については未検証ですので参考程度にご活用ください

2025年4月10日にリリースされた Hugo v0.146.0 の主な更新内容をまとめます。既存ユーザー向けに 新機能主な変更点バグ修正非推奨事項を分類し、プロジェクトへの影響や対応方法のヒントを解説します。

新機能

  • テンプレートシステムの刷新
    Hugo v0.146.0 では、Go テンプレートの処理方法が全面的に再実装され、layouts フォルダの構造変更や、より強力なテンプレートルックアップシステムが導入されました。これにより、テンプレートの管理と再利用が容易になります。詳細は 新しいテンプレートシステムの概要 を参照してください。

  • 新しいテンプレート関数の追加

    • templates.Current: 現在実行中のテンプレートとそのコールスタックに関する情報を提供します。デバッグ時に有用です。
    • time.In: 指定された IANA タイムゾーンで日付/時刻を表現します。

主な変更点

  • layouts フォルダの構造変更

    • _default フォルダは削除され、そこにあったファイルは layouts/ のルートに移動されました。
    • layouts/partials フォルダは layouts/_partials にリネームされました。
    • layouts/shortcodes フォルダは layouts/_shortcodes にリネームされました。
    • layouts 内のフォルダでアンダースコアで始まらないものは、ページパスのルートを表します。これらは必要に応じて深くネストできます。また、_shortcodes_markup フォルダはツリー内の任意のレベルに配置できます。
  • パーシャルテンプレートのルックアップキャッシュの追加
    パーシャルテンプレートのルックアップにキャッシュが導入され、ビルドパフォーマンスが向上しました。

  • テーマ作成の改善
    hugo new コマンドによるテーマ作成機能が改善され、より効率的にテーマを作成できるようになりました。

バグ修正

  • Vimeo/YouTube ショートコードの全画面表示オプションの修正
    Vimeo および YouTube のショートコードにおいて、allowFullScreen オプションが正しく機能しない問題が修正されました。

非推奨事項

今回のリリースでは、非推奨(deprecation)とされた機能は特にありません。既存の機能が削除・変更される予定も発表されていないため、現状のコードをそのまま継続利用できます。

影響と対応のヒント

  • テンプレート構造の移行
    新しいテンプレートシステムにより、layouts フォルダの構造が変更されました。既存のプロジェクトでは、以下の対応が必要です:

    • layouts/_default フォルダの内容を layouts/ のルートに移動する。
    • layouts/partialslayouts/_partials にリネームする。
    • layouts/shortcodeslayouts/_shortcodes にリネームする。 これらの変更により、テンプレートのルックアップが正しく機能するようになります。
  • テンプレート関数の活用
    新たに追加された templates.Current 関数を利用することで、テンプレートのデバッグが容易になります。また、time.In 関数を使用することで、特定のタイムゾーンでの日付/時刻の表示が可能になります。

  • ビルドパフォーマンスの向上
    パーシャルテンプレートのルックアップキャッシュの導入により、ビルド時間が短縮される可能性があります。大規模なプロジェクトでは、ビルドパフォーマンスの改善が期待できます。


参考: Hugo v0.146.0 リリースノート(GitHub)

Hugo v0.145.0 リリースノートまとめ

Hugo v0.145.0 リリースノートまとめ

 Hugoリリース
 2025-05-29

Warning

※この記事は生成AIを使用して作成された記事です。(create by GPT-4o)
記事内容については未検証ですので参考程度にご活用ください

2025年2月26日にリリースされた Hugo v0.145.0 の主な更新内容をまとめます。既存ユーザー向けに 新機能主な変更点バグ修正非推奨事項を分類し、プロジェクトへの影響や対応方法のヒントを解説します。

新機能

  • transform.PortableText 関数の追加

    Sanity CMS との統合を容易にするため、transform.PortableText 関数が新たに導入されました。これにより、Sanity の Portable Text フォーマットを Hugo で直接処理できるようになります。

主な変更点

  • _build フロントマターキーの非推奨化
    フロントマターの _build キーが非推奨となり、新たに build キーが推奨されるようになりました。今後のバージョンアップに備え、既存の _build キーを build に置き換えることを検討してください。

  • Instagram ショートコードの HTTPS 化
    Instagram のショートコードで使用される JavaScript が HTTPS 経由で読み込まれるように変更され、セキュリティと互換性が向上しました。

  • デフォルトソートの改善
    デフォルトのソート順が、バックエンドのファイル名ではなくページパスに基づくように変更されました。これにより、より直感的な並び順が実現されます。

バグ修正

  • 関連コンテンツの問題修正
    コンテンツアダプターを使用した際に発生していた関連コンテンツの問題が修正されました。

  • httpcache 設定の nil ポインターエラー修正
    httpcache 設定において、nil ポインターが原因で発生していたエラーが修正されました。

  • --printPathWarnings オプションの修正
    templates.Defer を使用しているサイトで --printPathWarnings オプションが正しく機能しない問題が修正されました。

  • ドキュメントのリンク修正
    README の Editions セクションにおける相対リンクの誤りが修正されました。

非推奨事項

  • _build キーの非推奨化
    前述の通り、フロントマターの _build キーが非推奨となり、build キーの使用が推奨されます。既存のプロジェクトでは、早めの対応を検討してください。

影響と対応のヒント

  • Sanity CMS との統合
    Sanity CMS を使用している場合、新たに追加された transform.PortableText 関数を活用することで、Portable Text フォーマットのデータを Hugo で直接処理できるようになります。これにより、データの取り込みと表示がよりスムーズになります。

  • フロントマターの更新
    _build キーを使用している既存のコンテンツは、将来的な互換性のために build キーへの置き換えを検討してください。

  • ショートコードの確認
    Instagram のショートコードを使用している場合、HTTPS 化に伴う影響がないか確認してください。特に、外部リソースの読み込みに関する設定やポリシーに注意が必要です。

  • ソート順の確認
    デフォルトのソート順が変更されたことにより、ページの並び順に影響が出る可能性があります。必要に応じて、明示的なソート設定を追加してください。


参考: Hugo v0.145.0 リリースノート(GitHub)

Hugo標準のgistショートコードをテーマ内に移行しました

Hugo標準のgistショートコードをテーマ内に移行しました

 Saltの使い方
 2025-05-28

Hugo公式のgistショートコードはバージョン0.143.0で非推奨となり、将来のリリースで削除されるそうなので Hugo Theme Salt内ののショートコードとして使えるように移行しました

WARN  The "gist" shortcode was deprecated in v0.143.0 and will be removed in a future release. See https://gohugo.io/shortcodes/gist for instructions to create a replacement.

Hugo公式ページでは下記の通り

Gist shortcode

Embed a GitHub Gist in your content using the gist shortcode.


The gist shortcode was deprecated in version 0.143.0 and will be removed in a future release. To continue embedding > GitHub Gists in your content, you’ll need to create a custom shortcode:

Gist ショートコードはバージョン 0.143.0 で非推奨となり、今後のリリースで削除される予定です。コンテンツに GitHub Gist を埋め込むには、カスタムショートコードを作成する必要があります。

Hugoでついに外部URLのブログカードを作れるようになった【自作ショートコード】

Hugoでついに外部URLのブログカードを作れるようになった【自作ショートコード】

 Saltの使い方
 2022-05-06

Hugoでは外部サイトのデータを扱う場合、getJSONgetCSVを使った方法しかありませんでしたが、ついにv0.91でGetRemoteが実装されました。

Release v0.91.0 · gohugoio/hugo

Hugo 0.91.0 is mostly on the boring and technical side. See the list of changes below, but especially note the fix that allows passing falsy arguments to partials with the return keyword (5758c37 #...


Hugo Pipes

Hugo Pipes is Hugo's asset processing set of functions.


GetRemoteの基本

基本の使い方はこんな感じで、html以外にも外部の画像、css、jsといったデータも取得できます。

Hugoでデプロイする時たまにビルドエラーになる原因

Hugoでデプロイする時たまにビルドエラーになる原因

 Hugo
 2022-01-29

GitHub Actionsを使ったHugoのデプロイ時に、たまにエラーになっていたんですが原因が分かりました。

package.json

  "scripts": {
    "create-ranking": "node scripts/create-ranking.js",
    "build": "hugo --gc --minify",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

npm run buildしてみるとこんな感じのエラーが出て、たまにデプロイがうまくいきませんでした

Start building sites … 
hugo v0.89.4-AB01BA6E darwin/amd64 BuildDate=2021-11-17T08:24:09Z VendorInfo=gohugoio
ERROR 2022/01/29 20:21:30 render of "page" failed: execute of template failed: template: partials/sidebar.html:101:72: executing "sidebar" at <(index $thumbnail 0).Fill>: error calling Fill: image "/Users/okdyy75/hugo-theme-salt/content/article/hugo/fontawsome/thumbnail.png": this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information
ERROR 2022/01/29 20:21:30 render of "page" failed: execute of template failed: template: partials/sidebar.html:101:72: executing "sidebar" at <(index $thumbnail 0).Fill>: error calling Fill: image "/Users/okdyy75/hugo-theme-salt/content/article/hugo/fontawsome/thumbnail.png": this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information
ERROR 2022/01/29 20:21:30 render of "page" failed: execute of template failed: template: partials/sidebar.html:101:72: executing "sidebar" at <(index $thumbnail 0).Fill>: error calling Fill: image "/Users/okdyy75/hugo-theme-salt/content/article/hugo/fontawsome/thumbnail.png": this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information
ERROR 2022/01/29 20:21:30 render of "page" failed: execute of template failed: template: partials/sidebar.html:101:72: executing "sidebar" at <(index $thumbnail 0).Fill>: error calling Fill: image "/Users/okdyy75/hugo-theme-salt/content/article/hugo/fontawsome/thumbnail.png": this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information
Error: Error building site: failed to render pages: render of "page" failed: execute of template failed: template: partials/sidebar.html:101:72: executing "sidebar" at <(index $thumbnail 0).Fill>: error calling Fill: image "/Users/okdyy75/hugo-theme-salt/content/article/hugo/fontawsome/thumbnail.png": this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information
Total in 235 ms

ローカルのhugoとhugo-binのバージョンを確認してみると

Hugoで一週間のPV数順の人気記事を作る方法

Hugoで一週間のPV数順の人気記事を作る方法

 Hugo
 2022-01-12

HugoとGoogle Analyticsを使って人気記事のランキングを作る方法を紹介します

ステップとしては

  1. GCPから鍵を作成し、Google Analyticsで権限を付与
  2. Google Analytics Data APIからpv数を取得するスクリプトを作成
  3. 保存したpvデータを元にHugoからランキング作成
  4. CIで定期的にpv取得スクリプトを起動させる

1. GCPから鍵を作成し、Google Analyticsで権限を付与

基本的にはdevelopers IOさんの記事を参考にします。「Google Analyticsでサービスアカウント用のユーザーに権限を与える」の部分まで実行してください。

Hugoで年月別のアーカイブを作る方法

Hugoで年月別のアーカイブを作る方法

 Hugo
 2021-12-28

Hugoでアーカイブを作るには2種類ほど方法があります

①タグやカテゴリと同様にタクソノミーを設定する

config.ymlにarchiveを追加し

taxonomies:
  archive: archives

記事のフロントマターに年月を設定してあげれば

archives: ["2021年12月"]

こんな感じのデータが作成されます。この時「yyyy年mm月」の形式でないと年月でソートされないので注意です

    {{ .Site.Taxonomies.archives.Alphabetical.Reverse }}

    [
        {2021年12月 [WeightedPage(0,"Hugoで年月別のアーカイブを作る方法") WeightedPage(0,"HugoでFontawsomeを使う方法")]}
        {2021年10月 [WeightedPage(0,"Hugoに検索機能を追加しよう")]}
        {2021年9月 [WeightedPage(0,"Hugoを使い始めた人に捧げるTips11選") WeightedPage(0,"Go言語Tips② Hugoで使われるlayoutの正体")]}
    ]

新しく作る記事はarchetypesを更新してあげれば問題ないのですが、すでにある記事にarchiveを追加してあげるのは結構大変ですよね

HugoでFontAwesomeを使う方法

HugoでFontAwesomeを使う方法

 Hugo
 2021-12-04

HugoにFontAwesomeを使う場合はHugoの機能であるモジュールを使うと簡単に実現できます!

1. npmでFontAwesomeをインストール

package.jsonがない場合はnpm initしてください

npm install -D @fortawesome/fontawesome-free

2. config.ymlのmoduleに使いたいjsファイルをmounts

注意点としてmountすると、デフォルトであるtargetのルートディレクトリが無視されるので明示的に追加する必要があります