<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[beyooon Blog]]></title><description><![CDATA[beyooon Blogを表示します]]></description><link>https://beyooon.jp</link><generator>GatsbyJS</generator><lastBuildDate>Tue, 30 Jul 2024 14:02:51 GMT</lastBuildDate><language><![CDATA[ja]]></language><item><title><![CDATA[GITHUB_TOKEN によってトリガーされたイベントでは他のワークフローは走らない]]></title><description><![CDATA[GitHub Actions の GITHUB_TOKEN によりトリガーしたイベントの仕様のお話]]></description><link>https://beyooon.jp/blog/github-token-trigger-specification/</link><guid isPermaLink="false">https://beyooon.jp/blog/github-token-trigger-specification/</guid><pubDate>Thu, 11 Jul 2024 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;プロダクトで dependabot によるライブラリ更新を &lt;code class=&quot;language-text&quot;&gt;GITHUB_TOKEN&lt;/code&gt; を使ってオートマージしていたのだけど、ベースブランチで CI が走らなかった。&lt;/p&gt;
&lt;p&gt;気になって調べてみるとそういう仕様らしい。&lt;br&gt;
再帰実行されるのを防ぐためとのこと。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you use the repository’s GITHUB_TOKEN to perform tasks, events triggered by the GITHUB_TOKEN, with the exception of workflow_dispatch and repository_dispatch, will not create a new workflow run. This prevents you from accidentally creating recursive workflow runs. For example, if a workflow run pushes code using the repository’s GITHUB_TOKEN, a new workflow will not run even when the repository contains a workflow configured to run when push events occur.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/actions/security-guides/automatic-token-authentication&quot;&gt;https://docs.github.com/en/actions/security-guides/automatic-token-authentication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;対応策としては &lt;code class=&quot;language-text&quot;&gt;GITHUB_TOKEN&lt;/code&gt; の代わりに&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personal Access Token&lt;/li&gt;
&lt;li&gt;GitHub App から生成したトークン&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を使用すれば良い。&lt;/p&gt;
&lt;p&gt;Personal Access Token は個人アカウントから発行するもので使用は避けたかったので、GitHub App から生成したトークンを使用する方法を選んだ。&lt;/p&gt;
&lt;p&gt;具体的な手順はこちらの記事が詳しい。&lt;br&gt;
&lt;a href=&quot;https://blog.smartbank.co.jp/entry/2023/02/16/dependabot-auto-merge-with-github-app&quot;&gt;https://blog.smartbank.co.jp/entry/2023/02/16/dependabot-auto-merge-with-github-app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今後もオートマージ以外でも &lt;code class=&quot;language-text&quot;&gt;GITHUB_TOKEN&lt;/code&gt; を使うと走らせたいワークフローが走らないケースはありそうなので覚えておこう。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[nanoid v4 を使ったら jest が通らなくなった]]></title><description><![CDATA[nanoid v4 を使ったら jest のテストが落ちるようになってしまったため対応しました。]]></description><link>https://beyooon.jp/blog/nanoid-v4-fails-jest/</link><guid isPermaLink="false">https://beyooon.jp/blog/nanoid-v4-fails-jest/</guid><pubDate>Sun, 27 Nov 2022 14:47:00 GMT</pubDate><content:encoded>&lt;p&gt;最近、プロダクトに nanoid を新規インストールすることがあったのですが、その際に nanoid を使っている部分の jest のテストが落ちるようになってしまったため対応しました。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;バージョンとエラーメッセージ&lt;/h2&gt;
&lt;p&gt;インストールした nanoid のバージョンは現時点で最新の v4 です。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;nanoid&quot;: &quot;4.0.0&quot;,
&quot;jest&quot;: &quot;29.3.1&quot;,
&quot;esbuild&quot;: &quot;0.15.14&quot;,
&quot;esbuild-jest&quot;: &quot;0.5.0&quot;,&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;エラーメッセージ（一部抜粋）&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;SyntaxError: Unexpected token &lt;span class=&quot;token string&quot;&gt;&apos;export&apos;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;原因&lt;/h2&gt;
&lt;p&gt;調べてみたところ、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nanoid は v4 で CJS をサポートしなくなり、ESM のみサポートするようになった&lt;/li&gt;
&lt;li&gt;jest は Node で動いているため ESM は CJS にトランスパイルしないと動かない&lt;/li&gt;
&lt;li&gt;デフォルトでは node_modules 配下のファイルはトランスパイルされない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということのようで、nanoid が ESM のまま読み込まれてしまっていることが原因でした。&lt;/p&gt;
&lt;h2&gt;対応&lt;/h2&gt;
&lt;p&gt;対応案としては、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CJS をサポートしている nanoid v3 にダウングレードして使う&lt;/li&gt;
&lt;li&gt;nanoid をトランスパイルするように設定変更する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;を考えました。&lt;/p&gt;
&lt;p&gt;あまり過去のバージョンに固定するライブラリは増やしたくないため、2 の「 nanoid をトランスパイルするように設定変更する」の方向で対応することにしました。&lt;/p&gt;
&lt;h2&gt;jest の設定変更&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;transformIgnorePatterns:&lt;/code&gt; で、トランスパイル対象から除外されている &lt;code class=&quot;language-text&quot;&gt;node_modules&lt;/code&gt; 配下のファイルのうち nanoid のみトランスパイルされるように変更します&lt;/p&gt;
&lt;div class=&quot;gatsby-code-title&quot;&gt;jest.config.js&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;modules&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 無関係のその他の設定は割愛&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string-property property&quot;&gt;&apos;^.+\\.(j|t)sx?$&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;esbuild-jest&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// js ファイルもトランスパイルの対象にしておく&lt;/span&gt;
   &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;transformIgnorePatterns&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;node_modules/(?!nanoid/)&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// nanoid をトランスパイルする&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;transform&lt;/code&gt; については、このプロダクトが TypeScript のみで書かれていたため js ファイルも対象に含め直す必要がありましたが、元々 js ファイルが対象になっていれば変更する必要はありません。&lt;/p&gt;
