<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>Hugo on @johtaniの日記 3rd</title>
    <link>https://blog.johtani.info/tags/hugo/</link>
    <description>Recent content in Hugo on @johtaniの日記 3rd</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Mon, 24 Jul 2023 09:10:32 +0000</lastBuildDate><atom:link href="https://blog.johtani.info/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ブログ記述環境としてのDev Container</title>
      <link>https://blog.johtani.info/blog/2023/07/24/introduce-dev-container-to-hugo-env/</link>
      <pubDate>Mon, 24 Jul 2023 09:10:32 +0000</pubDate>
      
      <guid>https://blog.johtani.info/blog/2023/07/24/introduce-dev-container-to-hugo-env/</guid>
      <description>&lt;p&gt;このブログの生成には、&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;を利用しています。
&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/22/intro-hugo-and-theme/&#34;&gt;ブログ移行日記（その1）&lt;/a&gt;に書いてありますが、当時は&lt;code&gt;brew&lt;/code&gt;でインストールしていました。
また、Windowsに移行したタイミングで、WSL2のUbuntuに&lt;code&gt;apt&lt;/code&gt;でhugoをインストールして利用していました。
WSL2の環境が壊れなければこのままでもいいのですが、最近Dev Containerを触っていたので、このブログを書く環境（おもにHugo）もDev Containerにできるのでは？と気づきました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;このブログの生成には、&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;を利用しています。
&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/22/intro-hugo-and-theme/&#34;&gt;ブログ移行日記（その1）&lt;/a&gt;に書いてありますが、当時は&lt;code&gt;brew&lt;/code&gt;でインストールしていました。
また、Windowsに移行したタイミングで、WSL2のUbuntuに&lt;code&gt;apt&lt;/code&gt;でhugoをインストールして利用していました。
WSL2の環境が壊れなければこのままでもいいのですが、最近Dev Containerを触っていたので、このブログを書く環境（おもにHugo）もDev Containerにできるのでは？と気づきました。&lt;/p&gt;
&lt;p&gt;ということで、Hugo＋αの環境をDev Container化したので、そのメモです。&lt;/p&gt;
&lt;h2 id=&#34;必要なもの&#34;&gt;必要なもの&lt;/h2&gt;
&lt;p&gt;ブログを書いて、記事を構築して、公開するところまでに利用するのは次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;li&gt;Hugo&lt;/li&gt;
&lt;li&gt;node&lt;/li&gt;
&lt;li&gt;atomic-algolia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GitHubのプライベートリポジトリでHugoのプロジェクトを管理しています。
また、GitHub Pagesで公開しており、生成したHTMLもgitコマンドを利用してGitHubにpushしています。
このため、gitコマンドが必要です。&lt;/p&gt;
&lt;p&gt;コンテンツの生成はHugoコマンドを利用します（テーマの適用とかいろいろ）。&lt;/p&gt;
&lt;p&gt;あと、Algoliaでブログを検索できるようにしており（&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/28/introduce-algolia/&#34;&gt;ブログ移行日記（その4）参照&lt;/a&gt;）、Algoliaへドキュメントのデータをアップロードするために、atomic-algoliaを利用しています。こちらは、nodeのモジュールであるので、nodeの環境も必要です。&lt;/p&gt;
&lt;h2 id=&#34;ベースにするイメージ&#34;&gt;ベースにするイメージ&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/devcontainers/templates/&#34;&gt;Dev Container Templates&lt;/a&gt;というリポジトリが公開されています。
こちらを探すと、元となるdevcontainer.jsonが見つかることがあります。
Hugoのものがあるか探してみましたが、残念ながら見つかったのはJekyllのテンプレートでした。
今回は、nodeの環境が必要なので&lt;a href=&#34;https://github.com/devcontainers/templates/tree/main/src/javascript-node&#34;&gt;javascript-node&lt;/a&gt;を元に編集していきます。&lt;/p&gt;
&lt;p&gt;手元のUbuntuのnodeのバージョンが16だったので、バージョン16のイメージを指定します(devcontainer.jsonは後述)。&lt;/p&gt;
&lt;h2 id=&#34;hugoの追加&#34;&gt;Hugoの追加&lt;/h2&gt;
&lt;p&gt;Hugoのテンプレートはなかったのですが、&lt;a href=&#34;https://github.com/devcontainers/features/blob/main/README.md&#34;&gt;Dev Container Features&lt;/a&gt;に&lt;a href=&#34;https://github.com/devcontainers/features/tree/main/src/hugo&#34;&gt;Hugoのfeature&lt;/a&gt;が用意されていました。
&lt;code&gt;features&lt;/code&gt;に1行追加するだけでコンテナにHugoをインストールしてくれる便利ものです。&lt;/p&gt;
&lt;h2 id=&#34;markdownの環境&#34;&gt;Markdownの環境&lt;/h2&gt;
&lt;p&gt;Dev Container Templatesを探索していて&lt;a href=&#34;https://github.com/devcontainers/templates/tree/main/src/markdown&#34;&gt;見つけたMarkdownのテンプレート&lt;/a&gt;も参考にしてみました。
VS CodeのMarkdown向けの拡張機能がいくつかリストアップされていたので、ついでに追加です。
&lt;code&gt;markdown-all-in-one&lt;/code&gt;や&lt;code&gt;markdownlint&lt;/code&gt;はこれまでも利用していたので、他のものも便利だろうということで。
他の物はどんなものかを後で調べてみる予定です。&lt;/p&gt;
&lt;h2 id=&#34;作ったdevcontainerの設定はこちら&#34;&gt;作った.devcontainerの設定はこちら&lt;/h2&gt;
&lt;p&gt;ということで、出来上がった設定は以下の通りです。&lt;/p&gt;
&lt;h3 id=&#34;devcontainerjson&#34;&gt;devcontainer.json&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hugo - blog generator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;image&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mcr.microsoft.com/devcontainers/javascript-node:16&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;postCreateCommand&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/bin/sh ./.devcontainer/postCreateCommand.sh&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;features&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ghcr.io/devcontainers/features/hugo:1&amp;#34;&lt;/span&gt;: {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;customizations&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;vscode&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;extensions&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;yzhang.markdown-all-in-one&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;streetsidesoftware.code-spell-checker&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DavidAnson.vscode-markdownlint&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;shd101wyy.markdown-preview-enhanced&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bierner.github-markdown-preview&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;postCreateCommand.sh&lt;/code&gt;では、npm installで、必要なモジュールのインストールをコンテナビルド後に実行できるようにしました。
（&lt;code&gt;apt update&lt;/code&gt;はなくてもいいな）&lt;/p&gt;
&lt;h3 id=&#34;postcreatecommandsh&#34;&gt;postCreateCommand.sh&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# postCreateCommand.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;START Install&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown -R vscode:vscode .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;FINISH Install&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;ということで、ここ最近Dev Containerについて色々調べていたのでサクッとDev Container化ができました。
まぁ、HugoのFeatureが用意されていて、他に大したことをやっていないというのが大きいのですが。
このブログは今回構築したDev Containerで生成して公開した記事になります。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Hugoをアップデートした</title>
      <link>https://blog.johtani.info/blog/2022/08/05/upgrade-hugo-accidentally/</link>
      <pubDate>Fri, 05 Aug 2022 17:59:14 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2022/08/05/upgrade-hugo-accidentally/</guid>
      <description>&lt;p&gt;Hugoを0.84から0.92にアップデートをする際に、これまでのブログ記事やレイアウトファイルを修正したので個人的にメモを残しておきます。&lt;/p&gt;
