<feed xmlns="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/">
	<title>List of Site [text.Baldanders.info]</title>
	<link rel="alternate" type="text/html" href="https://text.baldanders.info/tags/site/" />
	<link rel="self" type="application/atom+xml" href="https://text.baldanders.info/tags/site/index.xml" />
	<id>tag:text.Baldanders.info,2026-05-27:/tags</id>
	<updated>2026-05-27T16:01:18+09:00</updated>
	<subtitle>帰ってきた「しっぽのさきっちょ」</subtitle>
	<icon>https://text.baldanders.info/images/avatar.jpg</icon>
	<logo>https://text.baldanders.info/images/avatar.jpg</logo>

	<entry>
		<title>Hugo v0.162.0 がリリースされた【Security fix あり】</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/release/2026/05/hugo-v0_162_0-is-released/" />
		<id>tag:text.Baldanders.info,2026-05-27:/release/2026/05/hugo-v0_162_0-is-released/</id>
		<published>2026-05-27T07:01:18+00:00</published>
		<updated>2026-05-27T07:15:01+00:00</updated>
		<summary>このバージョンから既定で HTML フォーマットの入力ファイルを拒否するようになった。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; v0.162.0 がリリースされた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/gohugoio/hugo/releases/tag/v0.162.0&#34; target=&#34;_blank&#34;&gt;Release v0.162.0 · gohugoio/hugo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34;&gt;Go&lt;/a&gt; コンパイラおよび関連パッケージのセキュリティ・アップデートがあるのはいつものことなのだが，今回は注意すべき修正がある。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://github.com/gohugoio/hugo/releases/tag/v0.162.0&#34;&gt;&lt;p&gt;&lt;strong&gt;Security fixes and hardening in Hugo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following changes either fix a concrete issue or reduce the default attack surface of &lt;code&gt;hugo&lt;/code&gt; builds.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disallow &lt;code&gt;text/html&lt;/code&gt; content files by default (&lt;a href=&#34;https://github.com/gohugoio/hugo/commit/e41a06447d&#34; target=&#34;_blank&#34;&gt;e41a064&lt;/a&gt;). A new &lt;code&gt;security.allowContent&lt;/code&gt; policy gates which content media types may be used for pages under &lt;code&gt;/content&lt;/code&gt;. &lt;code&gt;text/html&lt;/code&gt; is denied by default; sites that rely on hand-authored or adapter-emitted HTML content can opt back in with &lt;code&gt;security.allowContent = [&#39;.*&#39;]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Re-check &lt;code&gt;security.http.urls&lt;/code&gt; on every redirect hop in &lt;code&gt;resources.GetRemote&lt;/code&gt; (&lt;a href=&#34;https://github.com/gohugoio/hugo/commit/86fbb0f7a8&#34; target=&#34;_blank&#34;&gt;86fbb0f&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Reject symlinked entries in &lt;code&gt;resources.Get&lt;/code&gt; (&lt;a href=&#34;https://github.com/gohugoio/hugo/commit/f8b5fa09a6&#34; target=&#34;_blank&#34;&gt;f8b5fa0&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://github.com/gohugoio/hugo/releases/tag/v0.162.0&#34;&gt;Release v0.162.0 · gohugoio/hugo&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;このうち，最初の項目にまんまと引っかかった。
こんな感じ：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ERROR error building site: assemble: failed to create page from pageMetaSource 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/remark/2015/gnupg-2-1-8: &amp;#34;/path/to/content/remark/2015/gnupg-2-1-8.html:1:1&amp;#34;: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;access denied: &amp;#34;text/html&amp;#34; is not whitelisted in policy &amp;#34;security.allowContent&amp;#34;; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the current security configuration is:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[security]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  allowContent = [&amp;#39;! ^text/html$&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  enableInlineShortcodes = false
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;どうも既定では HTML ファイルを拒否する設定になったらしい。
それならば HTML を許可すればいいだろうと， “&lt;code&gt;!&lt;/code&gt;” を取って&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;security&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;allowContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;^text/html$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;と &lt;code&gt;hugo.toml&lt;/code&gt; に書いたら markdown ファイルが全拒否になってしまった（笑）。HTML と markdown のみを許可するには&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;security&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;allowContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;^text/markdown$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;^text/html$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;などとする必要がある。
ちなみに &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; では&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://gohugo.io/content-management/formats/&#34;&gt;Create your content using Markdown, HTML, Emacs Org Mode, AsciiDoc, Pandoc, or reStructuredText.&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://gohugo.io/content-management/formats/&#34;&gt;Content formats&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;と多様なフォーマットに対応している。
この中で HTML 形式を受け入れるのは（malware を埋め込まれたりとか）リスクが高いと判断して安全側に倒したものと思われる。
実運用では &lt;code&gt;security.allowContent&lt;/code&gt; に，実際に使用するドキュメントフォーマットのみを列挙するのが正しいのだろう。&lt;/p&gt;
&lt;p&gt;エラーの出た &lt;code&gt;gnupg-2-1-8.html&lt;/code&gt; はこのブログにおける&lt;a href=&#34;https://text.baldanders.info/remark/2015/gnupg-2-1-8/&#34; target=&#34;_blank&#34; title=&#34;GnuPG 2.1.8 released&#34;&gt;最初の記事&lt;/a&gt;で，元々は Movable Type 用に書いた記事で「そのまま読み込ませてコンパイルできるかなぁ」と試してみた記事だった。
記事本文の HTML 記述はともかく front matter を整えるのが面倒くさそうなので旧ブログからの移行は諦めたが。
今なら変換ツールを AI に書かせたんだろうなぁ（笑）&lt;/p&gt;
&lt;p&gt;最近は GitHub Copilot に &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; のアップデートと redeploy をさせているのだが，今回の障害の分析と対処はすべてお任せで作業を完遂できた。
「Hugo のマイナーバージョンアップは問題が出やすいから気をつけて」と指示に添えたのが功を奏したようだ。
自力でやったら悩みまくって，&lt;a href=&#34;https://gohugo.io/documentation/&#34; target=&#34;_blank&#34; title=&#34;Hugo Documentation&#34;&gt;ドキュメント&lt;/a&gt;を調べまくって30分くらい時間を無駄にしてただろう。
いい時代になったものである。&lt;/p&gt;
</content>
	</entry><entry>
		<title>GitHub Copilot はシェル芸達者</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/04/github-copilot-shell-wizardry/" />
		<id>tag:text.Baldanders.info,2026-04-09:/remark/2026/04/github-copilot-shell-wizardry/</id>
		<published>2026-04-09T06:57:34+00:00</published>
		<updated>2026-04-09T07:38:08+00:00</updated>
		<summary>GitHub Copilot に少しずつ仕事を振ってみたら，記事の下ごしらえからタグ整理，デプロイ，Hugo 更新まで思った以上に任せられた話。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;最初に予防線を張っておくと，この記事は技術系の内容ではありませんし，私は生成 AI の扱いにも慣れてません。