&lt;p&gt;これで jest が通るようになりました。&lt;/p&gt;
&lt;p&gt;ちなみに同じように CJS 対応していないライブラリが他にも出てきた場合は以下のように記述することで対応できます。&lt;/p&gt;
&lt;div class=&quot;gatsby-code-title&quot;&gt;jest.config.js&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;modules&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 無関係のその他の設定は割愛&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string-property property&quot;&gt;&apos;^.+\\.(j|t)sx?$&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;esbuild-jest&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;transformIgnorePatterns&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;node_modules/(?!(nanoid|hoge)/)&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// hoge もトランスパイルする&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://zenn.dev/t_yng/scraps/d701cdae1071fd&quot;&gt;https://zenn.dev/t_yng/scraps/d701cdae1071fd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ai/nanoid/issues/365&quot;&gt;https://github.com/ai/nanoid/issues/365&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[phpbrew のインストールでエラー]]></title><description><![CDATA[phpbrew のインストールでエラーになったためメモ書き。]]></description><link>https://beyooon.jp/blog/phpbrew-install/</link><guid isPermaLink="false">https://beyooon.jp/blog/phpbrew-install/</guid><pubDate>Sat, 12 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;php の複数バージョンを切り替えたいと思い、phpbrew をインストールしようとした。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/phpbrew/phpbrew&quot;&gt;公式&lt;/a&gt;の手順通り進めたが、指定のバージョンの php をインストールするところでエラーになったのでメモ書き。&lt;/p&gt;
&lt;h2&gt;環境&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;macOS 10.15.7
phpbrew 1.27.0&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;切り替え前の php のバージョン。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ php &lt;span class=&quot;token parameter variable&quot;&gt;-v&lt;/span&gt;
PHP &lt;span class=&quot;token number&quot;&gt;8.0&lt;/span&gt;.1 &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cli&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;built: Jan  &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2021&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt;:26:28&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; NTS &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
Copyright &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; The PHP Group
Zend Engine v4.0.1, Copyright &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; Zend Technologies
    with Zend OPcache v8.0.1, Copyright &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;, by Zend Technologies&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;エラーメッセージ&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ phpbrew &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4 +default
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; phpbrew will now build &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Loading and resolving variants&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/libxml2&quot;&lt;/span&gt; does not exist.
Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/bzip2&quot;&lt;/span&gt; does not exist.
Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/mhash&quot;&lt;/span&gt; does not exist.
Downloading https://www.php.net/distributions/php-7.4.4.tar.bz2 via &lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; extension
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12.12&lt;/span&gt;/12.12MB &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;%
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Extracting /Users/hogehoge/.phpbrew/distfiles/php-7.4.4.tar.bz2 to /Users/hogehoge/.phpbrew/build/tmp.1623451524/php-7.4.4
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Moving /Users/hogehoge/.phpbrew/build/tmp.1623451524/php-7.4.4 to /Users/hogehoge/.phpbrew/build/php-7.4.4
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Checking patches&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; replace apache php module name with custom version name
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; replace freetype-config with pkg-config on php older than &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Configuring &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.


Use &lt;span class=&quot;token function&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;command&lt;/span&gt; to see what&lt;span class=&quot;token string&quot;&gt;&apos;s going on:
   $ tail -F &apos;&lt;/span&gt;/Users/hogehoge/.phpbrew/build/php-7.4.4/build.log&apos;


Error: Configure failed:
The last &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; lines &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; the log file:
checking &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; ZLIB support&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;. no

checking whether to &lt;span class=&quot;token builtin class-name&quot;&gt;enable&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bc&lt;/span&gt; style precision math functions&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;. &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;

checking &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; BZip2 support&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;. &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;

checking &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token for-or-select variable&quot;&gt;BZip2&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; default path&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;. not found

configure: error: Please reinstall the BZip2 distribution

Please checkout the build log &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;more&lt;/span&gt; details:
         &lt;span class=&quot;token function&quot;&gt;tail&lt;/span&gt; /Users/hogehoge/.phpbrew/build/php-7.4.4/build.log&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;bzip2 のパスが見つからないことがエラーの原因のように見える。&lt;/p&gt;
&lt;p&gt;また variants のロードで他に見つからないものもあるようなので、あわせてインストールするする必要がありそう。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/libxml2&quot;&lt;/span&gt; does not exist.
Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/bzip2&quot;&lt;/span&gt; does not exist.
Homebrew prefix &lt;span class=&quot;token string&quot;&gt;&quot;/usr/local/opt/mhash&quot;&lt;/span&gt; does not exist.&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;コマンド&lt;/h2&gt;
&lt;p&gt;見つからないものを homebrew でインストール。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ brew &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; libxml2 &lt;span class=&quot;token function&quot;&gt;bzip2&lt;/span&gt; mhash&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;インストール再チャレンジ&lt;/h2&gt;
&lt;p&gt;再度、php をインストール。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ phpbrew &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4 +default
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; phpbrew will now build &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Loading and resolving variants&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Checking distribution checksum&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Checksum matched: 308e8f4182ec8a2767b0b1b8e1e7c69fb149b37cfb98ee4a37475e082fa9829f
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Distribution &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; was successfully extracted, skipping&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Checking patches&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; replace apache php module name with custom version name
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; replace freetype-config with pkg-config on php older than &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;
Found existing build.log, renaming it to /Users/hogehoge/.phpbrew/build/php-7.4.4/build.log.1623452001
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Configuring &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.


Use &lt;span class=&quot;token function&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;command&lt;/span&gt; to see what&lt;span class=&quot;token string&quot;&gt;&apos;s going on:
   $ tail -F &apos;&lt;/span&gt;/Users/hogehoge/.phpbrew/build/php-7.4.4/build.log&apos;