&lt;h2 id=&#34;なんでアップデート&#34;&gt;なんでアップデート？&lt;/h2&gt;
&lt;p&gt;うっかり魔がさして、メインのWSL2のUbuntuを20.04から22.04にアップグレードしました。。。
新規に22.04を落としてきて移行ではなく。
皆さんはまねしないほうがいいですよ！
アップデートした後にGitの環境がおかしくなったりと大変でした。
WSL2のUbuntuではHugoでブログのビルド、いろんな確認のためのElasticsearchの起動、個人的なプログラムとかを書く環境として利用しています。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Hugoを0.84から0.92にアップデートをする際に、これまでのブログ記事やレイアウトファイルを修正したので個人的にメモを残しておきます。&lt;/p&gt;
&lt;h2 id=&#34;なんでアップデート&#34;&gt;なんでアップデート？&lt;/h2&gt;
&lt;p&gt;うっかり魔がさして、メインのWSL2のUbuntuを20.04から22.04にアップグレードしました。。。
新規に22.04を落としてきて移行ではなく。
皆さんはまねしないほうがいいですよ！
アップデートした後にGitの環境がおかしくなったりと大変でした。
WSL2のUbuntuではHugoでブログのビルド、いろんな確認のためのElasticsearchの起動、個人的なプログラムとかを書く環境として利用しています。&lt;/p&gt;
&lt;p&gt;で、Ubuntuを上げたところ無事（？）Hugoもアップデートされたわけです。
最初はGitでfetchが出来なくなって修正していましたが、そのほかの動作確認を行なう段階でHugoでブログがビルドできなくなっていることが判明しました。&lt;/p&gt;
&lt;h2 id=&#34;バージョンアップに伴う修正&#34;&gt;バージョンアップに伴う修正&lt;/h2&gt;
&lt;p&gt;hugoコマンドを実行すると、いくつかのERRORとWARNが出力されました。
次のようなものです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hugo v0.92.2+extended linux/amd64 BuildDate=2022-02-23T16:47:50Z VendorInfo=ubuntu:0.92.2-1
ERROR 2022/08/05 13:22:32 Page.URL is deprecated and will be removed in Hugo 0.93.0. Use .Permalink or .RelPermalink. If what you want is the front matter URL value, use .Params.url
WARN 2022/08/05 13:22:32 The &amp;#34;tweet&amp;#34; shortcode will soon require two named parameters: user and id. See &amp;#34;/home/johtani/blog_generator/content/post/2020/2020-12-04-build_corne_choc.md:46:1&amp;#34;
...
ERROR 2022/08/05 13:22:33 Failed to get JSON resource &amp;#34;https://publish.twitter.com/oembed?dnt=fa...
If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config:
ignoreErrors = [&amp;#34;error-remote-getjson&amp;#34;]
ERROR 2022/08/05 18:44:11 Page.UniqueID is deprecated and will be removed in Hugo 0.93.0. Use .File.UniqueID
ERROR 2022/08/05 18:44:11 Page.Dir is deprecated and will be removed in Hugo 0.93.0. Use .File.Dir
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;pageurlなどがdeprecatedに&#34;&gt;Page.URLなどがdeprecatedに&lt;/h3&gt;
&lt;p&gt;最初と最後2行のERRORがこちらになります。
どうやら、Pageオブジェクトの変数に変更があったようです（まだdeprecatedであり、存在はしていそう？）。
レイアウト（テンプレート）ファイルで「Previous Post」や「Next Post」といったリンクを作ったり、
&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/28/introduce-algolia/#%E4%BB%8A%E5%BE%8C%E3%81%AE%E8%AA%B2%E9%A1%8C&#34;&gt;Algoliaに登録するためのJSONファイルを生成するところ&lt;/a&gt;でURL文字列を取得するために参照していました。&lt;/p&gt;
&lt;p&gt;ログ出力でどのように変更すればよいのか？という記載があるので便利ですね。
ただ、どのファイルにこの記述があるのかはログに出てなかったので少しだけ苦労しました。&lt;/p&gt;
&lt;p&gt;実際には「UniqueID」という文字列でディレクトリ内を検索してあたりを付けた感じです。
利用させていただいているテーマ（&lt;a href=&#34;https://github.com/zhaohuabing/hugo-theme-cleanwhite&#34;&gt;Clean White&lt;/a&gt;）がすでにアップデートに対応されていたのでそちらが参考になりました。&lt;/p&gt;
&lt;p&gt;いくつか、テーマをもとに修正したテンプレートがlayoutsディレクトリにあったので、それらを修正した形です（参考のリンクはテーマのファイルになります）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.URL&lt;/code&gt;を&lt;code&gt;.Permalink&lt;/code&gt;に変更（参考：&lt;a href=&#34;https://github.com/zhaohuabing/hugo-theme-cleanwhite/blob/master/layouts/_default/single.html#L91&#34;&gt;single.html&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.UniqueID&lt;/code&gt;を&lt;code&gt;.File.UniqueID&lt;/code&gt;に変更（参考：&lt;a href=&#34;https://github.com/zhaohuabing/hugo-theme-cleanwhite/blob/master/layouts/_default/list.algolia.json#L6-L7&#34;&gt;list.algolia.json&lt;/a&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tweetのshortcodeの引数が増えた&#34;&gt;tweetのshortcodeの引数が増えた&lt;/h3&gt;
&lt;p&gt;これまでは以下のようにIDだけで良かったのですが、&lt;code&gt;user&lt;/code&gt;と&lt;code&gt;id&lt;/code&gt;という2つの引数が必須になるという変更が入ったようです。&lt;/p&gt;
&lt;p&gt;変更前：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{ &amp;lt;tweet 1449214872143609860&amp;gt; }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;変更後：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{{ &amp;lt;tweet user=&amp;#34;johtani&amp;#34; id=&amp;#34;1449214872143609860&amp;#34;&amp;gt; }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;WARNにはファイル名、行番号が出力されていたので、1つずつ修正していきました。
結構な量があったので、地味に大変でした、
公開しているブログを見ながら、該当するツイートを見つけては&lt;code&gt;user&lt;/code&gt;を指定していく部分が特に。
自分のツイート以外もブログに貼っていたので画一的には対処できなくて。。。&lt;/p&gt;
&lt;p&gt;なにかプログラムで機械的に対応ができたかもなぁ。&lt;/p&gt;
&lt;h3 id=&#34;鍵付きツイートによるエラー&#34;&gt;鍵付きツイートによるエラー&lt;/h3&gt;
&lt;p&gt;tweetのshortcode対応を行なった後でもビルドがエラーになっており、次のようなエラーが消えないままでした（エラーの一部は省略しています）。
（幸いにも）1つのツイートだけ、ブログ記事を書いた後で鍵付きになってしまった方のツイートがあったようで、ツイート用のJSONが取得できなくてエラーになっていました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ERROR 2022/08/05 13:22:33 Failed to get JSON resource &amp;#34;https://publish.twitter.com/oembed?dnt=fa...
If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config:
ignoreErrors = [&amp;#34;error-remote-getjson&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こちらもログに対処方法が出ています。
&lt;code&gt;config.toml&lt;/code&gt;に&lt;code&gt;ignoreErrors = [&amp;quot;error-remote-getjson&amp;quot;]&lt;/code&gt;を追加すれば、エラーが出力されなくなりビルドも成功するようになります。
ただ、tweet以外でもエラーが出る可能性がありそうで、その場合に、ブログに書いたつもりが一部が出力されないまま公開されそうな気がします。
なので、今回は&lt;code&gt;config.toml&lt;/code&gt;に該当の設定を追加するのではなく、ブログ記事から該当のツイートを消す対応をしました。
幸いにも、ツイートを消してもブログ記事自体には影響がありませんでした。&lt;/p&gt;
&lt;h3 id=&#34;hugo_buildlockファイルが生成される&#34;&gt;.hugo_build.lockファイルが生成される&lt;/h3&gt;
&lt;p&gt;これは、エラーではないのですがgit addしようとした際に、ファイルが増えていたのでどういったファイルなのかを調べました。
0.89.0から追加されたロックファイルのようです（参考：&lt;a href=&#34;https://gohugo.io/news/0.89.0-relnotes/#notes&#34;&gt;0.89.0のリリースノート&lt;/a&gt;）。
こちらは特に保管する必要もなさそうなので.gitignoreに追加して対処しました。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;ということで、気軽にUbuntuをアップグレードしないほうがいいですね。。。
期せずしてHugoのアップグレードができたのは良かったかもなｗ&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zenn.dev/ryuu/articles/upgrade-ubuntu2204-wsl&#34;&gt;【WSL2】Ubuntu 20.04.4 LTS を 22.04 LTS へアップグレードした&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
    </item>
    
    <item>
      <title>ブログ移行日記(その5) - Jugemのブログを移行</title>
      <link>https://blog.johtani.info/blog/2020/02/21/import-jugem-posts/</link>
      <pubDate>Fri, 21 Feb 2020 12:04:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2020/02/21/import-jugem-posts/</guid>
      <description>&lt;p&gt;ブログ移行日記(その5)です。前回まではこちら&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/22/intro-hugo-and-theme/&#34;&gt;ブログ移行日記(その1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/23/convert-md-from-octopress-to-hugo/&#34;&gt;ブログ移行日記(その2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/24/setting-hugo/&#34;&gt;ブログ移行日記(その3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/28/introduce-algolia/&#34;&gt;ブログ移行日記(その4)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回はこれまでとは異なる特殊な話です。&lt;/p&gt;
&lt;p&gt;最初にブログを書き始めたときに利用していたのが&lt;a href=&#34;http://johtani.jugem.jp/&#34;&gt;Jugem&lt;/a&gt;のブログでした。
その後、Octopressに移行して、今年、Hugoに移行したという流れです。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;ブログ移行日記(その5)です。前回まではこちら&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/22/intro-hugo-and-theme/&#34;&gt;ブログ移行日記(その1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/23/convert-md-from-octopress-to-hugo/&#34;&gt;ブログ移行日記(その2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/24/setting-hugo/&#34;&gt;ブログ移行日記(その3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.johtani.info/blog/2020/01/28/introduce-algolia/&#34;&gt;ブログ移行日記(その4)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回はこれまでとは異なる特殊な話です。&lt;/p&gt;
&lt;p&gt;最初にブログを書き始めたときに利用していたのが&lt;a href=&#34;http://johtani.jugem.jp/&#34;&gt;Jugem&lt;/a&gt;のブログでした。
その後、Octopressに移行して、今年、Hugoに移行したという流れです。&lt;/p&gt;
&lt;p&gt;で、よくよく考えると、Jugemのブログも移行できるんじゃないか?となりました。
じゃあ、やってみるかと。なので、今回のブログは自分の備忘録です(興味のない人が大多数じゃないかな)。
一応、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py&#34;&gt;Pythonで書いたプログラムはGitHubに上がっています&lt;/a&gt;。文字列置換と正規表現のオンパレードです。&lt;/p&gt;
&lt;h2 id=&#34;jugemからexport&#34;&gt;JugemからExport&lt;/h2&gt;
&lt;p&gt;まずは、移行元のデータが取り出せるかどうかを調べたところ、&lt;a href=&#34;https://support.jugem.jp/hc/ja/articles/222313727-%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E8%A8%98%E4%BA%8B%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E5%87%BA%E6%9D%A5%E3%81%BE%E3%81%99%E3%81%8B-&#34;&gt;text形式もしくはXML形式でエクスポートが可能でした&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;変換処理が必要なはずなので、XMLでダウンロードします。
独自のXMLですが、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L239&#34;&gt;記事ごとにXMLのタグ(&lt;code&gt;&amp;lt;entry&amp;gt;&lt;/code&gt;)でまとめられている&lt;/a&gt;ので、処理が楽です。&lt;/p&gt;
&lt;h2 id=&#34;xmlをmarkdownに&#34;&gt;XMLをMarkdownに&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;entry&amp;gt;&lt;/code&gt;タグの下に次のような項目が入っているので、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L204&#34;&gt;抜き出します&lt;/a&gt;。&lt;/p&gt;
&lt;h3 id=&#34;ヘッダ部&#34;&gt;ヘッダ部&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;title - 記事タイトル&lt;/li&gt;
&lt;li&gt;author - 著者&lt;/li&gt;
&lt;li&gt;category - タグ&lt;/li&gt;
&lt;li&gt;date - 投稿日付&lt;/li&gt;
&lt;li&gt;description : 本文(先頭部分)&lt;/li&gt;
&lt;li&gt;sequel : 本文(つづき)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;titleからdateまでをHugoのMarkdownの&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L204&#34;&gt;ヘッダ部分として出力します&lt;/a&gt;。
&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L38&#34;&gt;日付は形式が違うので合わせるように変換&lt;/a&gt;し、
titleは&lt;code&gt;(Jugemより移植)&lt;/code&gt;という文字列を追加しました。&lt;/p&gt;
&lt;p&gt;また、Hugoの個別のコンテンツにするためにそれぞれをMarkdownのファイルに変換しています。
ファイル名は変換後の&lt;code&gt;date&lt;/code&gt;の先頭10文字(&lt;code&gt;yyyy-MM-dd&lt;/code&gt;)に&lt;code&gt;-&lt;/code&gt;を付け加えて、
タイトルを追加しました。&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L18&#34;&gt;ホントは英語のファイル名にしたかったんですが、ちょっと手抜き&lt;/a&gt;。ファイル名に使用できないような文字は&lt;code&gt;-&lt;/code&gt;に置換しています。&lt;/p&gt;
&lt;h3 id=&#34;本文&#34;&gt;本文&lt;/h3&gt;
&lt;p&gt;本文部分はもう少し複雑です。
まずは、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/master/from_jugem_to_hugo.py#L228&#34;&gt;descriptionとsequelから抜き出した文字列を結合&lt;/a&gt;します。&lt;/p&gt;
&lt;p&gt;で、内部の文字列に次のようなものがあるので、それぞれMarkdownに変換したりという処理を書いてます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L60&#34;&gt;HTMLのheadingタグをMarkdown形式に&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L66&#34;&gt;br、hr、del、strongなどのタグもMarkdown形式に&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L112&#34;&gt;aタグの処理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L93&#34;&gt;Amazonのアフィリエイトタグの処理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L161&#34;&gt;ul、olタグの処理&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などです。
アフィリエイトタグは、数行に渡るの複数のHTMLタグで記述されているので、
&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L146&#34;&gt;ASINと商品タイトルだけを抜き出しています&lt;/a&gt;。
Hugoでアフィリエイトのリンクを作るために、&lt;a href=&#34;https://github.com/ikemo3/hugo-amazon-jp&#34;&gt;hugo-amazon-jp&lt;/a&gt;という公開されているshortcodeを元に、カスタマイズしたものを使っています。
これ用に、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L104&#34;&gt;必要なASINとタイトルを別ファイルに出力&lt;/a&gt;したりしています。&lt;/p&gt;
&lt;p&gt;また、いくつか画像を使っている記事があったのですが、これが曲者でした。
XMLに入っているimgタグに画像へのURLがあるのですが、アクセスしても存在しないURL担っています。。。
&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L130&#34;&gt;ブログで公開している画像のファイル名に似たものがXMLに入っていたので、URLを組み直して、ダウンロードするという処理も書いています&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;あとは、&lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo/blob/65e29cc7e613495e0d2c75e3f617c6f778085b61/from_jugem_to_hugo.py#L81&#34;&gt;昔ちょっと凝った書き方(spanタグで章みたいなことやってた)をしていた部分の処理&lt;/a&gt;を加えて完成です。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;元のXMLを見たり、抜き出したファイルを見ながら、トライアンドエラーでプログラムを書きました。
なんとなく変換できたなかっていうところで、取り込んで公開しました。
まだ、全部の記事をチェックしてないですが、なんとなく移植できたので一旦これでいいかなと。
昔の記事を見たときにおかしい場所があったら手で治すつもりでいます。&lt;/p&gt;
&lt;p&gt;なんか、もうちょっとうまくプログラムかけた気もしますが、書き捨てのプログラムだと思うのでこんなもんかな。&lt;/p&gt;
&lt;p&gt;1点気になっているところは、コメントの部分です。
ブログにコメントをいただいていたのですが、その部分は移植できてないです。&lt;/p&gt;
&lt;p&gt;Octopresに移植していこうは、&lt;a href=&#34;https://disqus.com/&#34;&gt;Disqus&lt;/a&gt;のサービスでコメント部分を提供しています。ここに移植するのも変な話だなぁと思っているので、本文にコメントを取り込む感じかなぁ？&lt;/p&gt;
&lt;p&gt;もともとのJugemのサイトもそのまままだ残してあるので、そのうち気が向いたらで。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>OctopressからHugoへ移行中(まだ途中)</title>
      <link>https://blog.johtani.info/blog/2020/01/16/moving-to-hugo/</link>
      <pubDate>Thu, 16 Jan 2020 18:23:37 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2020/01/16/moving-to-hugo/</guid>
      <description>&lt;p&gt;5年くらい、Octopressを使用していましたが、更新されなくなっているのと、コンテンツの生成に時間がかかることもあり、
ほかのプラットフォームを使用するように変更しました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;5年くらい、Octopressを使用していましたが、更新されなくなっているのと、コンテンツの生成に時間がかかることもあり、
ほかのプラットフォームを使用するように変更しました。&lt;/p&gt;
&lt;p&gt;とりあえず、今回の移行で参考にした記事とかURLをリストアップしてみました。
詳細についてはまた明日以降で。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;参考記事
&lt;ul&gt;
&lt;li&gt;移行関連 : &lt;a href=&#34;https://iriya-ufo.net/blog/2018/12/27/octopress-to-hugo/#github-pages-&#34;&gt;https://iriya-ufo.net/blog/2018/12/27/octopress-to-hugo/#github-pages-&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;移行関連 : &lt;a href=&#34;https://gam0022.net/blog/2016/09/25/migrated-from-octopress-to-hugo/&#34;&gt;https://gam0022.net/blog/2016/09/25/migrated-from-octopress-to-hugo/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hugo自体の日本語紹介記事 : &lt;a href=&#34;https://knowledge.sakura.ad.jp/22908/&#34;&gt;https://knowledge.sakura.ad.jp/22908/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hugo概要
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/&#34;&gt;https://gohugo.io/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;テーマ
&lt;ul&gt;
&lt;li&gt;一覧 : &lt;a href=&#34;https://themes.gohugo.io/&#34;&gt;https://themes.gohugo.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;利用したテーマ : &lt;a href=&#34;https://github.com/zhaohuabing/hugo-theme-cleanwhite&#34;&gt;https://github.com/zhaohuabing/hugo-theme-cleanwhite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;データ移行
&lt;ul&gt;
&lt;li&gt;作ったスクリプト : &lt;a href=&#34;https://github.com/johtani/from-octopress-to-hugo&#34;&gt;https://github.com/johtani/from-octopress-to-hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;favicon
&lt;ul&gt;
&lt;li&gt;作ったサイト : &lt;a href=&#34;http://emblemmatic.org/markmaker/#/&#34;&gt;http://emblemmatic.org/markmaker/#/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Algoliaセッティング
&lt;ul&gt;
&lt;li&gt;参考 : &lt;a href=&#34;https://blog.uni-3.app/2019/01/02/hugo-algolia-search/&#34;&gt;https://blog.uni-3.app/2019/01/02/hugo-algolia-search/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Pagesでの運用
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/hosting-and-deployment/hosting-on-github/#types-of-github-pages&#34;&gt;https://gohugo.io/hosting-and-deployment/hosting-on-github/#types-of-github-pages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;残タスク&#34;&gt;残タスク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Amazonのアフィリンクをきれいに表示するlayoutか何かを用意する?　&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
    </item>
    
  </channel>
</rss>