その辺を割り引いて読んでいただけるとありがたいです。&lt;/p&gt;
&lt;h2&gt;生成 AI にどこまで任せていいのか&lt;/h2&gt;
&lt;p&gt;最近は GitHub Copilot に開発支援だけじゃなくて，このブログのメンテナンスもさせている。
なにせ，どこまで任せていいのか匙加減がさっぱり分からないので，できそうなところから徐々に任せていく感じ。
気分は新卒社会人の OJT だぜ（笑）&lt;/p&gt;
&lt;p&gt;今のところ GitHub Copilot に任せているのは以下の作業：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;タイトル &amp;amp; slug の提案と記事ファイルの作成&lt;/li&gt;
&lt;li&gt;書いた記事の校正とタグの提案&lt;/li&gt;
&lt;li&gt;記事ファイルの commit &amp;amp; push&lt;/li&gt;
&lt;li&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; の更新&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;記事そのものは書かせてない。&lt;/p&gt;
&lt;p&gt;いや，生成 AI に書かせるとホンマに好き勝手な（私の意図とは程遠い）ことを書くのよ。
一度，タイトルだけ決めたまっさらな状態で書かせようとしたら「何の論文を書く気？」って感じのアウトラインを組み始めて，さすがに止めた。
ブログ記事に10個も章立てしてどうする（笑）&lt;/p&gt;
&lt;p&gt;よくアフィリエイト記事を AI に書かせて云々みたいな話を聞くけど，ホンマに AI に書かせてるの？ かなり無茶苦茶するぞ。
ある意味，文才があるのかも知れないが。&lt;/p&gt;
&lt;p&gt;というわけで「記事を書く」以外の作業をやらせている。&lt;/p&gt;
&lt;p&gt;ちなみにモデルは GPT-5.3-Codex を使っている。
あまり Premium Request を消費したくないので最初は GPT-5 mini を使ってたのだが，どうもこの手の「作業」には向かない感じ。
最終的にはローカル LLM を構築したいのだが，お試しレベルならともかく，まともに動くモデルを個人環境で構築するのは難しいか？&lt;/p&gt;
&lt;h2&gt;タイトル &amp;amp; slug の提案と記事ファイルの作成&lt;/h2&gt;
&lt;p&gt;私は最初にタイトルを決めないとブログ記事が書けない。
マイクロブログ程度の短文ならともかく，ブログ記事でタイトルも決めずに書き始めると大抵記事が迷走する（タイトルを決めて書いても迷走しがちなのだが，それはそれ）。&lt;/p&gt;
&lt;p&gt;手順としては&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;日本語のタイトルを決める（ここだけ私の作業）&lt;/li&gt;
&lt;li&gt;Copilot に英語の翻訳と対応する slug を提案させる（たいてい複数個の候補を提案してくれる）&lt;/li&gt;
&lt;li&gt;slug が決まったら記事ファイルを作成させる&lt;/li&gt;
&lt;li&gt;ファイル内の front matter を埋めさせる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という感じ。
日本語タイトルを英訳させるための対話で，色々と気付きがあって面白い。&lt;/p&gt;
&lt;p&gt;たとえば日本語タイトルが曖昧で英訳が頓珍漢な文になることがある。
これは生成 AI 以前の機械翻訳サービスを使ってたときもそうだったが，機械と対話することで「文のこの部分が誤解を招いてるのか」と気づいたりできるわけだ。
こういったやり取りが意外と面白かったりする。&lt;/p&gt;
&lt;p&gt;記事ファイルの作成用にシェルスクリプトを組んでいるのだが，まずその挙動を理解させるところから始めた。
したら「このスクリプトをリファクタリングするか？」と訊いてきたのでやらせてみたら，なかなかいい感じに仕上げてくれた。
これなら AI にスクリプトを改善させることもできそうだ。&lt;/p&gt;
&lt;p&gt;他の既存のスクリプトについても同様にリファクタリングさせ，それらの使い方を &lt;code&gt;copilot-instructions.md&lt;/code&gt; および &lt;code&gt;README.md&lt;/code&gt; にまとめさせた。&lt;/p&gt;
&lt;h2&gt;書いた記事の校正とタグの提案&lt;/h2&gt;
&lt;p&gt;私のブログは意図的に文体を崩して書いているので（設計書やビジネス文書じゃあるまいし），下手に賢い lint では却って使いづらかったりする。
ためしに Copilot に「誤字だけ指摘して」と指示してみたら，いい感じに結果を返してくれた。
以来，校正は Copilot に任せている。&lt;/p&gt;
&lt;p&gt;誤字だけでなく慣用句の漢字間違いの指摘とかは結構ありがたかったり。
それでいて崩した文体については一切スルーしてくれる（笑） 偉い偉い。&lt;/p&gt;
&lt;p&gt;もうひとつ悩んでいるのが記事に付与するタグの選択だ。
これを普通に AI に任せるとメチャクチャにしてくれるので，まずは過去の記事を全て浚ってタグの一覧を作らせるところから始めた。&lt;/p&gt;
&lt;p&gt;したらすごい勢いでシェルスクリプトを書き始めた。
私はそれを「へぇ。なるほど」とか言いながら眺めるだけ。
アレだ。
ペアプログラミングってやつ（笑） 機械相手にペアプロすることになるとは思わなかった。&lt;/p&gt;
&lt;p&gt;せっかくいい感じのスクリプトを書いてくれたので，それをファイルにまとめていつでも呼び出せるようにさせた。
タグの一覧を出現数の多いものからソートして CSV ファイルに出力させる。
ここまでできれば，作成した記事に対してタグ一覧の中から妥当なタグを提案するよう指示すればよい。&lt;/p&gt;
&lt;p&gt;タグ一覧を作ったメリットはもうひとつあって typo がいくつか見つかったのと似たような意味のタグの重複が見つかった。
見つけたのも Copilot だけど（なにせ10年以上の間にタグが450個以上できてるのだ）。
これらも修正方針を提案させた上で修正させた。
ファイル作業に関してはちゃんと手順を踏めば間違えることなくやってくれる。&lt;/p&gt;
&lt;h2&gt;記事ファイルの commit &amp;amp; push&lt;/h2&gt;
&lt;p&gt;記事ファイルの commit に関しては，念のため，最初に commit message を提案させて，私が確認してから実際の作業を行わせている。
ここで GPT-5 mini と GPT-5.3-Codex の違いが大きく出た。&lt;/p&gt;
&lt;p&gt;いや，ブログ記事の追加なんだから &lt;ruby&gt;&lt;rb&gt;AI&lt;/rb&gt;&lt;rp&gt; (&lt;/rp&gt;&lt;rt&gt;君&lt;/rt&gt;&lt;rp&gt;) &lt;/rp&gt;&lt;/ruby&gt; のしたことを書くんじゃなくて，どんな記事を追加したのかを書けよ！&lt;/p&gt;
&lt;p&gt;というわけで，GPT-5 mini は向いてないという結論になった。
commit &amp;amp; push するためのコマンドラインの組み立て自体はどちらも大差ないんだけどねぇ。&lt;/p&gt;
&lt;h2&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push&lt;/h2&gt;
&lt;p&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push についても以前からスクリプトファイルを作っていたので，それをそのまま Copilot に使わせている。
まぁ，自分でやったほうが早いのだが，作業の一連を任せることに意味があると思ってるので，敢えて任せている。
この辺も OJT っぽいよな（笑）&lt;/p&gt;
&lt;p&gt;指示も最初はできるだけ具体的にしていたが，最近は「デプロイして」だけでも（過去の作業履歴や &lt;code&gt;copilot-instructions.md&lt;/code&gt; の記述から）適切に処理してくれるようになった。&lt;/p&gt;
&lt;h2&gt;Hugo の更新&lt;/h2&gt;
&lt;p&gt;このブログは静的サイトジェネレータである &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; を使って構築しているのだが，未だ v1 に到達せずベータ版のままである。
古いテンプレート変数や関数のいくつかは deprecated になっているし，稀に破壊的変更が起きることもある。
&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; のバージョンアップのたびにビルドし直して互換性等の確認をしているのだが，だんだん面倒くさくなってきたので，これも Copilot に任せてみることにした。&lt;/p&gt;
&lt;p&gt;今回もゴリゴリとスクリプトを書き始める AI。
私も前と同じく様子を眺めていたが，出来がよさそうなのでスクリプトファイルとして書き出してもらった。
こんな感じ（長いぞ！）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install latest Hugo Extended .deb from GitHub Releases using apt.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Usage: ./hugo_inst.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gohugoio/hugo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.github.com/repos/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/releases/latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WORK_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TMPDIR&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/tmp&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/hugo-inst.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cleanup&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;trap&lt;/span&gt; cleanup EXIT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;arch&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  amd64&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;arm64&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  *&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported architecture: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;This script supports: amd64, arm64&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Current Hugo:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v hugo &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  hugo version &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hugo command not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Fetching latest release metadata from &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;release_json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$API_URL&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;tag_name&amp;#34;/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$version&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed to read latest release version.&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;asset_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;browser_download_url&amp;#34;/ &amp;amp;&amp;amp; /hugo_extended_.*_linux-&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;\.deb/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$asset_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed to find hugo_extended .deb for architecture: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;asset_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;##*/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Latest release: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Downloading: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fL --retry &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --retry-delay &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$asset_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Optional checksum verification when checksums.txt exists in latest release.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;checksums_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;browser_download_url&amp;#34;/ &amp;amp;&amp;amp; /checksums\.txt/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$checksums_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Downloading checksums.txt for verification ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  curl -fL --retry &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --retry-delay &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; -o checksums.txt &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$checksums_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt; checksums.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -qx &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Verifying checksum ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;  &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;$&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; checksums.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sha256sum -c -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;checksums.txt does not include &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;; skipping verification.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;checksums.txt not found in latest release; skipping verification.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Installing &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; with apt ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y &lt;span class=&#34;s2&#34;&gt;&amp;#34;./&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Installed Hugo:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Done.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これについては，私は1行も触っていない。&lt;/p&gt;
&lt;p&gt;手順としては&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;インストールするマシンのアーキテクチャを確認して対応する &lt;code&gt;.deb&lt;/code&gt; ファイルをダウンロードする&lt;/li&gt;
&lt;li&gt;可能ならチェックサムの検証も行う&lt;/li&gt;
&lt;li&gt;ダウンロードした &lt;code&gt;.deb&lt;/code&gt; ファイルを &lt;code&gt;apt install&lt;/code&gt; コマンドでインストールする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という感じ。&lt;/p&gt;
&lt;p&gt;これを実行して &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; を更新した後，ブログのビルドを行い，ビルド前後の差分を調べて問題がないことを確認する。
問題がなければビルドしたものを commit &amp;amp; push させる。&lt;/p&gt;
&lt;p&gt;「問題がないことを確認する」の部分は私が判断しているので完全な自動化ではないが，今のところ問題は起きていない。&lt;/p&gt;
&lt;h2&gt;GitHub Copilot はシェル芸達者&lt;/h2&gt;
&lt;p&gt;という感じで緩々と GitHub Copilot を使っている。&lt;/p&gt;
&lt;p&gt;今回の一連で意外とシェル芸達者なのが分かったので，自宅機に &lt;a href=&#34;https://github.com/features/copilot/cli&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot CLI · GitHub&#34;&gt;CLI 版&lt;/a&gt;を入れようかなぁ。
でも，&lt;a href=&#34;https://social.hyuki.net/@hyuki&#34; target=&#34;_blank&#34; title=&#34;結城浩 / Hiroshi Yuki (@hyuki@social.hyuki.net) - 結城浩のマストドン&#34;&gt;結城浩&lt;/a&gt;さんほど使い倒す勇気はないんだよなぁ。
それよりもローカル LLM 構築に向けて環境を整えるほうが先か？&lt;/p&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B07TSZZPWN?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51H&amp;#43;4kUhbFL._SL160_.jpg&#34; width=&#34;121&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/B07TSZZPWN?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;フルスクラッチから1日でCMSを作る_シェルスクリプト高速開発手法入門 改訂2版 (アスキードワンゴ)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;上田 隆一 (著), 後藤 大地 (著), ＵＳＰ研究所 (監修)&lt;/dd&gt;
    &lt;dd&gt;ドワンゴ 2019-07-05 (Release 2019-07-05)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B07TSZZPWN (ASIN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;4&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;far fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;既存の常識に凝り固まったソフトウェア・エンジニアに「痛恨の一撃」を加える快書もしくは怪書。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2014-09-21&#34;&gt;2014-09-21&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- フルスクラッチから1日でCMSを作る_シェルスクリプト高速開発手法入門 --&gt;
</content>
	</entry><entry>
		<title>ブログを Fediverse &amp;amp; Atmosphere に参加させる</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/03/blog-federation-design-with-bridgy-fed/" />
		<id>tag:text.Baldanders.info,2026-03-23:/remark/2026/03/blog-federation-design-with-bridgy-fed/</id>
		<published>2026-03-23T11:42:41+00:00</published>
		<updated>2026-03-25T23:43:42+00:00</updated>
		<summary>とりあえず，このブログを Fediverse &amp;amp; Atmosphere に参加させるところまでやってみた。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;随分前に &lt;a href=&#34;https://fed.brid.gy/&#34; target=&#34;_blank&#34; title=&#34;Bridgy Fed&#34;&gt;Bridgy Fed&lt;/a&gt; を利用して Bluesky と Mastodon を相互接続させる方法を&lt;a href=&#34;https://text.baldanders.info/remark/2024/10/bridgy-fed-for-bluesky/&#34; target=&#34;_blank&#34; title=&#34;Fediverse と Bluesky を相互接続する&#34;&gt;紹介&lt;/a&gt;したが，同じサービスを使ってブログなどの Web サイト（の更新）を Bluesky/Atmosphere および Mastodon/Fediverse と連携させることが出来るようだ。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
graph LR
  Website[&#34;Web site&#34;]
  BridgyFed((&#34;Bridgy Fed&#34;))
  Mastodon[&#34;Mastodon (Fediverse)&#34;]
  Bluesky[&#34;Bluesky (Atmosphere)&#34;]

  Website--&gt;BridgyFed
  BridgyFed--&gt;Mastodon
  BridgyFed--&gt;Bluesky
&lt;/div&gt;
&lt;figcaption&gt;&lt;div&gt;Federation with Bridgy Fed&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;登録自体は簡単で，以下のページでブログの URL を入力するだけ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://fed.brid.gy/web-site&#34;&gt;
&lt;a href=&#34;https://fed.brid.gy/web-site&#34;&gt;&lt;img src=&#34;./web-site-1.png&#34; srcset=&#34;./web-site-1.png 1175w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Enter a web site to bridge:&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://fed.brid.gy/web-site&#34;&gt;Enter a web site to bridge:&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;成功すれば以下の画面に遷移する。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://fed.brid.gy/web/text.baldanders.info&#34;&gt;
&lt;a href=&#34;https://fed.brid.gy/web/text.baldanders.info&#34;&gt;&lt;img src=&#34;./web-site-2.png&#34; srcset=&#34;./web-site-2.png 1175w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;text.baldanders.info profile - Bridgy Fed&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://fed.brid.gy/web/text.baldanders.info&#34;&gt;text.baldanders.info profile - Bridgy Fed&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;RSS フィードを備えているサイトであれば問題なく登録できるはず。
サイトの登録は誰でもどのサイトでもできる。
勝手に登録されてしまい取り消したいのであれば，&lt;a href=&#34;https://fed.brid.gy/docs#opt-out&#34; target=&#34;_blank&#34;&gt;オプトアウト&lt;/a&gt;の手続きを行う必要がある。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://fed.brid.gy/docs#opt-out&#34;&gt;If you&amp;rsquo;re on the web, &lt;a href=&#34;mailto:feedback@brid.gy&#34; target=&#34;_blank&#34;&gt;email us&lt;/a&gt; from an address at your web site&amp;rsquo;s domain to show that you own it, or you can put the text &lt;code&gt;#nobridge&lt;/code&gt; in the &lt;a href=&#34;https://fed.brid.gy/docs#web-profile&#34; target=&#34;_blank&#34;&gt;profile on your home page&lt;/a&gt; and then &lt;a href=&#34;https://fed.brid.gy/docs#update-profile&#34; target=&#34;_blank&#34;&gt;update your profile&lt;/a&gt; on &lt;a href=&#34;https://fed.brid.gy/docs#user-page&#34; target=&#34;_blank&#34;&gt;your user page&lt;/a&gt;.&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://fed.brid.gy/docs#opt-out&#34;&gt;How do I opt out and remove my site or account?&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;初期状態では Bluesky ハンドルは &lt;code&gt;@yourdomain.com.web.brid.gy&lt;/code&gt; に， Mastodon ハンドルは &lt;code&gt;@yourdomain@web.brid.gy&lt;/code&gt; になっている。&lt;/p&gt;
&lt;p&gt;たとえばサイトのドメインが &lt;code&gt;text.baldanders.info&lt;/code&gt; であれば，それぞれ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@text.baldanders.info.web.brid.gy&lt;/code&gt; (Bluesky)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@text.baldanders.info@web.brid.gy&lt;/code&gt; (Mastodon)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;となる。&lt;/p&gt;
&lt;p&gt;このうち Bluesky ハンドルはサイトのドメイン名に変更可能である。
変更方法は&lt;a href=&#34;https://text.baldanders.info/remark/2026/03/creating-a-new-pds-registry-on-pckt/#change-handle&#34; target=&#34;_blank&#34; title=&#34;ハンドル名を独自ドメイン（サブドメイン）に変更する&#34;&gt;以前書いた記事&lt;/a&gt;を参照のこと。
DNS の TXT レコードまたは &lt;code&gt;/.well-known/atproto-did&lt;/code&gt; ファイルに DID を設置すれば勝手に更新してくれるみたい。&lt;/p&gt;
&lt;p&gt;ちなみに，ここのブログのように GitHub Pages で独自ドメインにしている場合は DNS の TXT レコードが使えないため &lt;code&gt;/.well-known/atproto-did&lt;/code&gt; ファイルに DID を書いて設置した。
この場合 &lt;code&gt;/_config.yml&lt;/code&gt; ファイルに以下の記述を追加する必要がある。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;include&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.well-known&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最終的には以下のハンドル名になった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bsky.app/profile/text.baldanders.info&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;@text.baldanders.info&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://pdsls.dev/at://did:plc:crwrada4cit2ijjxuwz4bsjc#identity&#34;&gt;
&lt;a href=&#34;https://pdsls.dev/at://did:plc:crwrada4cit2ijjxuwz4bsjc#identity&#34;&gt;&lt;img src=&#34;./pdsls.png&#34; srcset=&#34;./pdsls.png 549w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;text.baldanders.info - PDSls&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://pdsls.dev/at://did:plc:crwrada4cit2ijjxuwz4bsjc#identity&#34;&gt;text.baldanders.info - PDSls&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mastodon ハンドル名の &lt;code&gt;web.brid.gy&lt;/code&gt; の部分を&lt;a href=&#34;https://fed.brid.gy/docs#fediverse-enhanced&#34; target=&#34;_blank&#34; title=&#34;Can I use my own domain as my fediverse handle?&#34;&gt;独自ドメインに変える&lt;/a&gt;こともできるようだが，このブログではメリットが薄い（かえってハンドル名が長くなる）のでやらないかな。&lt;/p&gt;
&lt;p&gt;Fediverse の各サービスや Bluesky 等とやり取りするために &lt;a href=&#34;https://indieweb.org/&#34; target=&#34;_blank&#34;&gt;IndieWeb&lt;/a&gt; や &lt;a href=&#34;https://webmention.net/&#34; target=&#34;_blank&#34;&gt;Webmention&lt;/a&gt; が推奨されているみたいだが，これは後日調査して可能なら対応するか。&lt;/p&gt;
&lt;p&gt;今回はここまで。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://paul.kinlan.me/using-web-mentions-in-a-static-sitehugo/&#34; target=&#34;_blank&#34;&gt;Using Web Mentions in a static site (Hugo) | Modern Web Development with Chrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.tyage.net/post/2023/2023-07-17-bridgy-fed/&#34; target=&#34;_blank&#34;&gt;このブログがFediverseに対応しました&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ubanis.com/note/bridgy_fed_summary/&#34; target=&#34;_blank&#34;&gt;Bridgy-Fedのまとめ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://webmention.io/&#34; target=&#34;_blank&#34;&gt;Webmention.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.anew.social/long-form-comes-to-bridgy-fed/&#34; target=&#34;_blank&#34;&gt;Long-Form Comes To Bridgy Fed&lt;/a&gt; : Bridgy Fed が長文ドキュメント用の &lt;a href=&#34;https://standard.site/&#34; target=&#34;_blank&#34; title=&#34;Standard.site - One schema. Every platform.&#34;&gt;Standard.site&lt;/a&gt; に対応&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>AT Protocol &amp;amp; ActivityPub 関連サービスの利用について</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/atproto-based-services/" />
		<id>tag:text.Baldanders.info,2026-03-06:/atproto-based-services/</id>
		<published>2026-03-06T02:36:06+00:00</published>
		<updated>2026-04-12T22:48:55+00:00</updated>
		<summary>AT Protocol ベースのサービスをいくつか試しているが，そろそろ覚えきれなくなってきたので，整理のためにここでまとめておく。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;h2&gt;ATProto/Atmosphere 関連サービス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;AT Protocol&lt;/a&gt; ベースのサービスをいくつか試しているが，そろそろ覚えきれなくなってきたので，整理のためにここでまとめておく。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;サービス&lt;/th&gt;
      &lt;th&gt;アカウント等&lt;/th&gt;
      &lt;th&gt;備考&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td rowspan=&#34;5&#34; class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://bsky.app/&#34;&gt;Bluesky&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;&lt;code&gt;@baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        メインアカウント
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:hbzmqswkx5pbg5fhr33pw4iw&#34;&gt;&lt;code&gt;@fanapod.baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        非公式 APOD 配信ボット
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:hbzmqswkx5pbg5fhr33pw4iw&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:qv4cel4jrf5qqzfq6ddvp6yv&#34;&gt;&lt;code&gt;@crawler.baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        Web クローラー ボット
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:qv4cel4jrf5qqzfq6ddvp6yv&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:4kzexuq4xieuarc3q6lmkeou&#34;&gt;&lt;code&gt;@photos.baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        お散歩カメラ, 実験用
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:4kzexuq4xieuarc3q6lmkeou&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:26eoqvsiov3hmsfqruoi4d3s&#34;&gt;&lt;code&gt;@goark.bsky.social&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
        開発・実験用
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:26eoqvsiov3hmsfqruoi4d3s&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://pckt.blog/&#34;&gt;Pckt&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://osanpo.pckt.blog&#34;&gt;お散歩カメラ&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;ブログ, &lt;a href=&#34;https://bsky.app/profile/did:plc:4kzexuq4xieuarc3q6lmkeou&#34;&gt;photos&lt;/a&gt;アカウント使用&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://stream.place/&#34;&gt;Streamplace&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://stream.place/baldanders.info&#34;&gt;@baldanders.info&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;動画配信, &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;メイン&lt;/a&gt;アカウント使用&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://leaflet.pub/&#34;&gt;Leaflet&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://spiegel.leaflet.pub/&#34;&gt;お散歩カメラ&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;ブログ（休眠中）, &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;メイン&lt;/a&gt;アカウント使用&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://trilinesat.suibari.com/&#34;&gt;TriLinesAt&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&amp;mdash;&lt;/td&gt;
      &lt;td&gt;三行日記（休眠中）, &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;メイン&lt;/a&gt;アカウント使用&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&amp;mdash;&lt;/td&gt;
      &lt;td&gt;休眠中, &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;メイン&lt;/a&gt;アカウント使用&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;他にも面白そうなサービスが色々と登場しているので，これからも増えていくかも知れない。
自作ツールで &lt;code&gt;bsky.social&lt;/code&gt; 以外の PDS で Bluesky の API を使えるようになれば &lt;code&gt;pckt.cafe&lt;/code&gt; とかも使いやすくなるのだが&amp;hellip; この辺は調査中。&lt;/p&gt;
&lt;h2&gt;ActivityPub/Fediverse 関連サービス&lt;/h2&gt;
&lt;p&gt;ついでに，私が利用している ActivityPub/Fediverse 関連サービスも挙げておく。
といっても今のところは Mastodon しか使ってないのだが。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;サービス&lt;/th&gt;
      &lt;th&gt;アカウント等&lt;/th&gt;
      &lt;th&gt;備考&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td rowspan=&#34;3&#34; class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://goark.fedicity.net/&#34;&gt;Goark&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://goark.fedicity.net/@spiegel&#34;&gt;&lt;code&gt;@spiegel@goark.fedicity.net&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;メインアカウント&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://goark.fedicity.net/@osanpo&#34;&gt;&lt;code&gt;@osanpo@goark.fedicity.net&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;Web クローラー ボット&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://goark.fedicity.net/@goark&#34;&gt;&lt;code&gt;@goark@goark.fedicity.net&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;開発・実験用, 今のところボット運用&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://fedibird.com/&#34;&gt;Fedibird&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://fedibird.com/@spiegel&#34;&gt;&lt;code&gt;@spiegel@fedibird.com&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;予備系&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;&lt;a href=&#34;https://mstdn.jp/&#34;&gt;mstdn.jp&lt;/a&gt;&lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://mstdn.jp/@spiegel&#34;&gt;&lt;code&gt;@spiegel@mstdn.jp&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;休眠中&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;PixcelFed も気になっているのだが，これも API とかどうなってるんだろうと踏み出せてない。
まぁ Mastodon が問題なく使えてるので優先順位は低め。&lt;/p&gt;
&lt;h2&gt;Bridgy Fed 連携&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://fed.brid.gy/&#34; target=&#34;_blank&#34; title=&#34;Bridgy Fed&#34;&gt;Bridgy Fed&lt;/a&gt; は &lt;a href=&#34;https://bsky.app/&#34; target=&#34;_blank&#34; title=&#34;Bluesky&#34;&gt;Bluesky&lt;/a&gt; や &lt;a href=&#34;https://joinmastodon.org/&#34; target=&#34;_blank&#34; title=&#34;Mastodon - Decentralized social media&#34;&gt;Mastodon&lt;/a&gt; 等の ActivityPub 連合（Fediverse）を連携させるサービスで，現在 Bluesky → Fediverse と Fediverse → Bluesky のブリッヂが提供されている。
また Web サイトを &lt;a href=&#34;https://bsky.app/&#34; target=&#34;_blank&#34; title=&#34;Bluesky&#34;&gt;Bluesky&lt;/a&gt; や Fediverse へ参加させる機能も提供されている。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://fed.brid.gy/&#34; target=&#34;_blank&#34; title=&#34;Bridgy Fed&#34;&gt;Bridgy Fed&lt;/a&gt; について詳しくは&lt;a href=&#34;https://fed.brid.gy/docs&#34; target=&#34;_blank&#34; title=&#34;Bridgy Fed&#34;&gt;ドキュメント&lt;/a&gt;を参照のこと。
ここでは本サイトで提供している &lt;a href=&#34;https://fed.brid.gy/&#34; target=&#34;_blank&#34; title=&#34;Bridgy Fed&#34;&gt;Bridgy Fed&lt;/a&gt; 連携の設定を挙げておく。&lt;/p&gt;
&lt;h3&gt;Bluesky → Fediverse&lt;/h3&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
graph LR
  BridgyFed((&#34;Bridgy Fed&#34;))
  Bluesky[&#34;Bluesky&#34;]
  Mastodon[&#34;Fediverse\n(Mastodon, ...)&#34;]

  Bluesky e2@--&gt; BridgyFed
  BridgyFed e1@--&gt; Mastodon

  e1@{ animate: true }
  e2@{ animate: true }
&lt;/div&gt;&lt;/figure&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Bluesky&lt;/th&gt;
      &lt;th&gt;Fediverse&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt&#34;&gt;&lt;code&gt;@baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.brid.gy/r/https://bsky.app/profile/baldanders.info&#34;&gt;&lt;code&gt;@baldanders.info@bsky.brid.gy&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/did:plc:hbzmqswkx5pbg5fhr33pw4iw&#34;&gt;&lt;code&gt;@fanapod.baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.brid.gy/r/https://bsky.app/profile/fanapod.baldanders.info&#34;&gt;&lt;code&gt;@fanapod.baldanders.info@bsky.brid.gy&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Mastodon → Bluesky&lt;/h3&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
graph LR
  BridgyFed((&#34;Bridgy Fed&#34;))
  Bluesky[&#34;Bluesky\n(and Atmosphere)&#34;]
  Mastodon[&#34;Mastodon&#34;]

  Mastodon e1@--&gt; BridgyFed
  BridgyFed e2@--&gt; Bluesky

  e1@{ animate: true }
  e2@{ animate: true }
&lt;/div&gt;&lt;/figure&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Mastodon&lt;/th&gt;
      &lt;th&gt;Bluesky&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://goark.fedicity.net/@spiegel&#34;&gt;&lt;code&gt;@spiegel@goark.fedicity.net&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/mstdn.baldanders.info&#34;&gt;&lt;code&gt;@mstdn.baldanders.info&lt;/code&gt;&lt;/a&gt;
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:fe7f76dxtltjam5kh5xk3blz&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;※ &lt;code&gt;@mstdn.baldanders.info&lt;/code&gt; アカウントは認証には使えない。&lt;/p&gt;
&lt;h3&gt;Web → Bluesky &amp;amp; Fediverse&lt;/h3&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;div class=&#34;mermaid&#34;&gt;
graph LR
  Website[&#34;Web site&#34;]
  BridgyFed((&#34;Bridgy Fed&#34;))
  Bluesky[&#34;Bluesky\n(and Atmosphere)&#34;]
  Mastodon[&#34;Fediverse\n(Mastodon, ...)&#34;]

  Website e1@--&gt; BridgyFed
  BridgyFed e2@--&gt;Mastodon
  BridgyFed e3@--&gt;Bluesky

  e1@{ animate: true }
  e2@{ animate: true }
  e3@{ animate: true }
&lt;/div&gt;&lt;/figure&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Web site&lt;/th&gt;
      &lt;th&gt;Fediverse / Bluesky&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td rowspan=&#34;2&#34; class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://text.baldanders.info/&#34;&gt;&lt;code&gt;text.baldanders.info&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://web.brid.gy/@text.baldanders.info&#34;&gt;&lt;code&gt;@text.baldanders.info@web.brid.gy&lt;/code&gt;&lt;/a&gt;
      &lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;
      &lt;td class=&#34;nowrap&#34;&gt;
        &lt;a href=&#34;https://bsky.app/profile/text.baldanders.info&#34;&gt;&lt;code&gt;@text.baldanders.info&lt;/code&gt;&lt;/a&gt;
        (&lt;a href=&#34;https://pdsls.dev/at://did:plc:crwrada4cit2ijjxuwz4bsjc&#34;&gt;PDSls&lt;/a&gt;)
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;※ &lt;code&gt;@text.baldanders.info&lt;/code&gt; アカウントは認証には使えない。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2023/07/crawler/&#34; target=&#34;_blank&#34;&gt;Mastodon と Bluesky でボット運用はじめました&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/10/bridgy-fed-for-bluesky/&#34; target=&#34;_blank&#34;&gt;Fediverse と Bluesky を相互接続する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/10/a-bluesky-mastodon-account-migration-tool/&#34; target=&#34;_blank&#34;&gt;Bluesky と Mastodon の間でアカウントの移行が可能らしい&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/01/trilinesat/&#34; target=&#34;_blank&#34;&gt;三行日記はじめました&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/02/leaflet-and-the-atmosphere/&#34; target=&#34;_blank&#34;&gt;Leaflet と The Atmosphere&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/02/skyreader-powered-by-atproto/&#34; target=&#34;_blank&#34;&gt;Skyreader: AT Protocol で駆動する Feed Reader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/03/creating-a-new-pds-registry-on-pckt/&#34; target=&#34;_blank&#34;&gt;Pckt に新しい PDS レジストリを作る&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/03/pds-for-everyone/&#34; target=&#34;_blank&#34;&gt;そろそろ PDS を個人で管理する時代か？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/04/gogh-streaming-on-streamplace/&#34; target=&#34;_blank&#34;&gt;Streamplace で Gogh 作業配信を行う&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>Mastodon/Bluesky で共有するためのボタンを追加・更新</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/02/update-share-buttons/" />
		<id>tag:text.Baldanders.info,2026-02-26:/remark/2026/02/update-share-buttons/</id>
		<published>2026-02-26T06:32:46+00:00</published>
		<updated>2026-02-26T06:42:02+00:00</updated>
		<summary>そろそろ重い腰をあげようかな，ということで。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;そろそろ重い腰をあげようかな，ということで。&lt;/p&gt;
&lt;p&gt;このブログ各記事ページの右上には共有のためのボタンがある（目立たないようにわざと小さくしているが）。
今まで Bluesky の共有ボタンを付けてなかったのだが，今回これを追加した。
ボタンに対応する URL の組み立ては以下の公式ドキュメントを参考にした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.bsky.app/docs/advanced-guides/intent-links&#34; target=&#34;_blank&#34;&gt;Action Intent Links | Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ついでに Mastodon の共有ボタンも更新した。
第三者サービスを経由してポストするのはそろそろやめようかなと思って（信用してないわけじゃないけど）。
参考にしたのは以下の記事。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://freefielder.jp/blog/2024/11/share-on-mastodon-button.html&#34; target=&#34;_blank&#34;&gt;サイトに「Mastodonで共有」ボタンを設置する。 - freefielder.jp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このページで公開している CSS および JavaScript コードをそのまま使わせてもらった。
権利の帰属先および利用ライセンスは&lt;a href=&#34;https://text.baldanders.info/mstdn_share/license.txt&#34; target=&#34;_blank&#34;&gt;こちら&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;ありがたや &lt;abbr class=&#34;emoji-chars&#34; title=&#34;ペコン&#34;&gt;🙇&lt;/abbr&gt;&lt;/p&gt;
&lt;p&gt;なお &lt;a href=&#34;https://getpocket.com/&#34; target=&#34;_blank&#34;&gt;Pocket&lt;/a&gt; への共有ボタンは外した。
私が使わなくなったので。
はてな への共有ボタンも付けない。
そもそも はてな のアカウント持ってないしな。&lt;/p&gt;
</content>
	</entry><entry>
		<title>Amazon PA-API にアクセスできなくなった</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/11/paapi-access-disabled/" />
		<id>tag:text.Baldanders.info,2025-11-17:/remark/2025/11/paapi-access-disabled/</id>
		<published>2025-11-17T09:15:09+00:00</published>
		<updated>2025-11-17T10:24:38+00:00</updated>
		<summary>月に10件以上とか絶対無理無理無理！</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;先日から Amazon の PA-API (Product Advertising API) にアクセスできなくて困っている。
なんか 403 が返ってくるんだよな。
API で何か破壊的変更でもあったのかと PA-API のサイトを見てみるも，それらしい情報が見当たらず途方に暮れていたのだが&amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://rojiuragame.com/2025/11/15/amazon%e3%81%aepa-api%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc%e7%99%ba%e7%94%9f%ef%bc%81%e3%81%93%e3%81%a3%e3%81%9d%e3%82%8a%e8%a6%8f%e7%b4%84%e3%81%8c%e5%a4%89%e6%9b%b4%e3%81%95%e3%82%8c%e3%81%a6/&#34; target=&#34;_blank&#34;&gt;AmazonのPA-APIでエラー発生！こっそり規約が変更されていた！？ | 忘れられたおもちゃ部屋&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;によると（引用の引用でゴメン）&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote cite=&#34;https://rojiuragame.com/2025/11/15/amazon%E3%81%AEpa-api%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E7%99%BA%E7%94%9F%EF%BC%81%E3%81%93%E3%81%A3%E3%81%9D%E3%82%8A%E8%A6%8F%E7%B4%84%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%A6/&#34;&gt;&lt;p&gt;お調べいたしましたところ、11月12日からポリシーが変更となり、PA-APIへのアクセスは過去30日以内に10件の的確な売上(10件の注文)を発生させていただく必要があることが確認できました。&lt;/p&gt;
&lt;p&gt;こちら当プログラムサイト上ではまだお知らせ等が間に合っておりませんが、随時更新させていただきます。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://rojiuragame.com/2025/11/15/amazon%E3%81%AEpa-api%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E7%99%BA%E7%94%9F%EF%BC%81%E3%81%93%E3%81%A3%E3%81%9D%E3%82%8A%E8%A6%8F%E7%B4%84%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%A6/&#34;&gt;AmazonのPA-APIでエラー発生！こっそり規約が変更されていた！？&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;なんじゃそらぁ &lt;code&gt;(╯°□°）╯︵ ┻━┻ &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;いやまじかんべんしてください。&lt;/p&gt;
&lt;p&gt;このサイトは確かにアソシエイトプログラムに参加しているけど，アフィリエイト目的のサイトじゃない。
書影とか商品画像を合法的に使いたくて PA-API を使っているだけで，売上件数も微々たるもの。
年に数回 Amazon ギフトもらって「これでマンガ単行本が1冊余分に買える」とか細やかに喜んでるレベルの運用なのよ。
月に1件でも危ない時があったのに，10件以上とか絶対無理無理無理！&lt;/p&gt;
&lt;p&gt;これはもう Amazon を頼るのは駄目かもしれん。
他の方法を考えないと。&lt;/p&gt;
&lt;p&gt;&amp;hellip;と考えて，そういえば今どきは出版社の書籍紹介ページの OGP イメージで書影を使ったりするよな。
ということは，別に Amazon のサービスを使わなくても画像を含むリンクカードを生成する仕組みを作ればいいのか。
うーん，この線で考えてみよう。&lt;/p&gt;
&lt;p&gt;他にも&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.commercepick.com/archives/77144&#34; target=&#34;_blank&#34;&gt;Amazon SP-API有料化の真相。SaaS依存のリスクと内製化という次の一手 | EC・ネット通販を中心とした物販ビジネス専門メディア 「コマースピック」&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なんてな話もあるようで&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;，自前で管理システムを構築できない企業などはしんどいことになりそうだ。
まぁ，かつての「ロングテール理論」とか今のインターネット老人が若き日の妄想だったということかな。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2019/10/pa-api-v5/&#34; target=&#34;_blank&#34;&gt;PA-API v5 への移行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/goark/pa-api&#34; target=&#34;_blank&#34;&gt;goark/pa-api: APIs for Amazon Product Advertising API v5 by Golang&lt;/a&gt; : このパッケージは皆さまからの PR で運用されています（笑）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;SP-API は Seller Partner API のことで， Amazon に出品している商品の管理をするための API らしい。実際には間にサードパーティの SaaS サービスが入ることが多いそうで，それら SaaS サービスに対して2026年から料金が発生するよってことのようだ。最終的にその費用はエンドユーザが負担することになるんだろうけど。&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content>
	</entry><entry>
		<title>変体仮名をサポートした</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/10/hentaigana/" />
		<id>tag:text.Baldanders.info,2025-10-03:/remark/2025/10/hentaigana/</id>
		<published>2025-10-03T04:08:59+00:00</published>
		<updated>2025-10-03T08:22:31+00:00</updated>
		<summary>このブログサイトで変体仮名を表示できるようにしてみた。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;昨年の古い話題になるのだが Google NOTO フォントが変体仮名&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; をリリースした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://fonts.google.com/noto/specimen/Noto&amp;#43;Serif&amp;#43;Hentaigana&#34; target=&#34;_blank&#34;&gt;Noto Serif Hentaigana - Google Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/1581369.html&#34; target=&#34;_blank&#34;&gt;Googleが変体仮名フォント「Noto Hentaigana」をリリース ～蕎麦屋の看板などを再現可能 - 窓の杜&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というわけで変体仮名を Web フォントとして組み込むことができる。
このサイトでの設定はこんな感じ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.gstatic.com&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;crossorigin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com/css2?family=BIZ+UDGothic:wght@400;700&amp;amp;family=BIZ+UDMincho:wght@400;700&amp;amp;family=Intel+One+Mono:wght@400;700&amp;amp;family=Noto+Color+Emoji&amp;amp;family=Noto+Sans:wght@400;700&amp;amp;family=Noto+Serif+Hentaigana:wght@400;700&amp;amp;family=Noto+Serif:wght@400;700&amp;amp;display=swap&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで CSS の &lt;code&gt;font-family&lt;/code&gt; に &lt;code&gt;&#39;Noto Serif Hentaigana&#39;&lt;/code&gt; を追加すればよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;font-family&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Noto Serif&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;BIZ UDMincho&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Noto Serif Hentaigana&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;serif&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ちょっと表示させてみよう。
以前「&lt;a href=&#34;https://text.baldanders.info/golang/unicode-katakana/&#34; target=&#34;_blank&#34;&gt;Unicode のカタカナを調べる&lt;/a&gt;」で書いたコードを流用して Unicode で変体仮名を含む仮名補助（Kana Supplement; &lt;code&gt;U+1B000&lt;/code&gt; - &lt;code&gt;U+1B0FF&lt;/code&gt;）および仮名拡張A（Kana Extended-A; &lt;code&gt;U+1B100&lt;/code&gt; – &lt;code&gt;U+1B12F&lt;/code&gt;）を列挙してみる。
こんな感じ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;unicode&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;rune&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x1b000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;rune&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x1b12f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;unicode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;In&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;unicode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Hiragana&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;||&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;unicode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;In&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;unicode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Katakana&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;%#U &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x0f&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;                &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;実行結果は以下の通り。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ go run main.go
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B000 &amp;#39;𛀀&amp;#39; U+1B001 &amp;#39;𛀁&amp;#39; U+1B002 &amp;#39;𛀂&amp;#39; U+1B003 &amp;#39;𛀃&amp;#39; U+1B004 &amp;#39;𛀄&amp;#39; U+1B005 &amp;#39;𛀅&amp;#39; U+1B006 &amp;#39;𛀆&amp;#39; U+1B007 &amp;#39;𛀇&amp;#39; U+1B008 &amp;#39;𛀈&amp;#39; U+1B009 &amp;#39;𛀉&amp;#39; U+1B00A &amp;#39;𛀊&amp;#39; U+1B00B &amp;#39;𛀋&amp;#39; U+1B00C &amp;#39;𛀌&amp;#39; U+1B00D &amp;#39;𛀍&amp;#39; U+1B00E &amp;#39;𛀎&amp;#39; U+1B00F &amp;#39;𛀏&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B010 &amp;#39;𛀐&amp;#39; U+1B011 &amp;#39;𛀑&amp;#39; U+1B012 &amp;#39;𛀒&amp;#39; U+1B013 &amp;#39;𛀓&amp;#39; U+1B014 &amp;#39;𛀔&amp;#39; U+1B015 &amp;#39;𛀕&amp;#39; U+1B016 &amp;#39;𛀖&amp;#39; U+1B017 &amp;#39;𛀗&amp;#39; U+1B018 &amp;#39;𛀘&amp;#39; U+1B019 &amp;#39;𛀙&amp;#39; U+1B01A &amp;#39;𛀚&amp;#39; U+1B01B &amp;#39;𛀛&amp;#39; U+1B01C &amp;#39;𛀜&amp;#39; U+1B01D &amp;#39;𛀝&amp;#39; U+1B01E &amp;#39;𛀞&amp;#39; U+1B01F &amp;#39;𛀟&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B020 &amp;#39;𛀠&amp;#39; U+1B021 &amp;#39;𛀡&amp;#39; U+1B022 &amp;#39;𛀢&amp;#39; U+1B023 &amp;#39;𛀣&amp;#39; U+1B024 &amp;#39;𛀤&amp;#39; U+1B025 &amp;#39;𛀥&amp;#39; U+1B026 &amp;#39;𛀦&amp;#39; U+1B027 &amp;#39;𛀧&amp;#39; U+1B028 &amp;#39;𛀨&amp;#39; U+1B029 &amp;#39;𛀩&amp;#39; U+1B02A &amp;#39;𛀪&amp;#39; U+1B02B &amp;#39;𛀫&amp;#39; U+1B02C &amp;#39;𛀬&amp;#39; U+1B02D &amp;#39;𛀭&amp;#39; U+1B02E &amp;#39;𛀮&amp;#39; U+1B02F &amp;#39;𛀯&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B030 &amp;#39;𛀰&amp;#39; U+1B031 &amp;#39;𛀱&amp;#39; U+1B032 &amp;#39;𛀲&amp;#39; U+1B033 &amp;#39;𛀳&amp;#39; U+1B034 &amp;#39;𛀴&amp;#39; U+1B035 &amp;#39;𛀵&amp;#39; U+1B036 &amp;#39;𛀶&amp;#39; U+1B037 &amp;#39;𛀷&amp;#39; U+1B038 &amp;#39;𛀸&amp;#39; U+1B039 &amp;#39;𛀹&amp;#39; U+1B03A &amp;#39;𛀺&amp;#39; U+1B03B &amp;#39;𛀻&amp;#39; U+1B03C &amp;#39;𛀼&amp;#39; U+1B03D &amp;#39;𛀽&amp;#39; U+1B03E &amp;#39;𛀾&amp;#39; U+1B03F &amp;#39;𛀿&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B040 &amp;#39;𛁀&amp;#39; U+1B041 &amp;#39;𛁁&amp;#39; U+1B042 &amp;#39;𛁂&amp;#39; U+1B043 &amp;#39;𛁃&amp;#39; U+1B044 &amp;#39;𛁄&amp;#39; U+1B045 &amp;#39;𛁅&amp;#39; U+1B046 &amp;#39;𛁆&amp;#39; U+1B047 &amp;#39;𛁇&amp;#39; U+1B048 &amp;#39;𛁈&amp;#39; U+1B049 &amp;#39;𛁉&amp;#39; U+1B04A &amp;#39;𛁊&amp;#39; U+1B04B &amp;#39;𛁋&amp;#39; U+1B04C &amp;#39;𛁌&amp;#39; U+1B04D &amp;#39;𛁍&amp;#39; U+1B04E &amp;#39;𛁎&amp;#39; U+1B04F &amp;#39;𛁏&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B050 &amp;#39;𛁐&amp;#39; U+1B051 &amp;#39;𛁑&amp;#39; U+1B052 &amp;#39;𛁒&amp;#39; U+1B053 &amp;#39;𛁓&amp;#39; U+1B054 &amp;#39;𛁔&amp;#39; U+1B055 &amp;#39;𛁕&amp;#39; U+1B056 &amp;#39;𛁖&amp;#39; U+1B057 &amp;#39;𛁗&amp;#39; U+1B058 &amp;#39;𛁘&amp;#39; U+1B059 &amp;#39;𛁙&amp;#39; U+1B05A &amp;#39;𛁚&amp;#39; U+1B05B &amp;#39;𛁛&amp;#39; U+1B05C &amp;#39;𛁜&amp;#39; U+1B05D &amp;#39;𛁝&amp;#39; U+1B05E &amp;#39;𛁞&amp;#39; U+1B05F &amp;#39;𛁟&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B060 &amp;#39;𛁠&amp;#39; U+1B061 &amp;#39;𛁡&amp;#39; U+1B062 &amp;#39;𛁢&amp;#39; U+1B063 &amp;#39;𛁣&amp;#39; U+1B064 &amp;#39;𛁤&amp;#39; U+1B065 &amp;#39;𛁥&amp;#39; U+1B066 &amp;#39;𛁦&amp;#39; U+1B067 &amp;#39;𛁧&amp;#39; U+1B068 &amp;#39;𛁨&amp;#39; U+1B069 &amp;#39;𛁩&amp;#39; U+1B06A &amp;#39;𛁪&amp;#39; U+1B06B &amp;#39;𛁫&amp;#39; U+1B06C &amp;#39;𛁬&amp;#39; U+1B06D &amp;#39;𛁭&amp;#39; U+1B06E &amp;#39;𛁮&amp;#39; U+1B06F &amp;#39;𛁯&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B070 &amp;#39;𛁰&amp;#39; U+1B071 &amp;#39;𛁱&amp;#39; U+1B072 &amp;#39;𛁲&amp;#39; U+1B073 &amp;#39;𛁳&amp;#39; U+1B074 &amp;#39;𛁴&amp;#39; U+1B075 &amp;#39;𛁵&amp;#39; U+1B076 &amp;#39;𛁶&amp;#39; U+1B077 &amp;#39;𛁷&amp;#39; U+1B078 &amp;#39;𛁸&amp;#39; U+1B079 &amp;#39;𛁹&amp;#39; U+1B07A &amp;#39;𛁺&amp;#39; U+1B07B &amp;#39;𛁻&amp;#39; U+1B07C &amp;#39;𛁼&amp;#39; U+1B07D &amp;#39;𛁽&amp;#39; U+1B07E &amp;#39;𛁾&amp;#39; U+1B07F &amp;#39;𛁿&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B080 &amp;#39;𛂀&amp;#39; U+1B081 &amp;#39;𛂁&amp;#39; U+1B082 &amp;#39;𛂂&amp;#39; U+1B083 &amp;#39;𛂃&amp;#39; U+1B084 &amp;#39;𛂄&amp;#39; U+1B085 &amp;#39;𛂅&amp;#39; U+1B086 &amp;#39;𛂆&amp;#39; U+1B087 &amp;#39;𛂇&amp;#39; U+1B088 &amp;#39;𛂈&amp;#39; U+1B089 &amp;#39;𛂉&amp;#39; U+1B08A &amp;#39;𛂊&amp;#39; U+1B08B &amp;#39;𛂋&amp;#39; U+1B08C &amp;#39;𛂌&amp;#39; U+1B08D &amp;#39;𛂍&amp;#39; U+1B08E &amp;#39;𛂎&amp;#39; U+1B08F &amp;#39;𛂏&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B090 &amp;#39;𛂐&amp;#39; U+1B091 &amp;#39;𛂑&amp;#39; U+1B092 &amp;#39;𛂒&amp;#39; U+1B093 &amp;#39;𛂓&amp;#39; U+1B094 &amp;#39;𛂔&amp;#39; U+1B095 &amp;#39;𛂕&amp;#39; U+1B096 &amp;#39;𛂖&amp;#39; U+1B097 &amp;#39;𛂗&amp;#39; U+1B098 &amp;#39;𛂘&amp;#39; U+1B099 &amp;#39;𛂙&amp;#39; U+1B09A &amp;#39;𛂚&amp;#39; U+1B09B &amp;#39;𛂛&amp;#39; U+1B09C &amp;#39;𛂜&amp;#39; U+1B09D &amp;#39;𛂝&amp;#39; U+1B09E &amp;#39;𛂞&amp;#39; U+1B09F &amp;#39;𛂟&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0A0 &amp;#39;𛂠&amp;#39; U+1B0A1 &amp;#39;𛂡&amp;#39; U+1B0A2 &amp;#39;𛂢&amp;#39; U+1B0A3 &amp;#39;𛂣&amp;#39; U+1B0A4 &amp;#39;𛂤&amp;#39; U+1B0A5 &amp;#39;𛂥&amp;#39; U+1B0A6 &amp;#39;𛂦&amp;#39; U+1B0A7 &amp;#39;𛂧&amp;#39; U+1B0A8 &amp;#39;𛂨&amp;#39; U+1B0A9 &amp;#39;𛂩&amp;#39; U+1B0AA &amp;#39;𛂪&amp;#39; U+1B0AB &amp;#39;𛂫&amp;#39; U+1B0AC &amp;#39;𛂬&amp;#39; U+1B0AD &amp;#39;𛂭&amp;#39; U+1B0AE &amp;#39;𛂮&amp;#39; U+1B0AF &amp;#39;𛂯&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0B0 &amp;#39;𛂰&amp;#39; U+1B0B1 &amp;#39;𛂱&amp;#39; U+1B0B2 &amp;#39;𛂲&amp;#39; U+1B0B3 &amp;#39;𛂳&amp;#39; U+1B0B4 &amp;#39;𛂴&amp;#39; U+1B0B5 &amp;#39;𛂵&amp;#39; U+1B0B6 &amp;#39;𛂶&amp;#39; U+1B0B7 &amp;#39;𛂷&amp;#39; U+1B0B8 &amp;#39;𛂸&amp;#39; U+1B0B9 &amp;#39;𛂹&amp;#39; U+1B0BA &amp;#39;𛂺&amp;#39; U+1B0BB &amp;#39;𛂻&amp;#39; U+1B0BC &amp;#39;𛂼&amp;#39; U+1B0BD &amp;#39;𛂽&amp;#39; U+1B0BE &amp;#39;𛂾&amp;#39; U+1B0BF &amp;#39;𛂿&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0C0 &amp;#39;𛃀&amp;#39; U+1B0C1 &amp;#39;𛃁&amp;#39; U+1B0C2 &amp;#39;𛃂&amp;#39; U+1B0C3 &amp;#39;𛃃&amp;#39; U+1B0C4 &amp;#39;𛃄&amp;#39; U+1B0C5 &amp;#39;𛃅&amp;#39; U+1B0C6 &amp;#39;𛃆&amp;#39; U+1B0C7 &amp;#39;𛃇&amp;#39; U+1B0C8 &amp;#39;𛃈&amp;#39; U+1B0C9 &amp;#39;𛃉&amp;#39; U+1B0CA &amp;#39;𛃊&amp;#39; U+1B0CB &amp;#39;𛃋&amp;#39; U+1B0CC &amp;#39;𛃌&amp;#39; U+1B0CD &amp;#39;𛃍&amp;#39; U+1B0CE &amp;#39;𛃎&amp;#39; U+1B0CF &amp;#39;𛃏&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0D0 &amp;#39;𛃐&amp;#39; U+1B0D1 &amp;#39;𛃑&amp;#39; U+1B0D2 &amp;#39;𛃒&amp;#39; U+1B0D3 &amp;#39;𛃓&amp;#39; U+1B0D4 &amp;#39;𛃔&amp;#39; U+1B0D5 &amp;#39;𛃕&amp;#39; U+1B0D6 &amp;#39;𛃖&amp;#39; U+1B0D7 &amp;#39;𛃗&amp;#39; U+1B0D8 &amp;#39;𛃘&amp;#39; U+1B0D9 &amp;#39;𛃙&amp;#39; U+1B0DA &amp;#39;𛃚&amp;#39; U+1B0DB &amp;#39;𛃛&amp;#39; U+1B0DC &amp;#39;𛃜&amp;#39; U+1B0DD &amp;#39;𛃝&amp;#39; U+1B0DE &amp;#39;𛃞&amp;#39; U+1B0DF &amp;#39;𛃟&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0E0 &amp;#39;𛃠&amp;#39; U+1B0E1 &amp;#39;𛃡&amp;#39; U+1B0E2 &amp;#39;𛃢&amp;#39; U+1B0E3 &amp;#39;𛃣&amp;#39; U+1B0E4 &amp;#39;𛃤&amp;#39; U+1B0E5 &amp;#39;𛃥&amp;#39; U+1B0E6 &amp;#39;𛃦&amp;#39; U+1B0E7 &amp;#39;𛃧&amp;#39; U+1B0E8 &amp;#39;𛃨&amp;#39; U+1B0E9 &amp;#39;𛃩&amp;#39; U+1B0EA &amp;#39;𛃪&amp;#39; U+1B0EB &amp;#39;𛃫&amp;#39; U+1B0EC &amp;#39;𛃬&amp;#39; U+1B0ED &amp;#39;𛃭&amp;#39; U+1B0EE &amp;#39;𛃮&amp;#39; U+1B0EF &amp;#39;𛃯&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B0F0 &amp;#39;𛃰&amp;#39; U+1B0F1 &amp;#39;𛃱&amp;#39; U+1B0F2 &amp;#39;𛃲&amp;#39; U+1B0F3 &amp;#39;𛃳&amp;#39; U+1B0F4 &amp;#39;𛃴&amp;#39; U+1B0F5 &amp;#39;𛃵&amp;#39; U+1B0F6 &amp;#39;𛃶&amp;#39; U+1B0F7 &amp;#39;𛃷&amp;#39; U+1B0F8 &amp;#39;𛃸&amp;#39; U+1B0F9 &amp;#39;𛃹&amp;#39; U+1B0FA &amp;#39;𛃺&amp;#39; U+1B0FB &amp;#39;𛃻&amp;#39; U+1B0FC &amp;#39;𛃼&amp;#39; U+1B0FD &amp;#39;𛃽&amp;#39; U+1B0FE &amp;#39;𛃾&amp;#39; U+1B0FF &amp;#39;𛃿&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B100 &amp;#39;𛄀&amp;#39; U+1B101 &amp;#39;𛄁&amp;#39; U+1B102 &amp;#39;𛄂&amp;#39; U+1B103 &amp;#39;𛄃&amp;#39; U+1B104 &amp;#39;𛄄&amp;#39; U+1B105 &amp;#39;𛄅&amp;#39; U+1B106 &amp;#39;𛄆&amp;#39; U+1B107 &amp;#39;𛄇&amp;#39; U+1B108 &amp;#39;𛄈&amp;#39; U+1B109 &amp;#39;𛄉&amp;#39; U+1B10A &amp;#39;𛄊&amp;#39; U+1B10B &amp;#39;𛄋&amp;#39; U+1B10C &amp;#39;𛄌&amp;#39; U+1B10D &amp;#39;𛄍&amp;#39; U+1B10E &amp;#39;𛄎&amp;#39; U+1B10F &amp;#39;𛄏&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B110 &amp;#39;𛄐&amp;#39; U+1B111 &amp;#39;𛄑&amp;#39; U+1B112 &amp;#39;𛄒&amp;#39; U+1B113 &amp;#39;𛄓&amp;#39; U+1B114 &amp;#39;𛄔&amp;#39; U+1B115 &amp;#39;𛄕&amp;#39; U+1B116 &amp;#39;𛄖&amp;#39; U+1B117 &amp;#39;𛄗&amp;#39; U+1B118 &amp;#39;𛄘&amp;#39; U+1B119 &amp;#39;𛄙&amp;#39; U+1B11A &amp;#39;𛄚&amp;#39; U+1B11B &amp;#39;𛄛&amp;#39; U+1B11C &amp;#39;𛄜&amp;#39; U+1B11D &amp;#39;𛄝&amp;#39; U+1B11E &amp;#39;𛄞&amp;#39; U+1B11F &amp;#39;𛄟&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U+1B120 &amp;#39;𛄠&amp;#39; U+1B121 &amp;#39;𛄡&amp;#39; U+1B122 &amp;#39;𛄢&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;皆さんの環境では見えるだろうか。&lt;/p&gt;
&lt;p&gt;ちなみに &lt;code&gt;U+1B000&lt;/code&gt; (𛀀) および &lt;code&gt;U+1B001&lt;/code&gt; (𛀁) は Unicode 6 で “Historic Katakana” および “Historic Hiragana” として収録されたそうで，これまでの NOTO 日本語フォント等で表示できる。
また &lt;code&gt;U+1B120&lt;/code&gt; (𛄠), &lt;code&gt;U+1B121&lt;/code&gt; (𛄡), &lt;code&gt;U+1B122&lt;/code&gt; (𛄢) は “Historic Katakana” として Unicode 14 で追加されたそうだ。&lt;/p&gt;
&lt;p&gt;同じく Unicode 14 で追加された &lt;code&gt;U+1B11F&lt;/code&gt; は表示されないのか？ いや &lt;code&gt;U+1B11F&lt;/code&gt; は “Historic Hiragana” に分類されているから “Hentaigana” ではないという判定なのかな？ でもでも，上述の “Historic Katakana” は &lt;code&gt;U+1B122&lt;/code&gt; まで表示できるんだよな。
うーむ，よく分からん。&lt;/p&gt;
&lt;p&gt;まっ，細かいことは置いておいて，例として蕎麦屋の看板や暖簾に書かれている変体仮名「𛁛𛂦゙」を挙げてみる。
あれって元は「楚（そ）」「者（は）」なんだそうで&lt;/p&gt;
&lt;p&gt;楚 → 𛁛 (&lt;code&gt;U+1B05B&lt;/code&gt;)&lt;br&gt;
者 → 𛂦゙ (&lt;code&gt;U+1B0A6&lt;/code&gt; + &lt;code&gt;U+3099&lt;/code&gt;; 濁点が付いてる)&lt;br&gt;&lt;/p&gt;
&lt;p&gt;ってな感じらしい。
勉強になりました。&lt;/p&gt;
&lt;p&gt;「&lt;a href=&#34;https://text.baldanders.info/hentaigana-table/&#34; target=&#34;_blank&#34;&gt;変体仮名一覧&lt;/a&gt;」に変体仮名の各文字に対応する読みと元になる漢字を表にまとめてみた。
参考にどうぞ。
𛂙（乃）や 𛃀（本）といった文字は今でもたまに見かける。
そういえば，花札の赤短に書かれている「あかよろし&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;」の「か」は変体仮名で「𛀙（可）」と表記されているため，つい「あのよろし」とか読んでしまう（笑） こんな感じで変体仮名がしれっと紛れていることがあるので油断できない。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;span&gt;&lt;a href=&#34;https://www.unicode.org/charts/PDF/U1B000.pdf&#34;&gt;Kana Supplement Range: 1B000–1B0FF &lt;sup&gt;&lt;i class=&#34;far fa-file-pdf&#34;&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;a href=&#34;https://www.unicode.org/charts/PDF/U1B100.pdf&#34;&gt;Kana Extended-A Range: 1B100–1B12F &lt;sup&gt;&lt;i class=&#34;far fa-file-pdf&#34;&gt;&lt;/i&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ja.wikipedia.org/wiki/%E5%A4%89%E4%BD%93%E4%BB%AE%E5%90%8D&#34; target=&#34;_blank&#34;&gt;変体仮名 - Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://rakujyo.com/blog/sobaya-anoji/&#34; target=&#34;_blank&#34;&gt;蕎麦屋の暖簾に書いてあるあの難しい字・・・なにあれ？＝Sobapedia＝ | 出張そば打ち体験～SOBAUCHI 楽常～&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2022/09/rollback-web-fonts/&#34; target=&#34;_blank&#34;&gt;結局 Google Fonts に巻き戻した。そしてモリサワ BIZ UD フォント採用へ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/09/intel-one-mono-font/&#34; target=&#34;_blank&#34;&gt;Intel One Mono フォントに換装する&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考図書&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/41meaSLNFfL._SL160_.jpg&#34; width=&#34;122&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;丸善出版 2016-06-20&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;著者のひとりは（あの「バイブル」とも呼ばれる）通称 “K&amp;amp;R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。と思ったら絶版状態らしい（2025-01 現在）。復刊を望む！&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2016-07-13&#34;&gt;2016-07-13&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- プログラミング言語Go --&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;変体仮名とは，簡単に言うと仮名の異体字のこと。変体仮名は明治時代に廃止されたが，店の看板などで依然使われている。コンピュータ・システムでは，地名や古い戸籍の人名などで使われていることがあるそうで「住民基本台帳収録変体仮名」として一部の変体仮名が運用されていたらしい。その後 Unicode 10 から本格的に変体仮名がサポートされるようになった。フォントとしては「&lt;a href=&#34;https://moji.or.jp/mojikiban/font/&#34; target=&#34;_blank&#34; title=&#34;IPAmj明朝フォント | 一般社団法人 文字情報技術促進協議会&#34;&gt;IPAmj明朝フォント&lt;/a&gt;」が変体仮名を含む異体字を幅広くカバーしている。&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;「あかよろし」は「めっちゃいい！」くらいの意味（笑）&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content>
	</entry><entry>
		<title>text.Baldanders[.]info 10周年</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/10/a-decade-of-textbaldandersinfo/" />
		<id>tag:text.Baldanders.info,2025-10-01:/remark/2025/10/a-decade-of-textbaldandersinfo/</id>
		<published>2025-10-01T08:51:20+00:00</published>
		<updated>2025-10-01T08:51:41+00:00</updated>
		<summary>今回は「自分にご褒美」とか特にないっス。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;このブログサイトを正式にオープンしてからちょうど10年が経った。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2015/open-this-site/&#34; target=&#34;_blank&#34;&gt;text.Baldanders.info 正式オープン&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日記やブログのツール・サービスに関しては割と頻繁に乗り換えているのだが，単一のツールでは2番目に長続きしている。
我が事ながら &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; ＋ &lt;a href=&#34;https://docs.github.com/pages&#34; target=&#34;_blank&#34; title=&#34;GitHub Pages documentation - GitHub Docs&#34;&gt;GitHub Pages&lt;/a&gt; という組み合わせは性に合ってるらしい。&lt;/p&gt;
&lt;p&gt;前のブログは11年続いたのが，このブログを再来年まで続ければ最長不到記録に至る。
いつまで続けられるかねぇ。
ともかく，これまでどおり「書きたくないときには書かない」「他人の評価など気にしない」というスタンスで緩々とやって行く所存である。&lt;/p&gt;
&lt;p&gt;あっ，今回は「自分にご褒美」とか特にないっス。
今年は色々と節目の年なのでそれどころじゃないっちうか&amp;hellip;&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/06/25th-years-anniversary/&#34; target=&#34;_blank&#34;&gt;25周年 〜四半世紀もだらだら続けちゃったョ 記念〜&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/10/20th-anniversary-of-baldandersinfo/&#34; target=&#34;_blank&#34;&gt;Baldanders.info 開設20周年記念&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>Intel One Mono フォントに換装する</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/09/intel-one-mono-font/" />
		<id>tag:text.Baldanders.info,2025-09-16:/remark/2025/09/intel-one-mono-font/</id>
		<published>2025-09-16T03:31:07+00:00</published>
		<updated>2025-10-02T07:27:42+00:00</updated>
		<summary>Google Fonts にも収録されていた</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;五十路に入ってからから近視・乱視・老眼の三重苦になり，&lt;a href=&#34;https://text.baldanders.info/remark/2021/08/age-of-reading-glasses/&#34; target=&#34;_blank&#34; title=&#34;老眼鏡の季節&#34;&gt;2種類の眼鏡&lt;/a&gt;を使い分けてるのだが，特にモニタでプログラム・コードを読むのがしんどくなりつつある。&lt;/p&gt;
&lt;p&gt;というところで以下の記事を見かけた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/review/2046577.html&#34; target=&#34;_blank&#34;&gt;Intelが開発したフォント「Intel One Mono」、目が悪くても読みやすいコーディング向けフォント【レビュー】 - 窓の杜&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ひょっとしてこれは私向きか？&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://github.com/intel/intel-one-mono&#34;&gt;
&lt;a href=&#34;https://github.com/intel/intel-one-mono&#34;&gt;&lt;img src=&#34;./239321698-6c921cf4-f614-41bd-a909-363bb19f9a30.png&#34; srcset=&#34;./239321698-6c921cf4-f614-41bd-a909-363bb19f9a30.png 5334w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;intel/intel-one-mono: Intel One Mono font repository&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://github.com/intel/intel-one-mono&#34;&gt;intel/intel-one-mono: Intel One Mono font repository&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;私は古い人間なので，ゼロは “$\emptyset$” (empty set) みたいに斜線が入ってないと嫌なのよ（だから今までずっと &lt;a href=&#34;http://www.levien.com/type/myfonts/inconsolata.html&#34; target=&#34;_blank&#34; title=&#34;Inconsolata&#34;&gt;Inconsolata&lt;/a&gt; を使っていた）。
数字の &lt;code&gt;1&lt;/code&gt; と大文字の &lt;code&gt;I&lt;/code&gt; と小文字の &lt;code&gt;l&lt;/code&gt;，小文字の &lt;code&gt;i&lt;/code&gt; と &lt;code&gt;j&lt;/code&gt; の区別も分かりやすいし，記号類もデフォルメされてる感じで見やすい。
これならイケそうかな。
早速ローカルにインストールしてみよう。&lt;/p&gt;
&lt;p&gt;リポジトリの&lt;a href=&#34;https://github.com/intel/intel-one-mono/releases&#34; target=&#34;_blank&#34; title=&#34;Releases · intel/intel-one-mono&#34;&gt;リリースページ&lt;/a&gt;にある最新版の &lt;code&gt;otf.zip&lt;/code&gt; (zip 圧縮されている) を取ってくる。
Ubuntu の場合は，展開して取得した &lt;code&gt;*.otf&lt;/code&gt; ファイルを全て &lt;code&gt;/usr/local/share/fonts/&lt;/code&gt; または &lt;code&gt;~/.local/share/fonts/&lt;/code&gt; ディレクトリに放り込めばOK。
その後&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ fc-cache -fv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;でフォントキャッシュを更新するのを忘れないように。
上手くインストールできれば&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ fc-list | grep Intel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-Light.otf: Intel One Mono,Intel One Mono Light:style=Light,Regular
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-Italic.otf: Intel One Mono:style=Italic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-Medium.otf: Intel One Mono,Intel One Mono Medium:style=Medium,Regular
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-Regular.otf: Intel One Mono:style=Regular
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-MediumItalic.otf: Intel One Mono,Intel One Mono Medium:style=Medium Italic,Italic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-LightItalic.otf: Intel One Mono,Intel One Mono Light:style=Light Italic,Italic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-Bold.otf: Intel One Mono:style=Bold
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/share/fonts/IntelOneMono-BoldItalic.otf: Intel One Mono:style=Bold Italic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;みたいな感じにリスト表示できる。&lt;/p&gt;
&lt;p&gt;VS Code で &lt;a href=&#34;https://github.com/intel/intel-one-mono&#34; target=&#34;_blank&#34; title=&#34;intel/intel-one-mono: Intel One Mono font repository&#34;&gt;Intel One Mono&lt;/a&gt; フォントを使うには “Font Family” 項目で&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./vscode-setting.png&#34;&gt;&lt;img src=&#34;./vscode-setting.png&#34; srcset=&#34;./vscode-setting.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Font Family の設定例&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./vscode-setting.png&#34;&gt;Font Family の設定例&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;という感じに &lt;code&gt;&#39;Intel One Mono&#39;&lt;/code&gt; または &lt;code&gt;&#39;Intel One Mono Medium&#39;&lt;/code&gt; を最初に指定すればよい。
VS Code は複数フォントを（並び順で優先順位を決めて）指定できるのが嬉しい。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/intel/intel-one-mono&#34; target=&#34;_blank&#34; title=&#34;intel/intel-one-mono: Intel One Mono font repository&#34;&gt;リポジトリ&lt;/a&gt;を見ると現在最新の V1.4.0 のリリースは 2024-07-26 らしい。
これって Google Fonts にも収録されている？ と思って探したらありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://fonts.google.com/specimen/Intel&amp;#43;One&amp;#43;Mono&#34; target=&#34;_blank&#34;&gt;Intel One Mono - Google Fonts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ってことは，Web フォントとしても使えるってことか。
このブログサイトでの設定は以下のようにしてみた。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preconnect&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.gstatic.com&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;crossorigin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://fonts.googleapis.com/css2?family=BIZ+UDGothic:wght@400;700&amp;amp;family=BIZ+UDMincho:wght@400;700&amp;amp;family=Intel+One+Mono:ital,wght@0,300..700;1,300..700&amp;amp;family=Noto+Color+Emoji&amp;amp;family=Noto+Sans:ital,wght@0,100..900;1,100..900&amp;amp;family=Noto+Serif:wght@100..900&amp;amp;display=swap&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;試しに何かコードを表示してみよう。
今年の始めに紹介した2025年の干支を求める Go プログラムを表示してみる。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; cite=&#34;/remark/2025/01/cardiac-rehabilitation-2025/&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/goark/koyomi/zodiac&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2025&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;干&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;支&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;zodiac&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ZodiacYearNumber&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;%d年は%v%v，恵方は%v (%v°)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;干&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;支&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;干&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;DirectionJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;干&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Direction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/01/cardiac-rehabilitation-2025/&#34;&gt;2025年も心臓リハビリ＠がんばらない&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;上手く表示できてるかな。
皆さんの環境ではどうだろう。&lt;/p&gt;
&lt;p&gt;括弧などの記号が見やすいのがよい。
エディタと Web フォントは &lt;a href=&#34;https://github.com/intel/intel-one-mono&#34; target=&#34;_blank&#34; title=&#34;intel/intel-one-mono: Intel One Mono font repository&#34;&gt;Intel One Mono&lt;/a&gt; でいこう。
私文書は &lt;a href=&#34;http://www.levien.com/type/myfonts/inconsolata.html&#34; target=&#34;_blank&#34; title=&#34;Inconsolata&#34;&gt;Inconsolata&lt;/a&gt; のままでいいかな。
そもそも紙（含PDF）に書くような文書でコードを書くことは少ないしな。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/2050715.html&#34; target=&#34;_blank&#34;&gt;「Intel One Mono」を日本語向けにアレンジ、弱視でも読みやすい「Mint Mono」が公開 - 窓の杜&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2022/09/rollback-web-fonts/&#34; target=&#34;_blank&#34;&gt;結局 Google Fonts に巻き戻した。そしてモリサワ BIZ UD フォント採用へ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>OpenPGP 公開鍵を新しくした</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/03/renewal-openpgp-key/" />
		<id>tag:text.Baldanders.info,2025-03-30:/remark/2025/03/renewal-openpgp-key/</id>
		<published>2025-03-30T12:03:33+00:00</published>
		<updated>2025-03-30T12:09:11+00:00</updated>
		<summary>OpenPGP 公開鍵を新しくした / OpenPGP 鍵作成手順 / OpenPGP と LibrePGP</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;h2&gt;OpenPGP 公開鍵を新しくした&lt;/h2&gt;
&lt;p&gt;昨年，ようやく Ubuntu 内の &lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; が 2.4 系に上がったので，いよいよ OpenPGP 公開鍵を新しくすることにした。
新しい鍵は本家サイトの以下のページにある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://baldanders.info/pubkeys/&#34; target=&#34;_blank&#34;&gt;OpenPGP 公開鍵リスト&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最初「&lt;a href=&#34;https://text.baldanders.info/remark/2021/03/changing-publickey-management/&#34; target=&#34;_blank&#34; title=&#34;Baldanders.info サイトにおける OpenPGP 鍵管理の変更&#34;&gt;来年からまた短期の運用に戻そう&lt;/a&gt;」と思っていた。
ここ3年間，有効期限の延長しかしてないけど&amp;hellip; 正直ダルい。
というわけで2030年までの長期運用にした。
なぜ無期限にしなかったのかについては後述する。&lt;/p&gt;
&lt;h2&gt;OpenPGP 鍵作成手順&lt;/h2&gt;
&lt;p&gt;今回は&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;証明専用の主鍵を作成する&lt;/li&gt;
&lt;li&gt;署名用の副鍵を作成する&lt;/li&gt;
&lt;li&gt;暗号用の副鍵を作成する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という3ステップで作成した&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;まずは主鍵の作成&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg --full-gen-key --expert
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is free software: you are free to change and redistribute it.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;There is NO WARRANTY, to the extent permitted by law.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の鍵の種類を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (1) RSA と RSA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (2) DSA と Elgamal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) DSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) RSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) DSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) RSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (9) ECC (署名と暗号化) *デフォルト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (10) ECC (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (11) ECC (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (13) 既存の鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (14) カードに存在する鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このECC鍵にありうる操作: Sign Certify Authenticate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;現在の認められた操作: Sign Certify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (S) 署名機能を反転する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (A) 認証機能を反転する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (Q) 完了
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このECC鍵にありうる操作: Sign Certify Authenticate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;現在の認められた操作: Certify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (S) 署名機能を反転する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (A) 認証機能を反転する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (Q) 完了
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? q
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の楕円曲線を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (1) Curve 25519 *デフォルト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (2) Curve 448
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) NIST P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) NIST P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (5) NIST P-521
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (6) Brainpool P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) Brainpool P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) Brainpool P-512
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (9) secp256k1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期限を指定してください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         0 = 鍵は無期限
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;  = 鍵は n 日間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;w = 鍵は n 週間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;m = 鍵は n か月間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;y = 鍵は n 年間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期間は? (0) 1828
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵は2030年04月01日 13時21分30秒 JSTで期限切れとなります
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;これで正しいですか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;本名: Spiegel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;電子メール・アドレス: spiegel@example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;コメント: main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;次のユーザIDを選択しました:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; 2.4 系では &lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; が既定になった&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;。
楕円曲線に &lt;code&gt;Curve 25519&lt;/code&gt; または &lt;code&gt;Curve 448&lt;/code&gt; を選択すれば &lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; にできる。&lt;/p&gt;
&lt;p&gt;署名用の副鍵の作成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg --edit-key --expert 1A69C1BE7345EDF6EF52B2EE21FD7CE9BC554D13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is free software: you are free to change and redistribute it.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;There is NO WARRANTY, to the extent permitted by law.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;秘密鍵が利用できます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 信用データベースの検査
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: marginals needed: 3  completes needed: 1  trust model: pgp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 深さ: 0  有効性:   4  署名:   4  信用: 0-, 0q, 0n, 0m, 0f, 4u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 深さ: 1  有効性:   4  署名:   0  信用: 2-, 0q, 0n, 1m, 1f, 0u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 次回の信用データベース検査は、2025-04-01です
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sec  ed25519/21FD7CE9BC554D13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: C
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     信用: 究極        有効性: 究極
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (1). Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; addkey
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の鍵の種類を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) DSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) RSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (5) Elgamal (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (6) RSA (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) DSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) RSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (10) ECC (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (11) ECC (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (12) ECC (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (13) 既存の鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (14) カードに存在する鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の楕円曲線を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (1) Curve 25519 *デフォルト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (2) Curve 448
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) NIST P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) NIST P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (5) NIST P-521
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (6) Brainpool P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) Brainpool P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) Brainpool P-512
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (9) secp256k1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期限を指定してください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         0 = 鍵は無期限
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;  = 鍵は n 日間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;w = 鍵は n 週間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;m = 鍵は n か月間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;y = 鍵は n 年間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期間は? (0) 1828
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵は2030年04月01日 13時27分57秒 JSTで期限切れとなります
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;これで正しいですか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;本当に作成しますか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今回は &lt;code&gt;gpg --edit-key&lt;/code&gt; コマンドで対話モードを起動し &lt;code&gt;addkey&lt;/code&gt; コマンドで署名鍵を追加している&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;。
署名鍵も &lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; で作成する。&lt;/p&gt;
&lt;p&gt;さくさく行こう。
次は暗号用の副鍵の作成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; addkey
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の鍵の種類を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) DSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) RSA (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (5) Elgamal (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (6) RSA (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) DSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) RSA (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (10) ECC (署名のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (11) ECC (機能をあなた自身で設定)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (12) ECC (暗号化のみ)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (13) 既存の鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  (14) カードに存在する鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 12
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ご希望の楕円曲線を選択してください:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (1) Curve 25519 *デフォルト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (2) Curve 448
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (3) NIST P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (4) NIST P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (5) NIST P-521
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (6) Brainpool P-256
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (7) Brainpool P-384
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (8) Brainpool P-512
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (9) secp256k1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたの選択は? 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期限を指定してください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         0 = 鍵は無期限
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;  = 鍵は n 日間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;w = 鍵は n 週間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;m = 鍵は n か月間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;lt;n&amp;gt;y = 鍵は n 年間で期限切れ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵の有効期間は? (0) 1828
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;鍵は2030年04月01日 13時34分28秒 JSTで期限切れとなります
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;これで正しいですか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;本当に作成しますか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; と対となるよう楕円曲線暗号（ECDH アルゴリズム）で &lt;code&gt;Curve 25519&lt;/code&gt; を選択する。&lt;/p&gt;
&lt;p&gt;ついでに作成した鍵に私の眠り猫アイコンを仕込んでおく。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; addphoto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;あなたのフォトIDに使う画像を決めてください。画像はJPEGファイルである必
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要があります。画像は公開鍵といっしょに格納される、ということを念頭にお
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;いておきましょう。もし大きな写真を使うと、あなたの鍵も同様に大きくなり
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ます! 240x288くらいにおさまる大きさの画像は、使いよいでしょう。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;フォトID用のJPEGファイル名を入力してください: /path/to/avatar.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この写真は正しいですか (y/N/q)? y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後に &lt;code&gt;save&lt;/code&gt; コマンドで保存し &lt;code&gt;edit&lt;/code&gt; モードを終了する。&lt;/p&gt;
&lt;h2&gt;OpenPGP と LibrePGP&lt;/h2&gt;
&lt;p&gt;今回の鍵の変更や拙作 &lt;a href=&#34;https://github.com/goark/gpgpdump&#34; target=&#34;_blank&#34; title=&#34;goark/gpgpdump: OpenPGP packet visualizer&#34;&gt;gpgpdump&lt;/a&gt; のための調査で気がついたが OpenPGP と &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; は仕様レベルで違うものらしい。&lt;/p&gt;
&lt;p&gt;OpenPGP は2024年7月にリリースされた &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt; で標準化されているが，それとは別に &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; ってのがあって &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-koch-librepgp/&#34; target=&#34;_blank&#34; title=&#34;draft-koch-librepgp - LibrePGP Message Format&#34;&gt;draft-koch-librepgp&lt;/a&gt; にて議論されているっぽい。&lt;/p&gt;
&lt;p&gt;OpenPGP (&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt;) と &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; の最大の違いはパケットバージョンで， &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; が &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-ietf-openpgp-rfc4880bis/&#34; target=&#34;_blank&#34; title=&#34;draft-ietf-openpgp-rfc4880bis - OpenPGP Message Format&#34;&gt;RFC 4880bis&lt;/a&gt; の V5 パケット仕様を引き継いでいるのに対し OpenPGP は &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-ietf-openpgp-rfc4880bis/&#34; target=&#34;_blank&#34; title=&#34;draft-ietf-openpgp-rfc4880bis - OpenPGP Message Format&#34;&gt;RFC 4880bis&lt;/a&gt; を仕切り直した draft-ietf-openpgp-crypto-refresh の議論の中で V5 パケットを捨て V6 パケットを定義している。
この違いで影響するのが楕円曲線暗号, AEAD (Authenticated Encryption with Associated Data; 認証付き暗号), 鍵指紋, および耐量子コンピュータ暗号 (Post-Quantum cryptography) である。&lt;/p&gt;
&lt;p&gt;ちなみに耐量子コンピュータ暗号は OpenPGP 側は &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-ietf-openpgp-pqc/&#34; target=&#34;_blank&#34; title=&#34;draft-ietf-openpgp-pqc - Post-Quantum Cryptography in OpenPGP&#34;&gt;draft-ietf-openpgp-pqc&lt;/a&gt; にて &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; 側は &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-koch-librepgp/&#34; target=&#34;_blank&#34; title=&#34;draft-koch-librepgp - LibrePGP Message Format&#34;&gt;draft-koch-librepgp&lt;/a&gt; にて検討されている。
また公開テスト中の &lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; 2.5 系では &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-koch-librepgp/&#34; target=&#34;_blank&#34; title=&#34;draft-koch-librepgp - LibrePGP Message Format&#34;&gt;draft-koch-librepgp&lt;/a&gt; 仕様ベースで耐量子コンピュータ暗号の実装を行っているようだ（確認してない）。&lt;/p&gt;
&lt;p&gt;私は draft-ietf-openpgp-crypto-refresh で仕切り直される2021年あたりから次期 OpenPGP の議論を追い切れなくなっていて，こんなヘンテコなことになってるのに気づかなかった。
&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt; の “Authors” を見ると Proton AG や &lt;a href=&#34;https://sequoia-pgp.org/&#34; target=&#34;_blank&#34; title=&#34;Sequoia-PGP&#34;&gt;Sequoia PGP&lt;/a&gt; の中の人が名を連ねているのに対し &lt;a href=&#34;https://datatracker.ietf.org/doc/draft-koch-librepgp/&#34; target=&#34;_blank&#34; title=&#34;draft-koch-librepgp - LibrePGP Message Format&#34;&gt;draft-koch-librepgp&lt;/a&gt; は &lt;a href=&#34;https://g10code.com/&#34; target=&#34;_blank&#34; title=&#34;g10code.com&#34;&gt;g10 Code GmbH&lt;/a&gt; の Werner Koch さん（&lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; のメイン開発者）の名前が見える。&lt;/p&gt;
&lt;p&gt;なんか面倒臭いことになってる？&lt;/p&gt;
&lt;p&gt;ユーザ側が OpenPGP と &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; との間の差異で混乱するのは面白くないので，当面の間，以下の運用を行うことをオススメする。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;V5 および V6 パケットは使わない&lt;/li&gt;
&lt;li&gt;AEAD は使わない&lt;/li&gt;
&lt;li&gt;耐量子コンピュータ暗号には手を出さない&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;パケットバージョンの組み合わせに関しては &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt; で以下のように決められている。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;Signing Key &lt;br&gt;Version&lt;/th&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;Signature Packet &lt;br&gt;Version&lt;/th&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;One-Pass Signature &lt;br&gt;Packet Version&lt;/th&gt;
					&lt;th style=&#34;text-align: center&#34;&gt;Generate?&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v4&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v4&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v4&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v3&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v6&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v6&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;v6&lt;/td&gt;
					&lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;figcaption&gt;&lt;div&gt;OpenPGP 鍵および署名のバージョン&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt; では “Generate?” の項目が “Yes” の組み合わせのみ生成が許容される（“No” の組み合わせは後方互換のために残される）。
この表の下から2番目の組み合わせ（v4-v4-v3）であれば &lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; 2.4 系の通常の操作で作成・処理が可能である。&lt;/p&gt;
&lt;p&gt;AEAD に関しては OpenPGP と &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; との間に互換性はない。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gnupg.org/&#34; target=&#34;_blank&#34; title=&#34;The GNU Privacy Guard&#34;&gt;GnuPG&lt;/a&gt; 2.4 系で新たに生成した鍵に対し &lt;code&gt;gpg --edit-key&lt;/code&gt; コマンドを起動し選好（preferences）を &lt;code&gt;showpref&lt;/code&gt; コマンドで確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg --edit-key --expert 1A69C1BE7345EDF6EF52B2EE21FD7CE9BC554D13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is free software: you are free to change and redistribute it.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;There is NO WARRANTY, to the extent permitted by law.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;秘密鍵が利用できます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sec  ed25519/21FD7CE9BC554D13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: C
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     信用: 究極        有効性: 究極
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssb  ed25519/74DCA828DC07B24C
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: S
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssb  cv25519/0E25614837E634DC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: E
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (1). Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (2)  [jpeg image of size 5707]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; showpref
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (1). Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     暗号方式: AES256, AES192, AES, 3DES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     AEAD: OCB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ダイジェスト: SHA512, SHA384, SHA256, SHA224, SHA1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     圧縮: ZLIB, BZIP2, ZIP, 無圧縮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     機能: MDC, AEAD, 鍵サーバ 修正しない
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (2)  [jpeg image of size 5707]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     暗号方式: AES256, AES192, AES, 3DES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     AEAD: OCB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ダイジェスト: SHA512, SHA384, SHA256, SHA224, SHA1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     圧縮: ZLIB, BZIP2, ZIP, 無圧縮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     機能: MDC, AEAD, 鍵サーバ 修正しない
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここで機能として AEAD がリストアップされている場合は (相手が AEAD を使えるなら) AEAD を暗号化に使用する。
AEAD を使わせないようにするため &lt;code&gt;OCB&lt;/code&gt; を除くアルゴリズムを &lt;code&gt;setpref&lt;/code&gt; コマンドで指定する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; setpref AES256 AES192 AES SHA512 SHA384 SHA256 SHA224 ZLIB BZIP2 ZIP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;優先指定の一覧を設定:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     暗号方式: AES256, AES192, AES, 3DES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     AEAD:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ダイジェスト: SHA512, SHA384, SHA256, SHA224, SHA1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     圧縮: ZLIB, BZIP2, ZIP, 無圧縮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     機能: MDC, 鍵サーバ 修正しない
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;優先指定を本当に更新しますか? (y/N) y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sec  ed25519/21FD7CE9BC554D13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: C
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     信用: 究極        有効性: 究極
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssb  ed25519/74DCA828DC07B24C
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: S
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssb  cv25519/0E25614837E634DC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     作成: 2025-03-30  有効期限: 2030-04-01  利用法: E
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (1). Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (2)  [jpeg image of size 5707]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; showpref
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (1). Spiegel (main) &amp;lt;spiegel@example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     暗号方式: AES256, AES192, AES, 3DES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     AEAD:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ダイジェスト: SHA512, SHA384, SHA256, SHA224, SHA1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     圧縮: ZLIB, BZIP2, ZIP, 無圧縮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     機能: MDC, 鍵サーバ 修正しない
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[  究極  ] (2)  [jpeg image of size 5707]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     暗号方式: AES256, AES192, AES, 3DES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     AEAD:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ダイジェスト: SHA512, SHA384, SHA256, SHA224, SHA1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     圧縮: ZLIB, BZIP2, ZIP, 無圧縮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     機能: MDC, 鍵サーバ 修正しない
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg&amp;gt; save
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後の耐量子コンピュータ暗号についてだが OpenPGP にせよ &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; にせよ，まだドラフト段階のため（公開テスト等に参加するのでなければ）急ぐ必要はない。
その辺も含め2030年頃には OpenPGP と &lt;a href=&#34;https://librepgp.org/&#34; target=&#34;_blank&#34; title=&#34;LibrePGP&#34;&gt;LibrePGP&lt;/a&gt; の歪な状況もどうにか解決してないかなぁ，と希望を込めて2030年で有効期限を切ったのであった。&lt;/p&gt;
&lt;p&gt;この記事の内容をもう少し整理して「&lt;a href=&#34;https://text.baldanders.info/openpgp/&#34; target=&#34;_blank&#34;&gt;OpenPGP の実装&lt;/a&gt;」セクションにまとめる予定（予定は未定）。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://openpgp.dev/book/migration.html&#34; target=&#34;_blank&#34;&gt;17. Migration from OpenPGP v4 to v6 — OpenPGP for application developers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/GnuPG#OpenPGP_compatibility&#34; target=&#34;_blank&#34;&gt;OpenPGP compatibility - GnuPG - ArchWiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.gnupg.org/OpenPGPEmailSummit202305Notes&#34; target=&#34;_blank&#34;&gt;OpenPGPEmailSummit202305Notes - GnuPG wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://didisoft.com/2024/10/08/openpgp-updates-librepgp-and-rfc-9580/&#34; target=&#34;_blank&#34;&gt;OpenPGP updates, LibrePGP and RFC 9580&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://gitlab.com/sequoia-pgp/sequoia&#34; target=&#34;_blank&#34;&gt;sequoia-pgp / sequoia · GitLab&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/rpgp/rpgp&#34; target=&#34;_blank&#34;&gt;rpgp/rpgp: OpenPGP implemented in pure Rust, permissively licensed&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/openpgp/algorithms-for-openpgp-rfc9580/&#34; target=&#34;_blank&#34;&gt;OpenPGP で利用可能なアルゴリズム（RFC 9580 対応版）&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/openpgp/ssh-key-management-with-gnupg/&#34; target=&#34;_blank&#34;&gt;OpenSSH の認証鍵を GunPG で作成・管理する&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考図書&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4314009071?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51ZRZ62WKCL._SL160_.jpg&#34; width=&#34;108&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4314009071?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;暗号化 プライバシーを救った反乱者たち&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;スティーブン・レビー (著), 斉藤 隆央 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;紀伊國屋書店 2002-02-16&lt;/dd&gt;
    &lt;dd&gt;単行本&lt;/dd&gt;
    &lt;dd&gt;4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;20世紀末，暗号技術の世界で何があったのか。知りたかったらこちらを読むべし！&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2015-03-09&#34;&gt;2015-03-09&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- 暗号化 プライバシーを救った反乱者たち --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B015643CPE?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51t6yHHVwEL._SL160_.jpg&#34; width=&#34;113&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/B015643CPE?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;暗号技術入門 第3版　秘密の国のアリス&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;結城 浩 (著)&lt;/dd&gt;
    &lt;dd&gt;SBクリエイティブ 2015-08-25 (Release 2015-09-17)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B015643CPE (ASIN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2015-09-20&#34;&gt;2015-09-20&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- 暗号技術入門 第3版 --&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;主鍵から署名機能を分離することで個別に有効期限を設定したりトラブルで署名鍵が（秘密鍵漏えい等で）使えなくなったときに簡単に分離できるようになる。まぁ主鍵が使えなくなったら副鍵もまとめてアウトだけど（笑） 運用する際は（オリジナルのバックアップを取った上で）主鍵の秘密鍵だけ分離して使うやりかたもある。&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;code&gt;gpg --quick-generate-key&lt;/code&gt; でコマンドライン上で ユーザID，アルゴリズム，用途，有効期限 を指定できる。楕円曲線暗号の場合は楕円曲線名を指定する。&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9580&#34; target=&#34;_blank&#34; title=&#34;RFC 9580 - OpenPGP&#34;&gt;RFC 9580&lt;/a&gt; では RSA, ElGamal, DSA は deprecated になった。多分この影響で既定から外れたのだろう。なお  &lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; は &lt;a href=&#34;https://csrc.nist.gov/publications/detail/fips/186/5/final&#34; target=&#34;_blank&#34; title=&#34;FIPS 186-5, Digital Signature Standard (DSS) | CSRC&#34;&gt;NIST FIPS 186-5&lt;/a&gt; にて&lt;a href=&#34;https://text.baldanders.info/remark/2023/02/nist-fips-186-5/&#34; target=&#34;_blank&#34; title=&#34;NIST FIPS 186-5 および SP 800-186 正式版がリリースされた&#34;&gt;標準のアルゴリズムになった&lt;/a&gt;。これで政府調達でもなんでも大手を振って &lt;a href=&#34;https://text.baldanders.info/remark/2020/06/eddsa/&#34; target=&#34;_blank&#34; title=&#34;Edwards-curve Digital Signature Algorithm&#34;&gt;EdDSA&lt;/a&gt; を使える。&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;code&gt;gpg --quick-add-key&lt;/code&gt; でコマンドライン上で副鍵の アルゴリズム，用途，有効期限 を指定できる。&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content>
	</entry>
</feed>