&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Checking patches&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; php5.3.x on 64bit machine when intl is enabled.
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; openssl dso linking patch
&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; changes patched.
Checking patch &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; php5.6 with openssl &lt;span class=&quot;token number&quot;&gt;1.1&lt;/span&gt;.x patch.
&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Building&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Build finished: &lt;span class=&quot;token number&quot;&gt;9.6&lt;/span&gt; minutes.
Installing&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
---&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Creating php-fpm.conf
---&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Creating php.ini
---&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Copying /Users/hogehoge/.phpbrew/build/php-7.4.4/php.ini-development 
---&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; Found date.timezone is not set, patching&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
Initializing pear config&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
config-set succeeded
config-set succeeded
config-set succeeded
Enabling pear auto-discover&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
config-set succeeded
Congratulations&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Now you have PHP with &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4 as php-7.4.4

* To configure your installed PHP further, you can edit the config &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt; at
    /Users/hogehoge/.phpbrew/php/php-7.4.4/etc/php.ini

To use the newly built PHP, try the line&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; below:

    $ phpbrew use php-7.4.4

Or you can use switch &lt;span class=&quot;token builtin class-name&quot;&gt;command&lt;/span&gt; to switch your default php to php-7.4.4:

    $ phpbrew switch php-7.4.4

Enjoy&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;build に10分近くかかってるけど、いけた！&lt;/p&gt;
&lt;p&gt;php のバージョンを切り替える。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ phpbrew switch php-7.4.4&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;バージョン確認&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ php &lt;span class=&quot;token parameter variable&quot;&gt;-v&lt;/span&gt;
PHP &lt;span class=&quot;token number&quot;&gt;7.4&lt;/span&gt;.4 &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cli&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;built: Jun &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2021&lt;/span&gt; 08:04:51&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; NTS &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
Copyright &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; The PHP Group
Zend Engine v3.4.0, Copyright &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; Zend Technologies&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;オッケー！&lt;/p&gt;
&lt;h2&gt;最後に&lt;/h2&gt;
&lt;p&gt;php の複数バージョン切り替えは他に &lt;a href=&quot;https://github.com/phpenv/phpenv&quot;&gt;phpenv&lt;/a&gt; があるけど、今回はスター数の多い &lt;a href=&quot;https://github.com/phpbrew/phpbrew&quot;&gt;phpbrew&lt;/a&gt; をインストールした。&lt;/p&gt;
&lt;p&gt;ちなみに今回 php 7.4.4 にしたのは AtCoder のバージョンに合わせたかったため。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[NuxtのSSGで一部のページのルートが生成されない]]></title><description><![CDATA[副業で Nuxt を初めて使って SSG することがあり少しハマったのでメモ。]]></description><link>https://beyooon.jp/blog/nuxt-ssg-generate-routes-trouble/</link><guid isPermaLink="false">https://beyooon.jp/blog/nuxt-ssg-generate-routes-trouble/</guid><pubDate>Wed, 05 May 2021 05:00:00 GMT</pubDate><content:encoded>&lt;p&gt;副業で Nuxt を初めて使って SSG することがあり少しハマったのでメモ書きです。&lt;/p&gt;
&lt;h2&gt;プロジェクトの構成など&lt;/h2&gt;
&lt;p&gt;version&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-json line-numbers&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;dependencies&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;@nuxt/content&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;^1.13.1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;nuxt&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;^2.14.12&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;説明用に簡略化してますが、ディレクトリはこんな感じで、&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;.
└── src
    ├── content
    │   └── post
    │       ├── 1.json
    │       ├── 2.json
    │       └── 3.json
    └── pages
        ├── post
        |   └── _slug.vue
        └── index.vue&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;やってることは&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ルート&lt;/th&gt;
&lt;th&gt;vue ファイル&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;src/pages/index.vue&lt;/td&gt;
&lt;td&gt;&lt;code class=&quot;language-text&quot;&gt;src/content/post/&lt;/code&gt; 配下の json を nuxt/content を使って全て取得して一覧表示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/post/[slug]&lt;/td&gt;
&lt;td&gt;src/pages/post/_slug.vue&lt;/td&gt;
&lt;td&gt;&lt;code class=&quot;language-text&quot;&gt;src/content/post/[slug].json&lt;/code&gt; を nuxt/content を使って取得して詳細表示&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;という感じのオーソドックスな SSG のプロジェクトだと思います。&lt;/p&gt;
&lt;h2&gt;Nuxt の SSG における動的ルート&lt;/h2&gt;
&lt;p&gt;Nuxt の場合、 クローラーが統合されていて動的ルート（今回だと &lt;code class=&quot;language-text&quot;&gt;/post/[slug]&lt;/code&gt; ）なども特に何もしなくても検出してルートを生成してくれます。
このあたりは Gatsby や Next で SSG する際には自分でルートを設定する必要があったので、楽できて良いなぁと思っていたわけです。&lt;/p&gt;
&lt;p&gt;nuxt/content を使って json ファイルを読み込んで動的にページを作成していましたが、実際に動かしてみるとちゃんと自動クロールしてくれているようでした。&lt;/p&gt;
&lt;h2&gt;一部のページのルートが生成されていない？&lt;/h2&gt;
&lt;p&gt;ある程度開発が進み、お客さんからフォードバックをもらうタイミングになって、一部のページでURLに直接移動した場合やリロードした場合に 404 になることが発覚しました。&lt;/p&gt;
&lt;p&gt;ルートが生成されてないんだろうなということはすぐに分かったのですが、なぜ一部のページだけが？と不思議に思いながら原因を探りました。&lt;/p&gt;
&lt;h2&gt;自動クロール出来てなかったことが原因&lt;/h2&gt;
&lt;p&gt;結論から書くと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自動クロール出来てなかったページがあって、そのページのルートが生成されていなかった&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということでした。&lt;/p&gt;
&lt;p&gt;もう少し詳しく説明すると、今回作っていたのは下記のような一覧ページと詳細ページがあるよくあるタイプのページ構成でした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一覧ページを開くと、9件のデータのリンクが表示される&lt;/li&gt;
&lt;li&gt;「もっと見る」ボタンを押下すると、10件目以降の全てのデータのリンクも表示される&lt;/li&gt;
&lt;li&gt;データのリンクを押下すると詳細ページに遷移する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ルートが生成されてないページというのは、&lt;strong&gt;全て10件目以降のデータの詳細ページ&lt;/strong&gt;だということが分かりました。&lt;/p&gt;
&lt;p&gt;この「もっと読む」ボタンを押下して残りのデータを表示する処理は JavaScript で State を変えて出し分けしているだけで、リンクを介してページ遷移しているわけでありません。&lt;/p&gt;
&lt;p&gt;リンクを介して遷移する通常のページネーションなどであれば自動クロールしてくれるはずですが、今回みたいなボタンを押すと JavaScript が走って初めて表示されるようなリンクは自動クロールされないと思われるので注意が必要です。&lt;/p&gt;
&lt;p&gt;例えば無限スクロールなども普通に実装すると最初に表示されていないリンクは検出されないはず。&lt;/p&gt;
&lt;h2&gt;対応&lt;/h2&gt;
&lt;p&gt;原因が特定できたので、2つの方向性で対応を考えました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;自動クロールされるように実装を変える&lt;/li&gt;
&lt;li&gt;自分でルートを追加する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1 は自動クロールされるためだけに実装変えるのも気持ち悪いなと思い却下。
2 の方法で対応することにしました。&lt;/p&gt;
&lt;h3&gt;nuxt.config.js を編集してルートを追加&lt;/h3&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;generate.routes&lt;/code&gt; プロパティを使って、自分でルートを追加することが出来ます。&lt;/p&gt;
&lt;p&gt;nuxt.config.js&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;public&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; $content &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;@nuxt/content&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; files &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;$content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;post&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;slug&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; files&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;/post/&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;file&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;slug&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;シンプルにルートの文字列が入った配列を設定しているだけですね。&lt;/p&gt;
&lt;p&gt;ちなみに &lt;code class=&quot;language-text&quot;&gt;generate.crawler&lt;/code&gt; プロパティに &lt;code class=&quot;language-text&quot;&gt;false&lt;/code&gt; を設定するとクローラー自体を無効化することも出来ます。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;crawler&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;最後に&lt;/h2&gt;
&lt;p&gt;以上、Nuxt を使って SSG してちょっとハマったところでした。
自動クロールは便利だなぁと思いましたが、場合によってはクロールしてくれないことがあるので注意が必要ですね。&lt;/p&gt;
&lt;p&gt;余談ですが、今回初めてちゃんと Vue と Nuxt を触ってみて、 React が出来れば Vue も割と何とかなるという実感が得られたので収穫でした。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Gatsby v3に移行しました]]></title><description><![CDATA[遅ればせながらこのサイトをGatsby v3に移行しました。]]></description><link>https://beyooon.jp/blog/gatsby-v3/</link><guid isPermaLink="false">https://beyooon.jp/blog/gatsby-v3/</guid><pubDate>Tue, 04 May 2021 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;このサイトは Gatsby という静的サイトジェネレータで作っています。
Gatsby は2021年3月に v3.0 がリリースされているので、遅ればせながらこのサイトを Gatsby v3 に移行しました。&lt;/p&gt;
&lt;p&gt;基本的に公式の移行ガイドを参考に行います。
&lt;a href=&quot;https://www.gatsbyjs.com/docs/reference/release-notes/migrating-from-v2-to-v3/#yarn&quot;&gt;Migrating from v2 to v3 | Gatsby&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Version差分&lt;/h2&gt;
&lt;p&gt;下記コマンドで古いパッケージをリスト表示出来ます。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; outdated&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;Package                          Current Wanted  Latest  Package Type    URL
@emotion/core                    &lt;span class=&quot;token number&quot;&gt;10.1&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;10.1&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;11.0&lt;/span&gt;.0  dependencies    https://github.com/emotion-js/emotion/tree/master/removed-packages/core
@emotion/styled                  &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;.27 &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;.27 &lt;span class=&quot;token number&quot;&gt;11.3&lt;/span&gt;.0  dependencies    https://github.com/emotion-js/emotion/tree/main/packages/styled
@types/react-helmet              &lt;span class=&quot;token number&quot;&gt;6.1&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;6.1&lt;/span&gt;.1   &lt;span class=&quot;token number&quot;&gt;6.1&lt;/span&gt;.1   dependencies    https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/yup                       &lt;span class=&quot;token number&quot;&gt;0.29&lt;/span&gt;.10 &lt;span class=&quot;token number&quot;&gt;0.29&lt;/span&gt;.11 &lt;span class=&quot;token number&quot;&gt;0.29&lt;/span&gt;.11 dependencies    https://github.com/DefinitelyTyped/DefinitelyTyped.git
@typescript-eslint/eslint-plugin &lt;span class=&quot;token number&quot;&gt;4.9&lt;/span&gt;.1   &lt;span class=&quot;token number&quot;&gt;4.22&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.22&lt;/span&gt;.0  devDependencies https://github.com/typescript-eslint/typescript-eslint&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
@typescript-eslint/parser        &lt;span class=&quot;token number&quot;&gt;4.9&lt;/span&gt;.1   &lt;span class=&quot;token number&quot;&gt;4.22&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.22&lt;/span&gt;.0  devDependencies https://github.com/typescript-eslint/typescript-eslint&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
axios                            &lt;span class=&quot;token number&quot;&gt;0.21&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;0.21&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;0.21&lt;/span&gt;.1  dependencies    https://github.com/axios/axios
emotion-theming                  &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;.27 &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;.27 &lt;span class=&quot;token number&quot;&gt;11.0&lt;/span&gt;.0  dependencies    https://emotion.sh
eslint                           &lt;span class=&quot;token number&quot;&gt;7.15&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;7.25&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;7.25&lt;/span&gt;.0  devDependencies https://eslint.org
eslint-config-prettier           &lt;span class=&quot;token number&quot;&gt;6.15&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;6.15&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;8.3&lt;/span&gt;.0   devDependencies https://github.com/prettier/eslint-config-prettier&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
eslint-plugin-flowtype           &lt;span class=&quot;token number&quot;&gt;5.2&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;5.7&lt;/span&gt;.2   &lt;span class=&quot;token number&quot;&gt;5.7&lt;/span&gt;.2   devDependencies https://github.com/gajus/eslint-plugin-flowtype&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
eslint-plugin-prettier           &lt;span class=&quot;token number&quot;&gt;3.2&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   devDependencies https://github.com/prettier/eslint-plugin-prettier&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
eslint-plugin-react              &lt;span class=&quot;token number&quot;&gt;7.21&lt;/span&gt;.5  &lt;span class=&quot;token number&quot;&gt;7.23&lt;/span&gt;.2  &lt;span class=&quot;token number&quot;&gt;7.23&lt;/span&gt;.2  devDependencies https://github.com/yannickcr/eslint-plugin-react
formik                           &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.5   &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.6   &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.6   dependencies    https://formik.org
gatsby                           &lt;span class=&quot;token number&quot;&gt;2.28&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;2.32&lt;/span&gt;.12 &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-image                     &lt;span class=&quot;token number&quot;&gt;2.7&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.11&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-image&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-emotion            &lt;span class=&quot;token number&quot;&gt;4.5&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;4.5&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;6.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-emotion&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-eslint             &lt;span class=&quot;token number&quot;&gt;2.0&lt;/span&gt;.8   &lt;span class=&quot;token number&quot;&gt;2.0&lt;/span&gt;.8   &lt;span class=&quot;token number&quot;&gt;3.0&lt;/span&gt;.0   devDependencies https://github.com/mongkuen/gatsby-plugin-eslint
gatsby-plugin-feed               &lt;span class=&quot;token number&quot;&gt;2.9&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.13&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-feed&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-google-analytics   &lt;span class=&quot;token number&quot;&gt;2.7&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.11&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-google-analytics&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-manifest           &lt;span class=&quot;token number&quot;&gt;2.8&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.12&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-manifest&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-offline            &lt;span class=&quot;token number&quot;&gt;3.6&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.10&lt;/span&gt;.2  &lt;span class=&quot;token number&quot;&gt;4.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-offline&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-react-helmet       &lt;span class=&quot;token number&quot;&gt;3.6&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.10&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-react-helmet&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-sharp              &lt;span class=&quot;token number&quot;&gt;2.10&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;2.14&lt;/span&gt;.3  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-sharp&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-sitemap            &lt;span class=&quot;token number&quot;&gt;2.8&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.12&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.0&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-sitemap&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-plugin-typegen            &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.1   &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.4   &lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;.4   dependencies    https://www.gatsbyjs.org/packages/gatsby-plugin-typegen/
gatsby-plugin-typescript         &lt;span class=&quot;token number&quot;&gt;2.8&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.12&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   devDependencies https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-typescript&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-remark-copy-linked-files  &lt;span class=&quot;token number&quot;&gt;2.6&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.10&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-copy-linked-files&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-remark-images             &lt;span class=&quot;token number&quot;&gt;3.7&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.11&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;5.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-images&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-remark-prismjs            &lt;span class=&quot;token number&quot;&gt;3.9&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;3.13&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;5.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-prismjs&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-remark-responsive-iframe  &lt;span class=&quot;token number&quot;&gt;2.7&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.11&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-responsive-iframe&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-remark-smartypants        &lt;span class=&quot;token number&quot;&gt;2.6&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.10&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;4.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-remark-smartypants&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-source-filesystem         &lt;span class=&quot;token number&quot;&gt;2.7&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.11&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-filesystem&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-transformer-remark        &lt;span class=&quot;token number&quot;&gt;2.12&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;2.16&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;4.1&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-transformer-remark&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
gatsby-transformer-sharp         &lt;span class=&quot;token number&quot;&gt;2.8&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;2.12&lt;/span&gt;.1  &lt;span class=&quot;token number&quot;&gt;3.4&lt;/span&gt;.0   dependencies    https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-transformer-sharp&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
moment-timezone                  &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;.32  &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;.33  &lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;.33  dependencies    http://momentjs.com/timezone/
prismjs                          &lt;span class=&quot;token number&quot;&gt;1.22&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;1.23&lt;/span&gt;.0  &lt;span class=&quot;token number&quot;&gt;1.23&lt;/span&gt;.0  dependencies    https://github.com/PrismJS/prism&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
react                            &lt;span class=&quot;token number&quot;&gt;16.14&lt;/span&gt;.0 &lt;span class=&quot;token number&quot;&gt;16.14&lt;/span&gt;.0 &lt;span class=&quot;token number&quot;&gt;17.0&lt;/span&gt;.2  dependencies    https://reactjs.org/
react-dom                        &lt;span class=&quot;token number&quot;&gt;16.14&lt;/span&gt;.0 &lt;span class=&quot;token number&quot;&gt;16.14&lt;/span&gt;.0 &lt;span class=&quot;token number&quot;&gt;17.0&lt;/span&gt;.2  dependencies    https://reactjs.org/
react-share                      &lt;span class=&quot;token number&quot;&gt;4.3&lt;/span&gt;.1   &lt;span class=&quot;token number&quot;&gt;4.4&lt;/span&gt;.0   &lt;span class=&quot;token number&quot;&gt;4.4&lt;/span&gt;.0   dependencies    https://github.com/nygardk/react-share&lt;span class=&quot;token comment&quot;&gt;#readme&lt;/span&gt;
typescript                       &lt;span class=&quot;token number&quot;&gt;4.1&lt;/span&gt;.2   &lt;span class=&quot;token number&quot;&gt;4.2&lt;/span&gt;.4   &lt;span class=&quot;token number&quot;&gt;4.2&lt;/span&gt;.4   devDependencies https://www.typescriptlang.org/
yup                              &lt;span class=&quot;token number&quot;&gt;0.32&lt;/span&gt;.6  &lt;span class=&quot;token number&quot;&gt;0.32&lt;/span&gt;.9  &lt;span class=&quot;token number&quot;&gt;0.32&lt;/span&gt;.9  dependencies    https://github.com/jquense/yup&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;とりあえず全部 Latest にしました。
下記コマンドでリスト化しつつアップデートするパッケージを選択できるので便利。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; upgrade-interactive &lt;span class=&quot;token parameter variable&quot;&gt;--latest&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;エラーつぶし&lt;/h2&gt;
&lt;p&gt;Latest にするだけだとエラーだらけなので、一つずつ潰していきます。&lt;/p&gt;
&lt;h3&gt;gatsby-image を gatsby-plugin-image に移行&lt;/h3&gt;
&lt;p&gt;公式の移行ガイドを参考に
&lt;a href=&quot;https://www.gatsbyjs.com/docs/reference/release-notes/image-migration-guide/#how-to-migrate&quot;&gt;Migrate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;パッケージをインストール&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; gatsby-plugin-image gatsby-plugin-sharp gatsby-transformer-sharp&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;gatsby-config.jsを修正&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;gatsby-plugin-image&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;gatsby-plugin-sharp&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;gatsby-transformer-sharp&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;移行用のコマンドが用意されているので実行。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ npx gatsby-codemods gatsby-plugin-image&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;基本的にこれでエラーが出なくなればそれで問題ないと思いますが、自分の場合は TypeScript のエラーが出ていたので対処。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Property &apos;fluid&apos; does not exist on type &apos;Pick&amp;lt;ImageSharp, &quot;gatsbyImageData&quot;&gt;&apos;.&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; getSrc &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;gatsby-plugin-image&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 中略&lt;/span&gt;
      &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;SEO&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;         image&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;           post&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;frontmatter&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;image&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;childImageSharp&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;fluid
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;             &lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;src
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;         &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;         &lt;span class=&quot;token comment&quot;&gt;// @ts-ignore&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;         image&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getSrc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;post&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;frontmatter&lt;span class=&quot;token operator&quot;&gt;?.&lt;/span&gt;image&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;はい。&lt;code class=&quot;language-text&quot;&gt;@ts-ignore&lt;/code&gt;でエラー無視しましたw
&lt;code class=&quot;language-text&quot;&gt;getSrc&lt;/code&gt;を使って画像のsrcは取得出来るようでしたが、この引数の部分で再びTypeScriptエラー。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Argument of type &apos;Maybe&amp;lt;{ readonly childImageSharp: Maybe&amp;lt;Pick&amp;lt;ImageSharp, &quot;gatsbyImageData&quot;&gt;&gt;; }&gt;&apos; is not assignable to parameter of type &apos;ImageDataLike&apos;.
  Type &apos;undefined&apos; is not assignable to type &apos;ImageDataLike&apos;.&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ここは&lt;code class=&quot;language-text&quot;&gt;gatsby-plugin-typegen&lt;/code&gt;が型を自動生成してくれてる部分なので v3 対応してくれるまで待ちます。&lt;/p&gt;
&lt;h2&gt;emotion 関係&lt;/h2&gt;
&lt;p&gt;CSS in JS ライブラリですね&lt;/p&gt;
&lt;h3&gt;@emotion/core が @emotion/react に統合&lt;/h3&gt;
&lt;p&gt;まずはパッケージの加除&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; remove @emotion/core
$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; @emotion/react&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;コードの修正&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Global &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/core&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Global &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/react&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; css &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/core&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; css &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/react&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;emotion-theming が @emotion/react に統合され、Theme の型定義がシンプルに行えるように&lt;/h3&gt;
&lt;p&gt;更新前は styled コンポーネント内で&lt;code class=&quot;language-text&quot;&gt;props.theme&lt;/code&gt;を使う場合 props が暗黙の any になってしまうのを防ぐために、
emotion の styled をラップしたコンポーネントを使って型定義を行っていましたが、更新後は型定義ファイルを作るだけで事足りるようになっていました。
&lt;a href=&quot;https://emotion.netlify.app/docs/typescript#define-a-theme&quot;&gt;Emotion - TypeScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;まずはパッケージの削除。（@emotion/react は install 済み）&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-shell line-numbers&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;$ &lt;span class=&quot;token function&quot;&gt;yarn&lt;/span&gt; remove emotion-theming&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;src/types に emotion.d.ts を追加。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/react&apos;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Theme &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; MyTheme&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;./index&apos;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;declare&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;module&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/react&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Theme&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyTheme&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ソースコードの修正。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; ThemeProvider &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; EmotionProvider &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;emotion-theming&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; ThemeProvider &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; EmotionProvider &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/react&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;tsx&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-tsx line-numbers&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; styled &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;../atoms/styled&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; styled &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;@emotion/styled&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;src/components/atoms/styled.tsx が emotion の styled をラップしているコンポーネントで最早不要なため削除。&lt;/p&gt;
&lt;h2&gt;eslint-config-prettier 関係&lt;/h2&gt;
&lt;p&gt;v8.0.0 で全ての設定が prettier に統合されているみたい。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Error: &quot;prettier/@typescript-eslint&quot; has been merged into &quot;prettier&quot; in eslint-config-prettier 8.0.0.
Error: &quot;prettier/react&quot; has been merged into &quot;prettier&quot; in eslint-config-prettier 8.0.0.&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;eslintrc.js の修正。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;path&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;browser&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;es6&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;eslint:recommended&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;eslint-config-react-app&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;plugin:react/recommended&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;plugin:jsx-a11y/recommended&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;plugin:@typescript-eslint/eslint-recommended&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;plugin:prettier/recommended&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;   &lt;span class=&quot;token string&quot;&gt;&apos;prettier/@typescript-eslint&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;   &lt;span class=&quot;token string&quot;&gt;&apos;prettier/react&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;   &lt;span class=&quot;token string&quot;&gt;&apos;prettier&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 中略&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;これで全てのエラーを潰しました。&lt;/p&gt;
&lt;h2&gt;最後に&lt;/h2&gt;
&lt;p&gt;Gatsby v3 に無事移行できました。
途中からは Gatsby v3 への移行というより、他のパッケージの更新に伴うエラーつぶしでしたがw&lt;/p&gt;
&lt;p&gt;v3 での新機能は主に大規模サイトでのローカル開発の高速化やビルド時間の短縮、パフォーマンス改善のようですが、基本的にメリットしかなさそうなので移行できて良かったです。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[個人事業主になったので事業用のWebサイト作った]]></title><description><![CDATA[フリーランス（個人事業主）として活動していくにあたり、事業用のWebサイトを作りました。]]></description><link>https://beyooon.jp/blog/hello-world/</link><guid isPermaLink="false">https://beyooon.jp/blog/hello-world/</guid><pubDate>Tue, 08 Dec 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;フリーランス（個人事業主）として活動していくにあたり、屋号ドメインで事業用のWebサイトを作りました。
技術的な発信などもこちらで行っていく予定です。&lt;/p&gt;
&lt;p&gt;URLをのせた名刺はかなり前に完成していたので、やっと名刺を完全体にすることが出来ましたw&lt;/p&gt;
&lt;h2&gt;事業の屋号はbeyooon（ビヨーン）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;前向きな印象&lt;/li&gt;
&lt;li&gt;遊び心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった要素を屋号に盛り込みたいなと思い、バネが伸びるイメージで**「beyooon（ビヨーン）」**と付けました。
響きに遊び心もあってなかなか気に入ってます。
「～を越えて」といった意味で英単語のbeyondともかけています。&lt;/p&gt;
&lt;p&gt;遊び心や好奇心を大切にしながら、「びよ〜ん」と日々前に進んでいきたいと思います。&lt;/p&gt;
&lt;h2&gt;Web制作やアプリ開発を中心に活動&lt;/h2&gt;
&lt;p&gt;新しい技術を使ってチャレンジングに活動していきたいと考えています。&lt;/p&gt;
&lt;p&gt;具体的には、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;静的サイトジェネレーターを使った爆速Web制作（このサイトがそうです）&lt;/li&gt;
&lt;li&gt;Flutterを使ったiOS/Androidアプリケーション開発&lt;/li&gt;
&lt;li&gt;Laravelを使ったWebアプリケーション開発&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を中心に行っていきたいと考えています。&lt;/p&gt;
&lt;p&gt;これらに興味のある方や仕事を頼みたい方は&lt;a href=&quot;/contact&quot;&gt;お問い合わせ&lt;/a&gt;から連絡をいただければ嬉しいです。&lt;/p&gt;
&lt;p&gt;仕事ください。（切実）&lt;/p&gt;
&lt;h2&gt;このWebサイトでこだわったところ&lt;/h2&gt;
&lt;h3&gt;Gatsby製の爆速サイト&lt;/h3&gt;
&lt;p&gt;このサイトはReactの静的サイトジェネレーターであるGatsbyという技術を使って作りました。
技術的な詳しい部分は他の記事で紹介したいと思いますが、Web制作で主流となっているサーバーにWordPressをインストールする方法と比べて、&lt;strong&gt;高速かつセキュリティーも高い&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;こちらはWebサイトをGoogleが評価してくれるLighthouseの結果ですが、このWebサイトは&lt;strong&gt;全ての項目で満点&lt;/strong&gt;を取れました。（パフォーマンスはタイミングによって若干変動します）&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/cea9441f55496045969f8985491e9c39/2dc7d/lighthouse.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.5625%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAABFUlEQVQY002Pz07CQBCHeQ5b2v3TbrvdLQs0AQoFjBiMGg8mHowe9Am8e/HiW/iyn2kTCIdvMpPM78vMSAqBUJL4fkb0vkIIQbK0XH20+Jsl3nni1yXRw2zYS45T4reWcaUIPvD1/Uu764ijCKUUo16QaY27XeCe1uR5TtHUTF52dMc9h8M1s+c91WFBpjTZJlA+rkhUSpjM+fz5Y3t3ZBxFyLMwy5j4muBrClNgi5Jm3tC1Het2TTOfU1ce3QuVxltHmiSEENhuWmZhSioEUkpGfRneTJIBIVKSNEVLQVlaTCZwNkcbQ2YNzjmEFEOmz+bGoLU+z6NTc4mQEqMVtrRUZcbElRTWklcFtfcorQbBJafD/gExRJXJqI7/JQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;LightHouse&quot;
        title=&quot;LightHouse&quot;
        src=&quot;/static/cea9441f55496045969f8985491e9c39/e5715/lighthouse.png&quot;
        srcset=&quot;/static/cea9441f55496045969f8985491e9c39/8514f/lighthouse.png 192w,
/static/cea9441f55496045969f8985491e9c39/804b2/lighthouse.png 384w,
/static/cea9441f55496045969f8985491e9c39/e5715/lighthouse.png 768w,
/static/cea9441f55496045969f8985491e9c39/4ad3a/lighthouse.png 1152w,
/static/cea9441f55496045969f8985491e9c39/71c1d/lighthouse.png 1536w,
/static/cea9441f55496045969f8985491e9c39/2dc7d/lighthouse.png 1760w&quot;
        sizes=&quot;(max-width: 768px) 100vw, 768px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;前々からこの構成で作ってみたかったので、やっと実現できました。&lt;/p&gt;
&lt;h3&gt;ダークモードの切替&lt;/h3&gt;
&lt;p&gt;右上のメニューバーの切替ボタンからダークモードを切り替えることが出来るようにしました。
（右上にボタンがない場合は上に少しスクロールするとヌルッとメニューバーが現れると思います）&lt;/p&gt;
&lt;p&gt;バッテリー消費が気になる方などはぜひダークモードに切り替えてもらえればと思います。&lt;/p&gt;
&lt;h3&gt;機能はさらに充実させていく予定&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;制作実績ページ&lt;/li&gt;
&lt;li&gt;全文検索&lt;/li&gt;
&lt;li&gt;ブログをカテゴリーで絞り込み&lt;/li&gt;
&lt;li&gt;ブログをタグで絞り込み&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などなど追加したい事がまだあるので、徐々に作り込んでいくつもりです。&lt;/p&gt;
&lt;h2&gt;最後に&lt;/h2&gt;
&lt;p&gt;技術的な知見や事業に関係すること、その他雑記などこちらで発信していきたいと思いますので、今後ともよろしくお願いします。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Markdownチートシート]]></title><description><![CDATA[自分用のMarkdownチートシート。]]></description><link>https://beyooon.jp/blog/markdown-cheatsheet/</link><guid isPermaLink="false">https://beyooon.jp/blog/markdown-cheatsheet/</guid><pubDate>Sun, 06 Dec 2020 08:40:32 GMT</pubDate><content:encoded>&lt;p&gt;自分用のMarkdownチートシートです。
アイキャッチ画像は適当。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;見出し&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;## 見出し h2
### 見出し h3
#### 見出し h4&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;見出し h2&lt;/h2&gt;
&lt;h3&gt;見出し h3&lt;/h3&gt;
&lt;h4&gt;見出し h4&lt;/h4&gt;
&lt;p&gt;h5以降はスタイルを設定していないので使わない。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;リスト&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;- 普通のリスト
- 普通のリスト
- 普通のリスト
  - 普通のリスト
  - 普通のリスト&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;普通のリスト&lt;/li&gt;
&lt;li&gt;普通のリスト&lt;/li&gt;
&lt;li&gt;普通のリスト
&lt;ul&gt;
&lt;li&gt;普通のリスト&lt;/li&gt;
&lt;li&gt;普通のリスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;1. 数字のリスト
2. 数字のリスト
3. 数字のリスト
4. 数字のリスト
5. 数字のリスト&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;数字のリスト&lt;/li&gt;
&lt;li&gt;数字のリスト&lt;/li&gt;
&lt;li&gt;数字のリスト&lt;/li&gt;
&lt;li&gt;数字のリスト&lt;/li&gt;
&lt;li&gt;数字のリスト&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2&gt;インラインテキスト装飾&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;*イタリック*になる
**太字**になる
~~打ち消し線~~
インラインで`code`を挿入する
[Twitter](https://twitter.com/hideyuk1_jp)&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;イタリック&lt;/em&gt;になる&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;太字&lt;/strong&gt;になる&lt;/p&gt;
&lt;p&gt;&lt;del&gt;打ち消し線&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;インラインで&lt;code class=&quot;language-text&quot;&gt;code&lt;/code&gt;を挿入する&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/hideyuk1_jp&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;テーブル&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;| Head | Head | Head |
| ---- | ---- | ---- |
| Text | Text | Text |
| Text | Text | Text |&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Head&lt;/th&gt;
&lt;th&gt;Head&lt;/th&gt;
&lt;th&gt;Head&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2&gt;コード&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;
&lt;pre class=&quot;language-text&quot;&gt;
&lt;code class=&quot;language-text&quot;&gt;
```js:title=hoge.js
const hoge = &apos;hoge&apos;;
console.log(hoge);
```
&lt;/code&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;gatsby-code-title&quot;&gt;hoge.js&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-js line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; hoge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;hoge&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hoge&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;画像&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;![sampleAlt](./thumbnail.jpg)&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/e1596/thumbnail.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMB/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAEEBf/aAAwDAQACEAMQAAABgik0dWC//8QAGRABAAMBAQAAAAAAAAAAAAAAAQACERJC/9oACAEBAAEFAkqW7B5Zovtvk//EABcRAQADAAAAAAAAAAAAAAAAAAAREkH/2gAIAQMBAT8B1WX/xAAWEQEBAQAAAAAAAAAAAAAAAAAAESL/2gAIAQIBAT8BjT//xAAbEAABBAMAAAAAAAAAAAAAAAAAAQIRISIxMv/aAAgBAQAGPwK9GNocyS8hCj//xAAaEAADAQEBAQAAAAAAAAAAAAAAAREhQYGx/9oACAEBAAE/IXOrA43oOyg9wgU86OZMfwZKypT/2gAMAwEAAgADAAAAEMjv/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxARwyusv//EABcRAQEBAQAAAAAAAAAAAAAAAAEAIVH/2gAIAQIBAT8QOoVoX//EAB0QAQEAAgIDAQAAAAAAAAAAAAERADFhgSFB0eH/2gAIAQEAAT8QSpwaGjrBSrtHyF9iY8RpUnGRBGqtOcsiDE6fM3AgiXf5M//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;sampleAlt&quot;
        title=&quot;sampleAlt&quot;
        src=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/212bf/thumbnail.jpg&quot;
        srcset=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/7809d/thumbnail.jpg 192w,
/static/8058f3f26913fea3b6a89a73344fe94a/4ecad/thumbnail.jpg 384w,
/static/8058f3f26913fea3b6a89a73344fe94a/212bf/thumbnail.jpg 768w,
/static/8058f3f26913fea3b6a89a73344fe94a/5ef17/thumbnail.jpg 1152w,
/static/8058f3f26913fea3b6a89a73344fe94a/ac99c/thumbnail.jpg 1536w,
/static/8058f3f26913fea3b6a89a73344fe94a/e1596/thumbnail.jpg 2048w&quot;
        sizes=&quot;(max-width: 768px) 100vw, 768px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;引用&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&gt; 文頭に&gt;を書くと引用になる
&gt; 複数行にまたがる場合は、全ての行の文頭に&gt;を書く
&gt; &gt; ネストも
&gt; &gt; 出来るよ&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;文頭に&gt;を書くと引用になる
複数行にまたがる場合は、全ての行の文頭に&gt;を書く&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;入れ子にも
出来るよ&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2&gt;水平線&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre style=&quot;counter-reset: linenumber NaN&quot; class=&quot;language-text line-numbers&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;------&lt;/code&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;line-numbers-rows&quot; style=&quot;white-space: normal; width: auto; left: 0;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;</content:encoded></item></channel></rss>