<feed xmlns="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/">
	<title>List of Tools [text.Baldanders.info]</title>
	<link rel="alternate" type="text/html" href="https://text.baldanders.info/tags/tools/" />
	<link rel="self" type="application/atom+xml" href="https://text.baldanders.info/tags/tools/index.xml" />
	<id>tag:text.Baldanders.info,2026-04-09:/tags</id>
	<updated>2026-04-09T15:57:34+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>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>MPA for Linux でログイン検証（Linux で個人番号カードを読む 2）</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/04/login-myna-portal-etax-mpa-for-linux/" />
		<id>tag:text.Baldanders.info,2026-04-01:/remark/2026/04/login-myna-portal-etax-mpa-for-linux/</id>
		<published>2026-04-01T06:25:15+00:00</published>
		<updated>2026-04-01T06:51:16+00:00</updated>
		<summary>これで来年は自宅 Linux 機で確定申告できるな。</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/2026/03/read-individual-number-card-on-linux/&#34; target=&#34;_blank&#34; title=&#34;Linux で個人番号カードを読む&#34;&gt;前回&lt;/a&gt;の続き。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;myna のリポジトリ&lt;/a&gt;によると，サブプロジェクトの &lt;a href=&#34;https://github.com/jpki/myna/tree/master/mpa&#34; target=&#34;_blank&#34; title=&#34;MPA for Linux&#34;&gt;MPA for Linux&lt;/a&gt; を使って Linux の Web ブラウザでマイナポータルや e-Tax のサイトに個人番号カードを使ってログインできるらしい。
素晴らしい！&lt;/p&gt;
&lt;h2&gt;Rust ツールチェーンのインストール&lt;/h2&gt;
&lt;p&gt;事前準備として &lt;a href=&#34;https://rust-lang.org/&#34; target=&#34;_blank&#34; title=&#34;Rust Programming Language&#34;&gt;Rust&lt;/a&gt; ツールチェーンのインストールを行う。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://rust-lang.org/&#34; target=&#34;_blank&#34; title=&#34;Rust Programming Language&#34;&gt;Rust&lt;/a&gt; の&lt;a href=&#34;https://text.baldanders.info/rust-lang/&#34; target=&#34;_blank&#34;&gt;基礎勉強&lt;/a&gt;をしてたのはもう6年も前で，仕事に結びつくこともなかったので完全に放置していた。
しかも，あれから自宅パソコンを&lt;a href=&#34;https://text.baldanders.info/remark/2021/06/new-machine-here/&#34; target=&#34;_blank&#34; title=&#34;自宅マシンを買うた（これで私も人並みに...）&#34;&gt;買い替え&lt;/a&gt;たりして開発環境もなくなったので，インストールからやり直すことに。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://rust-lang.org/tools/install/&#34; target=&#34;_blank&#34; title=&#34;Install Rust - Rust Programming Language&#34;&gt;インストールページ&lt;/a&gt;に従って，以下のスクリプトをダウンロード&amp;amp;実行する。&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;$ curl --proto &amp;#39;=https&amp;#39; --tlsv1.2 -sSf https://sh.rustup.rs | sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: downloading installer
&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;Welcome to Rust!
&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;This will download and install the official compiler for the Rust
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;programming language, and its package manager, Cargo.
&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;   default host triple: x86_64-unknown-linux-gnu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     default toolchain: stable (default)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               profile: default
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  modify PATH variable: yes
&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) Proceed with standard installation (default - just press enter)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2) Customize installation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3) Cancel installation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今回はこのまま &lt;span class=&#34;box&#34;&gt; Enter &lt;/span&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;info: profile set to default
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: default host triple is x86_64-unknown-linux-gnu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: syncing channel updates for stable-x86_64-unknown-linux-gnu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: latest update on 2026-03-26 for version 1.94.1 (e408947bf 2026-03-25)
&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;Rust is installed now. Great!
&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;To get started you may need to restart your current shell.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This would reload your PATH environment variable to include
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cargo&amp;#39;s bin directory ($HOME/.cargo/bin).
&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;To configure your current shell, you need to source
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the corresponding env file under $HOME/.cargo.
&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;This is usually done by running one of the following (note the leading DOT):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;. &amp;#34;$HOME/.cargo/env&amp;#34;            # For sh/bash/zsh/ash/dash/pdksh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source &amp;#34;$HOME/.cargo/env.fish&amp;#34;  # For fish
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source &amp;#34;~/.cargo/env.nu&amp;#34;  # For nushell
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source &amp;#34;$HOME/.cargo/env.tcsh&amp;#34;  # For tcsh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;. &amp;#34;$HOME/.cargo/env.ps1&amp;#34;        # For pwsh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;source &amp;#34;$HOME/.cargo/env.xsh&amp;#34;   # For xonsh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで &lt;code&gt;~/.rustup/&lt;/code&gt; および &lt;code&gt;~/.cargo/&lt;/code&gt; ディレクトリ以下にツールチェーンがインストールされた。
&lt;code&gt;PATH&lt;/code&gt; 設定が &lt;code&gt;~/.cargo/env&lt;/code&gt; ファイルに記述されていて &lt;code&gt;~/.profile&lt;/code&gt; と &lt;code&gt;~/.bashrc&lt;/code&gt; が &lt;code&gt;~/.cargo/env&lt;/code&gt; を読み込むよう書き換えられている。
必要に応じて内容を調整する。&lt;/p&gt;
&lt;p&gt;とりあえず，今すぐ &lt;code&gt;PATH&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;$ . ~/.cargo/env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;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;$ rustc --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rustc 1.94.1 (e408947bf 2026-03-25)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;うんうん。
問題なさそうやね。
&lt;a href=&#34;https://rust-lang.org/&#34; target=&#34;_blank&#34; title=&#34;Rust Programming Language&#34;&gt;Rust&lt;/a&gt; の勉強もやり直すかなぁ。&lt;/p&gt;
&lt;h2&gt;MPA for Linux のインストール&lt;/h2&gt;
&lt;p&gt;いよいよ &lt;a href=&#34;https://github.com/jpki/myna/tree/master/mpa&#34; target=&#34;_blank&#34; title=&#34;MPA for Linux&#34;&gt;MPA for Linux&lt;/a&gt; をインストールする。&lt;/p&gt;
&lt;p&gt;適当なディレクトリに &lt;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;&lt;code&gt;github.com/jpki/myna&lt;/code&gt;&lt;/a&gt; リポジトリを clone する。&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;$ git clone https://github.com/jpki/myna.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;リポジトリ内の &lt;code&gt;mpa&lt;/code&gt; ディレクトリに移動して &lt;code&gt;cargo install&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;$ cd myna/mpa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cargo install --path .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Installing mpa v23.0.0 (/home/username/path/to/myna/mpa)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Updating crates.io index
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Locking 107 packages to latest Rust 1.94.1 compatible versions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Adding der v0.7.10 (available: v0.8.0)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Adding generic-array v0.14.7 (available: v0.14.9)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Adding sha1 v0.10.6 (available: v0.11.0)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Adding sha2 v0.10.9 (available: v0.11.0)
&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;   Compiling myna v0.6.4 (/home/username/path/to/myna)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Compiling mpa v23.0.0 (/home/username/path/to/myna/mpa)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Finished `release` profile [optimized] target(s) in 16.86s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Installing /home/username/.cargo/bin/mpa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Installed package `mpa v23.0.0 (/home/username/path/to/myna/mpa)` (executable `mpa`)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで &lt;code&gt;~/.cargo/bin/&lt;/code&gt; ディレクトリにホストアプリケーション &lt;code&gt;mpa&lt;/code&gt; がインストールされた。&lt;/p&gt;
&lt;p&gt;次に同ディレクトリにある &lt;code&gt;install.sh&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;$ ./install.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=== Installing Native Messaging Host manifests ===
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host path: /home/username/.cargo/bin/mpa
&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;Installed: /home/username/.config/google-chrome/NativeMessagingHosts/com.github.jpki.mpa.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installed: /home/username/.config/chromium/NativeMessagingHosts/com.github.jpki.mpa.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installed: /home/username/.mozilla/native-messaging-hosts/com.github.jpki.mpa.json
&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;./install.sh --user-data-dir /path/to/datadir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;のように指定できるらしい。
今回は既定のままでOK。&lt;/p&gt;
&lt;p&gt;次にブラウザのほうほうにも拡張機能をインストールする必要があるのだが，正規ルートからはインストールできないようなので Developer mode で強制的に行う。
手順は以下の通り。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote cite=&#34;https://github.com/jpki/myna/tree/master/mpa#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB&#34;&gt;&lt;h3&gt;Chrome&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;chrome://extensions/&lt;/code&gt;を開く&lt;/li&gt;
&lt;li&gt;右上のディベロッパーモードをON&lt;/li&gt;
&lt;li&gt;&lt;code&gt;パッケージ化されていない拡張機能を読み込む&lt;/code&gt;で&lt;code&gt;./mpa/extension&lt;/code&gt;を読み込む&lt;/li&gt;
&lt;li&gt;拡張機能のメニューから&lt;code&gt;MPA for Linux&lt;/code&gt;を開く&lt;/li&gt;
&lt;li&gt;動作確認ボタンを押してエラーが出なければOK&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Firefox(一時的)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;about:debugging&lt;/code&gt;の&lt;code&gt;このFirefox&lt;/code&gt;を開く&lt;/li&gt;
&lt;li&gt;&lt;code&gt;一時的なアドオンを読み込む&lt;/code&gt;で&lt;code&gt;./mpa/extension/manifest.json&lt;/code&gt;を読み込む&lt;/li&gt;
&lt;li&gt;拡張機能のメニューから&lt;code&gt;MPA for Linux&lt;/code&gt;を開く&lt;/li&gt;
&lt;li&gt;動作確認ボタンを押してエラーが出なければOK&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://github.com/jpki/myna/tree/master/mpa#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB&#34;&gt;ブラウザ拡張のインストール&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;メインで使ってる Firefox に入れるのは怖いので，サブとして使ってる &lt;a href=&#34;https://github.com/ungoogled-software/ungoogled-chromium&#34; target=&#34;_blank&#34; title=&#34;ungoogled-software/ungoogled-chromium: Google Chromium, sans integration with Google&#34;&gt;ungoogled-chromium&lt;/a&gt; で試した。
やり方はたぶん Chrome と同じでいいよね。
こんな感じ？&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./chromium-extensions.png&#34;&gt;
&lt;a href=&#34;./chromium-extensions.png&#34;&gt;&lt;img src=&#34;./chromium-extensions.png&#34; srcset=&#34;./chromium-extensions.png 761w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;/figure&gt;
&lt;p&gt;ちなみに Developer mode を OFF にするとこの拡張機能も無効になる。
これがあるからオススメしにくいんだよなぁ。&lt;/p&gt;
&lt;p&gt;これで &lt;a href=&#34;https://github.com/jpki/myna/tree/master/mpa&#34; target=&#34;_blank&#34; title=&#34;MPA for Linux&#34;&gt;MPA for Linux&lt;/a&gt; の導入は完了。
上手くログインできるかなぁ。&lt;/p&gt;
&lt;h2&gt;マイナポータルサイトにログインする&lt;/h2&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://myna.go.jp/&#34;&gt;
&lt;a href=&#34;https://myna.go.jp/&#34;&gt;&lt;img src=&#34;./mp-top.png&#34; srcset=&#34;./mp-top.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;マイナポータル&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://myna.go.jp/&#34;&gt;マイナポータル&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;左サイドにあるログインボタンを押してログイン画面に移動する。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./mp-login.png&#34;&gt;
&lt;a href=&#34;./mp-login.png&#34;&gt;&lt;img src=&#34;./mp-login.png&#34; srcset=&#34;./mp-login.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;ログイン | マイナポータル&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./mp-login.png&#34;&gt;ログイン | マイナポータル&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ここで暗証番号の入力を求められる。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./mpa-auth.png&#34;&gt;
&lt;a href=&#34;./mpa-auth.png&#34;&gt;&lt;img src=&#34;./mpa-auth.png&#34; srcset=&#34;./mpa-auth.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;暗証番号入力&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./mpa-auth.png&#34;&gt;暗証番号入力&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;利用者証明用パスワード（4文字の数字）を入力して &lt;span class=&#34;box&#34;&gt;  OK  &lt;/span&gt; ボタンをクリックする。
ボタンをクリックせず &lt;span class=&#34;box&#34;&gt; Enter &lt;/span&gt; キーを押すとなにも起こらず処理が止まってしまうので注意（困るなぁ）。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://myna.go.jp/&#34;&gt;
&lt;a href=&#34;https://myna.go.jp/&#34;&gt;&lt;img src=&#34;./mp-main.png&#34; srcset=&#34;./mp-main.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;ホーム | マイナポータル&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://myna.go.jp/&#34;&gt;ホーム | マイナポータル&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;よし。
上手くいった！&lt;/p&gt;
&lt;h2&gt;e-Tax サイトにログインする&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.e-tax.nta.go.jp/&#34; target=&#34;_blank&#34; title=&#34;【e-Tax】国税電子申告・納税システム(イータックス)&#34;&gt;e-Tax&lt;/a&gt; サイトのログインは個人用と法人用がある。
私は個人用からログインする。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;
&lt;a href=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;&lt;img src=&#34;./etax-indilogin.png&#34; srcset=&#34;./etax-indilogin.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;個人ログイン | e-Tax&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;個人ログイン | e-Tax&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;下の方にスクロールすると&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;
&lt;a href=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;&lt;img src=&#34;./etax-indilogin-2.png&#34; srcset=&#34;./etax-indilogin-2.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;個人ログイン | e-Tax&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://login.e-tax.nta.go.jp/login/reception/loginIndividual&#34;&gt;個人ログイン | e-Tax&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;「ICカードリーダーで読み取り」ボタンがあるので，これをクリックする。
あとは前節と同じように暗証番号の入力を求められるので，利用者証明用パスワード（4文字の数字）を入力して &lt;span class=&#34;box&#34;&gt;  OK  &lt;/span&gt; ボタンをクリックする。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://mypage.e-tax.nta.go.jp/&#34;&gt;
&lt;a href=&#34;https://mypage.e-tax.nta.go.jp/&#34;&gt;&lt;img src=&#34;./etax-main.png&#34; srcset=&#34;./etax-main.png 1030w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;TOP | e-Tax&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://mypage.e-tax.nta.go.jp/&#34;&gt;TOP | e-Tax&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;こちらも問題なく入れた！&lt;/p&gt;
&lt;h2&gt;これで Linux 機で確定申告できる！&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://myna.go.jp/&#34; target=&#34;_blank&#34; title=&#34;マイナポータル&#34;&gt;マイナポータル&lt;/a&gt;および &lt;a href=&#34;https://www.e-tax.nta.go.jp/&#34; target=&#34;_blank&#34; title=&#34;【e-Tax】国税電子申告・納税システム(イータックス)&#34;&gt;e-Tax&lt;/a&gt; の両サイトへのログインを確認できたので，ブラウザ拡張機能の Developer mode を OFF に戻しておく。&lt;/p&gt;
&lt;p&gt;これで来年は自宅 Linux 機で確定申告できるな。
もうスマホで確定申告するのは嫌なのよ。
スマホは入力端末としては向かないっスよ。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/01/win11pro-on-minipc/&#34; target=&#34;_blank&#34; title=&#34;Mini PC を衝動買いした&#34;&gt;ミニ PC&lt;/a&gt; の Windows 機はますますゲーム専用機になっていくな（笑） まぁ，それはそれで重宝しているからいいか。&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/4295013498?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/51Z5QFGJTFL._SL160_.jpg&#34; width=&#34;125&#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/4295013498?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;スーパーユーザーなら知っておくべきLinuxシステムの仕組み&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Brian Ward (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;インプレス 2022-03-08 (Release 2022-03-08)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4295013498 (ASIN), 9784295013495 (EAN), 4295013498 (ISBN)&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;a href=&#34;https://book.impress.co.jp/books/1121101019&#34;&gt;版元で PDF 版が買える&lt;/a&gt;。セキュリティ・エリアにも持ち込めるよう紙の本を買ったのだが，&lt;a href=&#34;https://technical-book-reading-2.connpass.com/event/272189/&#34;&gt;オンライン読書会&lt;/a&gt;が始まったので PDF 版も購入。Linux システムの扱い方に関するリファレンス本として優れている。最初に軽く流し読みして，必要に応じて該当項目を拾い読みしていけばいいだろう。&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;2023-02-11&#34;&gt;2023-02-11&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;!-- Linuxシステムの仕組み --&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;コマンドの &lt;code&gt;.&lt;/code&gt; は &lt;code&gt;source&lt;/code&gt; と同じ意味で，指定したファイルを現在の shell で実行する。&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>Linux で個人番号カードを読む</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/03/read-individual-number-card-on-linux/" />
		<id>tag:text.Baldanders.info,2026-03-31:/remark/2026/03/read-individual-number-card-on-linux/</id>
		<published>2026-03-31T11:23:14+00:00</published>
		<updated>2026-04-01T06:51:16+00:00</updated>
		<summary>自宅の Ubuntu 機に IC カードリーダーを接続し，個人番号カードの内容を読み取る。 MPA for Linux については後日に試してみたい。</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;自宅の Ubuntu 機に IC カードリーダーを接続し，個人番号カードの内容を読み取る。&lt;/p&gt;
&lt;h2&gt;事前準備&lt;/h2&gt;
&lt;p&gt;今回は IO DATA の非接触式 IC カードリーダー USB-NFC4 を使用する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.iodata.jp/product/interface/iccardreader/usb-nfc4/&#34; target=&#34;_blank&#34; title=&#34;USB-NFC4 | ICカードリーダーライター | アイ・オー・データ機器 I-O DATA&#34;&gt;USB-NFC4 | ICカードリーダーライター | アイ・オー・データ機器 I-O DATA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;昨年の夏頃に Amazon で安売りしてたのを買ったのだが，そのまま放置していた。
いざ確定申告で使おうとしたら Windows 機で認識できなくて&lt;a href=&#34;https://text.baldanders.info/remark/2026/03/tax-return-review/&#34; target=&#34;_blank&#34; title=&#34;確定申告のふりかえり&#34;&gt;使えなかった&lt;/a&gt;。
そのまま捨て置くのはもったいないので Linux で使えるか試そうという話である。&lt;/p&gt;
&lt;p&gt;Ubuntu 側で必要なのは以下のソフトウェア&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/OpenSC/OpenSC&#34; target=&#34;_blank&#34; title=&#34;OpenSC/OpenSC: Open source smart card tools and middleware. PKCS#11/MiniDriver&#34;&gt;OpenSC/OpenSC: Open source smart card tools and middleware. PKCS#11/MiniDriver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;デバイスドライバ : &lt;a href=&#34;https://www.abcircle.com/jp/product/14/CIR315A/%e9%9d%9e%e6%8e%a5%e8%a7%a6%e5%bc%8fic%e3%82%ab%e3%83%bc%e3%83%89%e3%83%aa%e3%83%bc%e3%83%80%e3%83%a9%e3%82%a4%e3%82%bf/&#34; target=&#34;_blank&#34; title=&#34;CIR315A - 非接触式ICカードリーダライタ | AB Cir&#34;&gt;CIR315A&lt;/a&gt; 用のドライバで代用&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;では早速はじめよう。&lt;/p&gt;
&lt;h2&gt;インストール&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/OpenSC/Wiki&#34; target=&#34;_blank&#34; title=&#34;OpenSC/Wiki&#34;&gt;Wiki&lt;/a&gt; によると Linux 版の &lt;a href=&#34;https://github.com/OpenSC/OpenSC&#34; target=&#34;_blank&#34; title=&#34;OpenSC/OpenSC: Open source smart card tools and middleware. PKCS#11/MiniDriver&#34;&gt;OpenSC&lt;/a&gt; は自前でビルドしろとあるが， Ubuntu であればバイナリが提供されているっぽいのでそちらを使う。&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;$ sudo aptitude install opensc opensc-pkcs11 pcscd pcsc-tools libpcsclite1 libusb-1.0-0 libpcsclite-dev libusb-1.0-0-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;libpcsclite1 は、要求されたバージョン (2.3.3-1) で既にインストールされています
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;libusb-1.0-0 は、要求されたバージョン (2:1.0.29-2) で既にインストールされています
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;libpcsclite1 は、要求されたバージョン (2.3.3-1) で既にインストールされています
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;libusb-1.0-0 は、要求されたバージョン (2:1.0.29-2) で既にインストールされています
&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;  libccid{a} libeac3{a} libintl-perl{a} libintl-xs-perl{a} libpcsc-perl{a} libpcsclite-dev libusb-1.0-0-dev libusb-1.0-doc{a} opensc 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  opensc-pkcs11 pcsc-tools pcscd 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;更新: 0 個、新規インストール: 12 個、削除: 0 個、保留: 0 個。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;アーカイブの 2,824 kB を取得する必要があります。展開後に 12.8 MB のディスク領域が新たに消費されます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先に進みますか? [Y/n/?] 
&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;$ opensc-tool -i
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OpenSC 0.26.1 [gcc  15.2.0]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enabled features: locking zlib readline openssl pcsc(libpcsclite.so.1)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;p&gt;&lt;a href=&#34;https://www.abcircle.com/jp/product/14/CIR315A/%e9%9d%9e%e6%8e%a5%e8%a7%a6%e5%bc%8fic%e3%82%ab%e3%83%bc%e3%83%89%e3%83%aa%e3%83%bc%e3%83%80%e3%83%a9%e3%82%a4%e3%82%bf/&#34; target=&#34;_blank&#34; title=&#34;CIR315A - 非接触式ICカードリーダライタ | AB Cir&#34;&gt;CIR315A&lt;/a&gt; の製品ページから「USB Linux インストーラ」をダウンロードする。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://www.abcircle.com/jp/product/14/CIR315A/%e9%9d%9e%e6%8e%a5%e8%a7%a6%e5%bc%8fic%e3%82%ab%e3%83%bc%e3%83%89%e3%83%aa%e3%83%bc%e3%83%80%e3%83%a9%e3%82%a4%e3%82%bf/&#34;&gt;
&lt;a href=&#34;https://www.abcircle.com/jp/product/14/CIR315A/%e9%9d%9e%e6%8e%a5%e8%a7%a6%e5%bc%8fic%e3%82%ab%e3%83%bc%e3%83%89%e3%83%aa%e3%83%bc%e3%83%80%e3%83%a9%e3%82%a4%e3%82%bf/&#34;&gt;&lt;img src=&#34;./cir315a-driver.png&#34; srcset=&#34;./cir315a-driver.png 1452w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;CIR315A関連ファイルのダウンロード&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://www.abcircle.com/jp/product/14/CIR315A/%e9%9d%9e%e6%8e%a5%e8%a7%a6%e5%bc%8fic%e3%82%ab%e3%83%bc%e3%83%89%e3%83%aa%e3%83%bc%e3%83%80%e3%83%a9%e3%82%a4%e3%82%bf/&#34;&gt;CIR315A関連ファイルのダウンロード&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ダウンロードしたファイルの内容は以下の通り：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Circle_USB_Linux_Installer_v2.2.2_(driver_v.2.2.2).zip&lt;/code&gt; (2025-07-25 時点)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Generic-Debian&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;libabcccid_2.2.2-1_amd64.deb&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この &lt;code&gt;libabcccid_2.2.2-1_amd64.deb&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;$ sudo dpkg -i libabcccid_2.2.2-1_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;myna&lt;/a&gt; は GitHub の&lt;a href=&#34;https://github.com/jpki/myna/releases&#34; target=&#34;_blank&#34; title=&#34;Releases · jpki/myna&#34;&gt;リリースページ&lt;/a&gt;からバイナリをダウンロードしてインストールする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myna-v0.6.4-x86_64-unknown-linux-gnu.zip&lt;/code&gt; (2026-03-12 時点)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myna&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ファイル &lt;code&gt;myna&lt;/code&gt; を &lt;code&gt;PATH&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;$ myna help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Usage: myna [OPTIONS] &amp;lt;COMMAND&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;Commands:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  text     券面入力補助AP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  visual   券面確認AP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  test     Test card reader
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  jpki     公的個人認証
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  pin      Pin operation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  unknown  謎のAP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  help     Print this message or the help of the given subcommand(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;Options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v...          
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d, --debug    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -h, --help     Print help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -V, --version  Print version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;個人番号カードを読み込む&lt;/h2&gt;
&lt;p&gt;まずは &lt;a href=&#34;https://www.iodata.jp/product/interface/iccardreader/usb-nfc4/&#34; target=&#34;_blank&#34; title=&#34;USB-NFC4 | ICカードリーダーライター | アイ・オー・データ機器 I-O DATA&#34;&gt;USB-NFC4&lt;/a&gt; を繋いだだけの状態で IC カードリーダーが認識されているか確認する。&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;$ opensc-tool -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Detected readers (pcsc)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Nr.  Card  Features  Name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0    No              Circle CIR315 CL [CIR315 CL] (137K231232M2) 00 00
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.iodata.jp/product/interface/iccardreader/usb-nfc4/&#34; target=&#34;_blank&#34; title=&#34;USB-NFC4 | ICカードリーダーライター | アイ・オー・データ機器 I-O DATA&#34;&gt;USB-NFC4&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;$ opensc-tool -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Detected readers (pcsc)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Nr.  Card  Features  Name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0    Yes             Circle CIR315 CL [CIR315 CL] (137K231232M2) 00 00
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Card 項目が Yes になっている。
よしよし。&lt;/p&gt;
&lt;p&gt;次に PIN 情報を取得する。&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;$ pkcs15-tool --list-pins
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using reader with a card: Circle CIR315 CL [CIR315 CL] (137K231232M2) 00 00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PIN [User Authentication PIN]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Object Flags   : [0x12], modifiable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	ID             : 01
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Flags          : [0x12], local, initialized
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Length         : min_len:4, max_len:4, stored_len:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Pad char       : 0x00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Reference      : 1 (0x01)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Type           : ascii-numeric
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Tries left     : 3
&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;PIN [Digital Signature PIN]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Object Flags   : [0x12], modifiable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	ID             : 02
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Flags          : [0x12], local, initialized
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Length         : min_len:6, max_len:16, stored_len:0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Pad char       : 0x00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Reference      : 2 (0x02)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Type           : ascii-numeric
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	Tries left     : 5
&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;$ pkcs15-tool --read-certificate 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using reader with a card: Circle CIR315 CL [CIR315 CL] (137K231232M2) 00 00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-----BEGIN CERTIFICATE-----
&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;-----END CERTIFICATE-----
&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;/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;$ pkcs15-tool --read-certificate 2 --verify-pin --auth-id 02
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using reader with a card: Circle CIR315 CL [CIR315 CL] (137K231232M2) 00 00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please enter PIN [Digital Signature PIN]: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-----BEGIN CERTIFICATE-----
&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;-----END CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こちらもちゃんと取り出せてるようだな。&lt;/p&gt;
&lt;p&gt;“Please enter PIN” には署名用パスワードを入力する&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;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./opensc-notify.png&#34;&gt;
&lt;a href=&#34;./opensc-notify.png&#34;&gt;&lt;img src=&#34;./opensc-notify.png&#34; srcset=&#34;./opensc-notify.png 524w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;myna&lt;/a&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;$ myna pin status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;券面入力補助AP 暗証番号: 3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;券面入力補助AP 暗証番号A: 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;券面入力補助AP 暗証番号B: 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;券面確認AP 暗証番号A: 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;券面確認AP 暗証番号B: 10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JPKIユーザー認証用 暗証番号: 3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JPKIデジタル署名用 パスワード: 5
&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;/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;$ myna text attrs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;暗証番号(4桁): ****
&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;性別    : *
&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;a href=&#34;https://github.com/jpki/myna&#34; target=&#34;_blank&#34; title=&#34;jpki/myna: マイナンバーカード・ユーティリティ・JPKI署名ツール · GitHub&#34;&gt;myna&lt;/a&gt; を使えば PDF ドキュメントなどに電子署名を付与できる。
こんな感じらしい。&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;$ myna jpki pdf sign input.pdf -o signed.pdf
&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;$ myna jpki pdf verify signed.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;「JPKI署名用証明書は4属性(氏名・住所・生年月日・性別)を含みますので注意してください」とあるので，実際に運用する場合はホンマにご注意を。&lt;/p&gt;
&lt;p&gt;さらに「&lt;a href=&#34;https://github.com/jpki/myna/tree/master/mpa&#34; target=&#34;_blank&#34;&gt;MPA for Linux&lt;/a&gt;」を使えば Linux のブラウザでマイナポータルや e-Tax などのサイトに個人番号カードを使ってログインできるようだ。
ただし（今のところ） Rust のビルド環境が必要なのとブラウザ拡張を無理やり入れるみたいな操作が必要らしいので，今回は割愛する。
またどこかで試そうか。&lt;/p&gt;
&lt;p&gt;今回はここまで。
&lt;a href=&#34;https://text.baldanders.info/remark/2026/04/login-myna-portal-etax-mpa-for-linux/&#34; target=&#34;_blank&#34; title=&#34;MPA for Linux でログイン検証（Linux で個人番号カードを読む 2）&#34;&gt;次回&lt;/a&gt;へ続く。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zenn.dev/sorehaomosiroi/articles/sorehaomosiroi-2024010800_linux_nfc_iodata-usbnfc4&#34; target=&#34;_blank&#34;&gt;Linux &amp;amp; IO DATA USB-NFC4 &amp;amp; マイナンバーカード&lt;/a&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/4295013498?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/51Z5QFGJTFL._SL160_.jpg&#34; width=&#34;125&#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/4295013498?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;スーパーユーザーなら知っておくべきLinuxシステムの仕組み&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Brian Ward (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;インプレス 2022-03-08 (Release 2022-03-08)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4295013498 (ASIN), 9784295013495 (EAN), 4295013498 (ISBN)&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;a href=&#34;https://book.impress.co.jp/books/1121101019&#34;&gt;版元で PDF 版が買える&lt;/a&gt;。セキュリティ・エリアにも持ち込めるよう紙の本を買ったのだが，&lt;a href=&#34;https://technical-book-reading-2.connpass.com/event/272189/&#34;&gt;オンライン読書会&lt;/a&gt;が始まったので PDF 版も購入。Linux システムの扱い方に関するリファレンス本として優れている。最初に軽く流し読みして，必要に応じて該当項目を拾い読みしていけばいいだろう。&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;2023-02-11&#34;&gt;2023-02-11&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;!-- Linuxシステムの仕組み --&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;&lt;a href=&#34;https://github.com/OpenSC/OpenSC&#34; target=&#34;_blank&#34; title=&#34;OpenSC/OpenSC: Open source smart card tools and middleware. PKCS#11/MiniDriver&#34;&gt;OpenSC&lt;/a&gt; v0.27 より前のバージョンには&lt;a href=&#34;https://github.com/OpenSC/OpenSC/wiki/OpenSC-security-advisories&#34; target=&#34;_blank&#34; title=&#34;OpenSC security advisories · OpenSC/OpenSC Wiki&#34;&gt;脆弱性が報告&lt;/a&gt;されている。 2026-03-31 時点では Ubuntu の APT リポジトリには反映されてない模様。頑張って反映させてね。&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;個人番号カードの暗証番号・パスワードには 署名用パスワード（最大16文字の英数字），利用者証明用パスワード（4文字の数字），券面事項入力補助用パスワード（4文字の数字），個人番号カード用（住民基本台帳用）パスワード（4文字の数字）の4つがある。&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>Aptitude コマンドの導入</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/03/install-aptitude/" />
		<id>tag:text.Baldanders.info,2026-03-31:/remark/2026/03/install-aptitude/</id>
		<published>2026-03-31T02:56:48+00:00</published>
		<updated>2026-04-01T23:03:48+00:00</updated>
		<summary>aptitude コマンドは依存関係解決能力に優れていて apt コマンドの代わりとして使えるようだ。</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;code&gt;aptitude&lt;/code&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;code&gt;apt&lt;/code&gt; コマンドの代わりとして使えるようだ（同じパッケージデータベースを使う）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://morinokabu.com/2026/01/23/linux-aptitude-package-management/&#34; target=&#34;_blank&#34;&gt;【Linux】aptitudeコマンドで依存関係を賢く解決してパッケージを管理する - 森の株&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;$ sudo apt install aptitude
&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;$ aptitude help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aptitude 0.8.13
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用方法: aptitude [-S ファイル名] [-u|-i]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          aptitude [オプション] &amp;lt;アクション&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;アクション (指定がない場合、aptitude はインタラクティブモードで起動します):
&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; install         パッケージをインストール/更新します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; remove          パッケージを削除します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; purge           パッケージと設定ファイルを削除します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; hold            パッケージを固定します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; unhold          パッケージの固定を解除します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; markauto        自動的にインストールされたという印をパッケージにつけます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; unmarkauto      手動でインストールされたという印をパッケージにつけます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; forbid-version  aptitude に特定のパッケージバージョンの更新を禁止させます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; update          新規/更新可能なパッケージの一覧をダウンロードします。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; safe-upgrade    安全な更新を行います。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; full-upgrade    パッケージのインストールや削除を伴う可能性のある更新を行います。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; build-dep       パッケージの構築依存関係をインストールします。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; forget-new      どのパッケージが &amp;#34;新規&amp;#34; かの情報を消去します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; search          名前や正規表現でパッケージを検索します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; show            Display detailed info about a package.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; showsrc         Display detailed info about a source package (apt wrapper).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; versions        指定したパッケージのバージョンを表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; clean           ダウンロード済みのパッケージファイルを消去します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; autoclean       古いダウンロード済みのパッケージファイルを消去します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; changelog       パッケージの変更履歴を表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; download        Download the .deb file for a package (apt wrapper).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; source          Download source package (apt wrapper).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; reinstall       現在インストールされているパッケージを再インストールします。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; why             特定のパッケージをインストールする必要がある理由を表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; why-not         特定のパッケージをインストールすることができない理由を表示します。
&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; add-user-tag    パッケージ/パターンにユーザタグを追加します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; remove-user-tag パッケージ/パターンからユーザタグを削除します。
&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; -h              このヘルプの文章です。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; --no-gui        利用可能でも GTK GUI を使いません。
&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; -d              パッケージのダウンロードのみ行い、インストールや削除は
&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; -P              アクションの確認のため、常にプロンプトを出します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -y              すべての yes/no の質問に対して &amp;#39;yes&amp;#39; と答えたと見なします。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -F フォーマット 検索結果の表示フォーマットを指定します。マニュアルを参照し
&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; -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; -w 幅           検索結果の表示フォーマットの幅を指定します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -f              依存関係が壊れたパッケージを積極的に修復しようとします。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -V              パッケージのどのバージョンがインストールされるか表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -D              自動的に変更されたパッケージの依存関係を表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -Z              各パッケージのインストールサイズの変更を表示します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -v              付加的な情報を表示します (何倍もの情報が提供されます)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -t [リリース]   パッケージをインストールするリリースを指定します。
&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; -o キー=値      &amp;#39;キー&amp;#39; の名前の設定オプションを直接設定します。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; --with(out)-recommends     推奨パッケージを強い依存関係として扱うかどうかを
&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 ファイル名   ファイルから aptitude の拡張状態情報を読み込みます。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; -u              起動時に新しいパッケージ一覧をダウンロードします。
&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; -i              起動時にインストールを行います。
&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この aptitude にはスーパー牛さんパワーなどはありません。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ゴメン。
最後の1文は分からない。
試しに &lt;code&gt;aptitude&lt;/code&gt; パッケージ自身を &lt;code&gt;search&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;$ aptitude search aptitude
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i   aptitude                      - 端末ベースのパッケージマネージャ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;v   aptitude:i386                 -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;i A aptitude-common               - architecture independent files for the aptitude package manager
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;v   aptitude-doc                  -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-cs               - 端末ベースのパッケージマネージャ aptitude 用チェコ語マニュアル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-en               - English manual for aptitude, a terminal-based package manager
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-es               - 端末ベースのパッケージマネージャ aptitude 用スペイン語マニュアル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-fi               - 端末ベースのパッケージマネージャ aptitude 用フィンランド語マニュアル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-fr               - 端末ベースのパッケージマネージャ aptitude 用フランス語マニュアル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-it               - Italian manual for aptitude, a terminal-based package manager
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-ja               - 端末ベースのパッケージマネージャ aptitude 用日本語マニュアル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-nl               - Dutch manual for aptitude, a terminal-based package manager
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-doc-ru               - Russian manual for aptitude, a terminal-based package manager
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;p   aptitude-robot                - Automate package choice management
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;先頭の3文字が各パッケージの状態を表している。
先頭文字の&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt; はインストールされていることを表す&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt; はインストールされていないことを表す（purge 状態）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; はインストールされてないが設定が残ってる状態（remove 状態）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt; は仮想パッケージ（インストール対象外）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;B&lt;/code&gt; は依存関係が壊れている状態&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2文字目は予約されているアクションで，空白は予約なしの状態を指す。
3文字目に &lt;code&gt;A&lt;/code&gt; が付いてるものは依存関係によって自動的にインストールされていることを示す。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;update&lt;/code&gt; および &lt;code&gt;install&lt;/code&gt; アクションの使い方は &lt;code&gt;apt&lt;/code&gt; コマンドと同じかな。
&lt;code&gt;remove&lt;/code&gt; や &lt;code&gt;purge&lt;/code&gt; アクションも同じ。
カーネルアップグレード後によく使う &lt;code&gt;apt autoremove&lt;/code&gt; は &lt;code&gt;aptitude&lt;/code&gt; では &lt;del&gt;&lt;code&gt;autoclean&lt;/code&gt; アクションを使えばいいのかな&lt;/del&gt; カーネル更新 → リブート → &lt;code&gt;aptitude safe-upgrade&lt;/code&gt; で古いバージョンのカーネルイメージを削除してくれる。これは有り難い。
いわゆる dry run は &lt;code&gt;-s&lt;/code&gt; オプションでできるみたい。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt upgrade&lt;/code&gt; については &lt;code&gt;aptitude safe-upgrade&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;$ sudo aptitude safe-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ディストリビューションのバージョンを上げるときに使う &lt;code&gt;full-upgrade&lt;/code&gt; アクションは同じようだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;aptitude&lt;/code&gt; コマンドでは，インストール時などに依存関係の競合が発生すると複数の解決策を提示する場合があるらしい（まだ遭遇してない）。
安直に &lt;span class=&#34;box&#34;&gt; &lt;code&gt;y&lt;/code&gt; &lt;/span&gt; キーを押さずに，提示された解決策を確認してから選択するのがよさそうだ。&lt;/p&gt;
&lt;p&gt;引数なしで &lt;code&gt;aptitude&lt;/code&gt; コマンドを起動すると TUI モードで起動する。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./aptitude-tui.png&#34;&gt;
&lt;a href=&#34;./aptitude-tui.png&#34;&gt;&lt;img src=&#34;./aptitude-tui.png&#34; srcset=&#34;./aptitude-tui.png 1182w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;/figure&gt;
&lt;p&gt;おー。
これはよさげ。
パッケージ毎に（依存関係の解決を含めた）細かい操作をする場合には便利かも。
なぜか TUI モードではマインスイーパーで遊べる。&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/4295013498?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/51Z5QFGJTFL._SL160_.jpg&#34; width=&#34;125&#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/4295013498?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;スーパーユーザーなら知っておくべきLinuxシステムの仕組み&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Brian Ward (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;インプレス 2022-03-08 (Release 2022-03-08)&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4295013498 (ASIN), 9784295013495 (EAN), 4295013498 (ISBN)&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;a href=&#34;https://book.impress.co.jp/books/1121101019&#34;&gt;版元で PDF 版が買える&lt;/a&gt;。セキュリティ・エリアにも持ち込めるよう紙の本を買ったのだが，&lt;a href=&#34;https://technical-book-reading-2.connpass.com/event/272189/&#34;&gt;オンライン読書会&lt;/a&gt;が始まったので PDF 版も購入。Linux システムの扱い方に関するリファレンス本として優れている。最初に軽く流し読みして，必要に応じて該当項目を拾い読みしていけばいいだろう。&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;2023-02-11&#34;&gt;2023-02-11&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;!-- Linuxシステムの仕組み --&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;“aptitude” (apt + tude) は才能や適性を指す言葉で，ラテン語の “aptus” (適切な，適合した) に由来するそうな。同じ由来の類義語に adapt/adaptation などがある。 &lt;code&gt;apt&lt;/code&gt; コマンドは “Advanced Package Tool” の略称だけど “apt” からのこじつけかなとか思ったり。（参考: &lt;a href=&#34;http://www.etn.co.jp/etymology/apt/&#34; target=&#34;_blank&#34; title=&#34;語根「apt」＝「fit (適当な) 」を覚えろ！ | 英語の語源 by THE ENGLISH CLUB&#34;&gt;語根「apt」＝「fit (適当な) 」を覚えろ！&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;/ol&gt;
&lt;/div&gt;
</content>
	</entry><entry>
		<title>デスクトップ版ぞーぺんに期待！</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/03/zonepane-desktop/" />
		<id>tag:text.Baldanders.info,2026-03-08:/remark/2026/03/zonepane-desktop/</id>
		<published>2026-03-08T09:48:24+00:00</published>
		<updated>2026-04-08T08:12:18+00:00</updated>
		<summary>ぞーぺんに慣れると公式 Web アプリには戻れないのよ。</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://www.youtube.com/watch?v=L3-VtHNm9oA&#34; target=&#34;_blank&#34; title=&#34;【チラ見せ】hololive 7th fes. Ridin&amp;#39; on Dreams STAGE3【#hololivefesEXPO26_DAY2】 - YouTube&#34;&gt;hololive 7th fes. Ridin&amp;rsquo; on Dreams STAGE3&lt;/a&gt;” よかったねぇ。
FLOW GLOW 初 fes. っスよ。
ライブを観ながら Mastodon の TL をチェックしてたんだけど&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;iframe src=&#34;https://fedibird.com/@takke/116181260919599160/embed&#34; width=&#34;400&#34; allowfullscreen=&#34;allowfullscreen&#34; sandbox=&#34;allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-forms&#34;&gt;&lt;/iframe&gt;
&lt;/figure&gt;
&lt;p&gt;なんと！ そういえば TL で何やら作業をポストされてたな。
とりあえず Windows 版を&lt;a href=&#34;https://zonepane.com/zonepane_beta.html&#34; target=&#34;_blank&#34; title=&#34;ZonePane Beta&#34;&gt;ゲット&lt;/a&gt;して&lt;a href=&#34;https://text.baldanders.info/remark/2025/01/win11pro-on-minipc/&#34; target=&#34;_blank&#34; title=&#34;Mini PC を衝動買いした&#34;&gt;ミニ PC&lt;/a&gt; にインストールしクロスポストを試してみた。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;blockquote class=&#34;mastodon-embed&#34; data-embed-url=&#34;https://goark.fedicity.net/@spiegel/116181732370373076/embed&#34; style=&#34;background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;&#34;&gt; &lt;a href=&#34;https://goark.fedicity.net/@spiegel/116181732370373076&#34; target=&#34;_blank&#34; style=&#34;align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, &#39;Segoe UI&#39;, Oxygen, Ubuntu, Cantarell, &#39;Fira Sans&#39;, &#39;Droid Sans&#39;, &#39;Helvetica Neue&#39;, Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;&#34;&gt; &lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; xmlns:xlink=&#34;http://www.w3.org/1999/xlink&#34; width=&#34;32&#34; height=&#34;32&#34; viewBox=&#34;0 0 79 75&#34;&gt;&lt;path d=&#34;M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z&#34; fill=&#34;currentColor&#34;/&gt;&lt;/svg&gt; &lt;div style=&#34;color: #787588; margin-top: 16px;&#34;&gt;Post by @spiegel@goark.fedicity.net&lt;/div&gt; &lt;div style=&#34;font-weight: 500;&#34;&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes=&#34;https://goark.fedicity.net/&#34; async src=&#34;https://goark.fedicity.net/embed.js&#34;&gt;&lt;/script&gt;
&lt;/figure&gt;
&lt;p&gt;画像データの添付ができなかったものの，基本機能は概ね出来てる感じ。
こうなると Linux 版が欲しいよなぁ，と呟いたのだが Go で CLI ならともかくマルチプラットフォームは面倒だよねぇ。
Linux は需要少ないだろうし&amp;hellip;&lt;/p&gt;
&lt;p&gt;と思ってたら&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;iframe src=&#34;https://fedibird.com/@takke/116188664136103534/embed&#34; width=&#34;400&#34; allowfullscreen=&#34;allowfullscreen&#34; sandbox=&#34;allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-forms&#34;&gt;&lt;/iframe&gt;
&lt;/figure&gt;
&lt;p&gt;まじすか！ ありがとうございます &lt;abbr class=&#34;emoji-chars&#34; title=&#34;ペコン&#34;&gt;🙇&lt;/abbr&gt;&lt;/p&gt;
&lt;p&gt;それじゃあ自宅の Ubuntu 機（Ubuntu Desktop 25.10）に入れて動かしてみるか。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./zonepane-1.png&#34;&gt;
&lt;a href=&#34;./zonepane-1.png&#34;&gt;&lt;img src=&#34;./zonepane-1.png&#34; srcset=&#34;./zonepane-1.png 1064w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;ようこそ、ZonePaneへ！&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./zonepane-1.png&#34;&gt;ようこそ、ZonePaneへ！&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;問題なく起動。
Mastodon と Bluesky のアカウントを追加してクロスポストを試してみる。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./cross-post-1.png&#34;&gt;
&lt;a href=&#34;./cross-post-1.png&#34;&gt;&lt;img src=&#34;./cross-post-1.png&#34; srcset=&#34;./cross-post-1.png 1353w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;クロスポスト&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./cross-post-1.png&#34;&gt;クロスポスト&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;実は IM (Input Method) が上手く動かくて日本語が入力できなかった。
別のエディタで投稿内容を書いてコピペして対応。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./cross-post-3.png&#34;&gt;
&lt;a href=&#34;./cross-post-3.png&#34;&gt;&lt;img src=&#34;./cross-post-3.png&#34; srcset=&#34;./cross-post-3.png 1353w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;投稿&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./cross-post-3.png&#34;&gt;投稿&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;クロスポスト自体は問題なくできた。
ついでに投稿したものに対して返信と引用投稿を試してみた。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./reply-2.png&#34;&gt;
&lt;a href=&#34;./reply-2.png&#34;&gt;&lt;img src=&#34;./reply-2.png&#34; srcset=&#34;./reply-2.png 1353w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;返信&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./reply-2.png&#34;&gt;返信&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./quoted-post-2.png&#34;&gt;
&lt;a href=&#34;./quoted-post-2.png&#34;&gt;&lt;img src=&#34;./quoted-post-2.png&#34; srcset=&#34;./quoted-post-2.png 1353w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;引用投稿&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./quoted-post-2.png&#34;&gt;引用投稿&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;同じように日本語が不自由な以外は問題なさそう。
結果はこんな感じ。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./zonepane-2.png&#34;&gt;
&lt;a href=&#34;./zonepane-2.png&#34;&gt;&lt;img src=&#34;./zonepane-2.png&#34; srcset=&#34;./zonepane-2.png 1353w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;投稿結果&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./zonepane-2.png&#34;&gt;投稿結果&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;概ね使えてる。
強いて気になるところを挙げると（上で挙げた点も含める）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クロスポスト時に画像データの添付ができない（普通の投稿であれば問題ない）&lt;/li&gt;
&lt;li&gt;入力フィールドで IM が効かず日本語が入力できない（Ubuntu 環境のみ）&lt;/li&gt;
&lt;li&gt;タイムラインの最上部に達すると更新マークが表示されるが実際には何も起こらない。アクションボタンの更新は効く&lt;/li&gt;
&lt;li&gt;スワイプが使えないのでタブがたくさんあると一部が隠れてしまう（タブ部分をマウスホイールで横方向にスクロールしないかなぁ）&lt;/li&gt;
&lt;li&gt;タイムラインがマルチカラムにならないかなぁ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といったところか。
まぁ iOS 版をベースにしているそうなので今のところはこんなものかと。
つか iOS 版をベースにここまでできるんだ。
Compose 凄いなぁ。&lt;/p&gt;
&lt;p&gt;なによりクロスポストとタイムラインの使い勝手はぞーぺんならではで，これに慣れると公式 Web アプリには戻れないのよ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2025/06/multi-post-with-zonepane/&#34; target=&#34;_blank&#34;&gt;ぞーぺん（ZonePane）によるクロスポスト&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2026/02/zonepane/&#34; target=&#34;_blank&#34;&gt;ぞーぺんのユーザ体験&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あとはマネタイズかな。
Windows 版と macOS 版はストアがあるので有料版の配布は難しくないんだろうけど Linux 版はねぇ。
&lt;a href=&#34;https://opencollective.com/&#34; target=&#34;_blank&#34; title=&#34;Raise, manage and disburse money with full transparency. - Open Collective&#34;&gt;Open Collective&lt;/a&gt; みたいな仕組みを使うなら継続的に払うよ，私は（大金は難しいけど）。
ちなみに Android 版はサブスクリプション契約している。&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://fedibird.com/@zonepane&#34; target=&#34;_blank&#34;&gt;ZonePane(ぞーぺん) (@zonepane@fedibird.com) - Fedibird&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://note.com/panecraft/n/n2b5e96633032&#34; target=&#34;_blank&#34;&gt;ZonePane iOS版をリリースしました！｜takke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://note.com/panecraft/n/n0bfcfffdcb62&#34; target=&#34;_blank&#34;&gt;ZonePane for iOS が Mastodon に対応しました！｜takke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.zonepane&#34; target=&#34;_blank&#34;&gt;ZonePane for Bluesky&amp;amp;Mastodon - Apps on Google Play&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/jp/app/zonepane-multi-sns-client/id6747976082&#34; target=&#34;_blank&#34;&gt;ZonePane – Multi SNS Clientアプリ - App Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>Skyreader: AT Protocol で駆動する Feed Reader</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/02/skyreader-powered-by-atproto/" />
		<id>tag:text.Baldanders.info,2026-02-25:/remark/2026/02/skyreader-powered-by-atproto/</id>
		<published>2026-02-25T08:33:49+00:00</published>
		<updated>2026-03-06T02:48:56+00:00</updated>
		<summary>同一の Lexicon でサービス間を水平展開できるというのは，色々と夢が広がる話である。</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;div class=&#34;box&#34;&gt;&lt;p&gt;&lt;strong&gt;【2026-03-06 追記】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最新の atproto 関連サービス利用については以下を参照のこと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/atproto-based-services/&#34; target=&#34;_blank&#34;&gt;AT Protocol 関連サービスの利用について&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; で見かけた記事。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://skyreader-dev.leaflet.pub/3mfmuhvwoos2g&#34; target=&#34;_blank&#34;&gt;Skyreader update - standard.site feeds, read-it-later workflow, and sustainability - Skyreader Dev Log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://skyreader.app/&#34; target=&#34;_blank&#34; title=&#34;Skyreader&#34;&gt;Skyreader&lt;/a&gt; が &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;/p&gt;
&lt;h2&gt;Bluesky でログイン&lt;/h2&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-0.png&#34; srcset=&#34;./skyreader-0.png 757w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;利用には Bluesky アカウントが必要なようだ。
OAuth 認証。&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./login.png&#34; srcset=&#34;./login.png 757w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader: login&#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://skyreader.app/&#34;&gt;Skyreader: login&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./oauth.png&#34; srcset=&#34;./oauth.png 757w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader: OAuth&#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://skyreader.app/&#34;&gt;Skyreader: OAuth&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ドメインを確認すること。&lt;/p&gt;
&lt;h2&gt;フィードの登録&lt;/h2&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-1.png&#34; srcset=&#34;./skyreader-1.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;左上の “All” の部分をクリックするとメニューが出てくる。&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-2.png&#34; srcset=&#34;./skyreader-2.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;メニュー右上の “＋” の部分をクリックして “Add Feed” を選択するとフィードを登録できる。&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-3.png&#34; srcset=&#34;./skyreader-3.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;おぉ！ &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; で購読（subscribe）したブログが一覧表示されているな。&lt;/p&gt;
&lt;p&gt;どうやら &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;/p&gt;
&lt;p&gt;&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;a href=&#34;https://atproto.com/ja/blog&#34; target=&#34;_blank&#34; title=&#34;Blog - AT Protocol&#34;&gt;atproto.com のブログ&lt;/a&gt;は &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;a href=&#34;https://bsky.app/profile/atproto.com&#34; target=&#34;_blank&#34; title=&#34;AT Protocol Developers (@atproto.com) — Bluesky&#34;&gt;&lt;code&gt;@atproto.com&lt;/code&gt;&lt;/a&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-4a.png&#34; srcset=&#34;./skyreader-4a.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-4b.png&#34; srcset=&#34;./skyreader-4b.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;こんな感じに有効なフィードが表示されるので選択する（この場合はどちらも同じ内容）。&lt;/p&gt;
&lt;p&gt;通常の RSS フィードも登録できる。
この場合はブログページの 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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-5.png&#34; srcset=&#34;./skyreader-5.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;https://go.dev/blog/&#34; target=&#34;_blank&#34; title=&#34;The Go Blog - The Go Programming Language&#34;&gt;&lt;code&gt;https://go.dev/blog/&lt;/code&gt;&lt;/a&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-6.png&#34; srcset=&#34;./skyreader-6.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-7.png&#34; srcset=&#34;./skyreader-7.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;以下の操作ができる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read&lt;/strong&gt;: 既読・未読を切り替える&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save&lt;/strong&gt;: 後で読むために保存する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share&lt;/strong&gt;: 記事を共有する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt;: 別タブで Web ページを開く&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full&lt;/strong&gt;: 記事の内容をフル表示する&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tag&lt;/strong&gt;: タグを付ける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;共有とタグについてはどうやって使うのか分からない。
今後の実装になるのかな？&lt;/p&gt;
&lt;p&gt;「後で読む」については次節で。&lt;/p&gt;
&lt;h2&gt;後で読む&lt;/h2&gt;
&lt;p&gt;記事を「後で読む」ために保存することができる。
前節に書いたようにフィードの各記事に対して “Save” することもできるし URL を直接指定して “Save” することもできる。&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-2.png&#34; srcset=&#34;./skyreader-2.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;メニューの右上の “＋” の部分をクリック。
“ Save Article by URL” を選択して 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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-8.png&#34; srcset=&#34;./skyreader-8.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;見終わったページは “Archive” に移動できる。&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://skyreader.app/&#34;&gt;
&lt;a href=&#34;https://skyreader.app/&#34;&gt;&lt;img src=&#34;./skyreader-9.png&#34; srcset=&#34;./skyreader-9.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader&#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://skyreader.app/&#34;&gt;Skyreader&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;これはありがたい機能。&lt;/p&gt;
&lt;h2&gt;Skyreader の制限&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://skyreader.app/&#34; target=&#34;_blank&#34; title=&#34;Skyreader&#34;&gt;Skyreader&lt;/a&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://skyreader.app/settings&#34;&gt;
&lt;a href=&#34;https://skyreader.app/settings&#34;&gt;&lt;img src=&#34;./settings.png&#34; srcset=&#34;./settings.png 806w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Skyreader: Settings&#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://skyreader.app/settings&#34;&gt;Skyreader: Settings&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;他所の Feed Reader サービスをガッツリ使ってる人には物足りないスペックだと思うが，正式リリースの際はサブスクリプション制にする可能性があるらしい（現在も支援を募集している）。
他にも色々と機能を追加する予定のようだ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://skyreader-dev.leaflet.pub/3mfmuhvwoos2g&#34;&gt;Skyreader is starting to become a complete reading environment: subscribe to anything (RSS, standard.site, more coming soon), save and manage your reading list, and control your data on atproto. Browser extensions, more integrations, and full PDS sync for highlights and reading position coming soon.&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://skyreader-dev.leaflet.pub/3mfmuhvwoos2g&#34;&gt;Skyreader update - standard.site feeds, read-it-later workflow, and sustainability&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;楽しみにしつつ，試してみるつもりだ。
しかし &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; はめっちゃ使い勝手がいい。
同一の Lexicon でサービス間を水平展開できるというのは，色々と夢が広がる話である。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&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;/ul&gt;
</content>
	</entry><entry>
		<title>ぞーぺんのユーザ体験</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/02/zonepane/" />
		<id>tag:text.Baldanders.info,2026-02-18:/remark/2026/02/zonepane/</id>
		<published>2026-02-18T11:17:33+00:00</published>
		<updated>2026-03-08T09:50:20+00:00</updated>
		<summary>ぞーぺんのスタイルだと，最初に表示されるポストから下は既に見たポストだと確信が持てる。そしてスクロールアップして TL の先頭に辿り着けば閲覧終了である。</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;「ぞーぺん（ZonePane）」については以前に&lt;a href=&#34;https://text.baldanders.info/remark/2025/06/multi-post-with-zonepane/&#34; target=&#34;_blank&#34;&gt;クロスポスト機能を紹介&lt;/a&gt;した。
あれから iOS 版もリリースされたそうで&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://note.com/panecraft/n/n2b5e96633032&#34; target=&#34;_blank&#34;&gt;ZonePane iOS版をリリースしました！｜takke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://note.com/panecraft/n/n0bfcfffdcb62&#34; target=&#34;_blank&#34;&gt;ZonePane for iOS が Mastodon に対応しました！｜takke&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CMP&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; (Compose Multiplatform) で共通化した部分については Android 版も幾らかこれの恩恵を受けているっぽい。
前にぞーぺんの利用を止めてしまった人も改めて試したら印象が変わってるかもしれない。&lt;/p&gt;
&lt;p&gt;さて，2ヶ月ちょっとの入院生活だったわけだが，困ったのが通信環境。
転院後は Wi-Fi 環境も使えるようになったが，回線が細くて微妙な感じ。
自宅から&lt;a href=&#34;https://text.baldanders.info/remark/2024/05/get-a-used-pc-from-workplace/&#34; target=&#34;_blank&#34; title=&#34;勤務先からの払い下げ PC&#34;&gt;ノート PC&lt;/a&gt; を持ってきてもらったが，それなりに場所を取るし，特にリハビリ中などは貴重品入れにしまっておく必要があり常時広げておくわけにはいかないため実際にはあまり使わなかった。&lt;/p&gt;
&lt;p&gt;結局 Mastodon や Bluesky のタイムライン（TL）の新着チェックは専らスマホのキャリア回線で行い，アプリはぞーぺんを使っていた。
いや，ホンマぞーぺん入れててよかったよ。&lt;/p&gt;
&lt;p&gt;それから，おかげさまで無事退院して自宅の広いモニタで Web ブラウザベースで作業できるようになったんだけど TL を眺めててどうにも違和感を感じる。
ちょっと考えて分かった。
スクロールの向きが違うんだ！&lt;/p&gt;
&lt;p&gt;Mastodon にせよ Bluesky にせよ Web アプリではまず TL のトップが表示され過去を遡るようにスクロールダウンする。
一方，ぞーぺんは前回閲覧したポストを覚えていて，そこからスクロールアップして新しいポストを読む，という動作になる。&lt;/p&gt;
&lt;p&gt;ぞーぺんのスタイルだと，最初に表示されるポストから下は既に見たポストだと確信が持てる。
そしてスクロールアップして TL の先頭に辿り着けば閲覧終了である。&lt;/p&gt;
&lt;p&gt;それ以上の作業はない。&lt;/p&gt;
&lt;p&gt;一方 Web アプリの場合は過去にスクロールダウンしていくため「どこまで読んだっけ？」と考えながら読み進める。
それで「この辺かな？」というところまで辿り着いてもまだ下にスクロールできるため，ついその先（過去）も見てしまう。&lt;/p&gt;
&lt;p&gt;それでもちゃんと TL が時系列に並んでいるなら「止めどき」がまだ分かりやすいけど，これが「おすすめ」順になっていたら目も当てられない。
「やめられない，とまらない」というやつだ。
まさにメンタル・ジャンクフード，注目の搾取，（可処分）時間の搾取，である。
だから「&lt;a href=&#34;https://www.cnn.co.jp/tech/35243762.html&#34; target=&#34;_blank&#34; title=&#34;SNSが「子どもの脳内中毒を設計」、ユーザーがメタとYouTube訴えた裁判始まる(1/2) - CNN.co.jp&#34;&gt;子どもの脳内中毒を設計&lt;/a&gt;」とか言われて訴えられるんだよ（「脳内中毒」という言い草には？？？だけど）。&lt;/p&gt;
&lt;p&gt;というわけで，今後も TL の新着チェックはスマホでぞーぺんで行うことにした。
過去に「おすすめ」や「ブックマーク」したポストの確認とそこから発生する調べものはパソコンのブラウザで。
何故ならスマホのブラウザはタブ操作の使い勝手が悪いから。&lt;/p&gt;
&lt;p&gt;マジで UX (User eXperience) って大事だなって思ったよ。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://fedibird.com/@zonepane&#34; target=&#34;_blank&#34;&gt;ZonePane(ぞーぺん) (@zonepane@fedibird.com) - Fedibird&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;&lt;a href=&#34;https://gwern.net/doc/culture/2010-dobelli.pdf&#34;&gt;Avoid News: Towards a Healthy News Diet &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;/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/B0C9Z7KGRN?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/41LvknHYLwL._SL160_.jpg&#34; width=&#34;112&#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/B0C9Z7KGRN?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;はじめて学ぶ ビデオゲームの心理学 脳のはたらきとユーザー体験（UX）&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;セリア ホデント (著), 山根 信二（監修） (著), 山根 信二 (翻訳), 成田 啓行 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;福村出版 2022-12-15 (Release 2023-07-03)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B0C9Z7KGRN (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;Kindle 版が出ている。ゲームデザイナやゲームエンジニアだけでなく，ソフトウェア・エンジニアは全員読むべき。あと，ゲーマーな人も読むといいよ。感想は&lt;a href=&#34;https://text.baldanders.info/remark/2023/04/the-psychology-of-video-games/&#34;&gt;こちら&lt;/a&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;2023-11-21&#34;&gt;2023-11-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;!-- はじめて学ぶ ビデオゲームの心理学 Kindle 版 --&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;CMP (Compose Multiplatform) は Android と iOS の両方に対応したアプリを開発できる Kotlin ベースのフレームワーク。&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>Leaflet と The Atmosphere</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/02/leaflet-and-the-atmosphere/" />
		<id>tag:text.Baldanders.info,2026-02-11:/remark/2026/02/leaflet-and-the-atmosphere/</id>
		<published>2026-02-11T09:45:00+00:00</published>
		<updated>2026-03-06T02:48:56+00:00</updated>
		<summary>入院中の暇つぶしに遊んだブログサービス Leaflet を紹介してみる。</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;div class=&#34;box&#34;&gt;&lt;p&gt;&lt;strong&gt;【2026-03-06 追記】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最新の atproto 関連サービス利用については以下を参照のこと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/atproto-based-services/&#34; target=&#34;_blank&#34;&gt;AT Protocol 関連サービスの利用について&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;無事に退院できました。
入院中の話（後編）はそのうち書くとして，今回は入院中の暇つぶしに遊んだブログサービス &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; を紹介してみる。&lt;/p&gt;
&lt;h2&gt;Leaflet (leaflet.pub)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet (leaflet.pub)&lt;/a&gt; は &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;AT (Authenticated Transfer) Protocol&lt;/a&gt; (以降 &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./leaflet.png&#34; srcset=&#34;./leaflet.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Leaflet&#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://leaflet.pub/&#34;&gt;Leaflet&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;そのまま “Write a Doc” で書き始めることもできるけど&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; “Start a Publication and blog in the Atmosphere” で Bluesky アカウントと紐づけることもできる。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./leaflet-sign-up-1.png&#34; srcset=&#34;./leaflet-sign-up-1.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Log In or Sign Up&#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://leaflet.pub/&#34;&gt;Log In or Sign Up&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;“use an ATProto handle” を選ぶと Bluesky 以外の &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; ベースのサービスのアカウントでログインできるらしいのだが，私は Bluesky 以外にアカウントを持ってないので省略。
ここは素直に “Log In/Sign Up with Bluesky” ボタンを押す。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./leaflet-sign-up-2.png&#34; srcset=&#34;./leaflet-sign-up-2.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Log In or Sign Up&#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://leaflet.pub/&#34;&gt;Log In or Sign Up&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Bluesky のハンドル名（&lt;code&gt;user.bsky.social&lt;/code&gt; など）を入力して認証を開始する。
ちなみに OAuth 認証なのでアプリパスワードではなく通常のパスワードを使う必要がある。
認証が成功すると OAuth のアクセス承認画面がでる。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./oauth-approve.png&#34; srcset=&#34;./oauth-approve.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;承認する&#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://leaflet.pub/&#34;&gt;承認する&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;接続先（&lt;code&gt;leaflet.pub&lt;/code&gt;）等をよく確認すること。
ここで “承認する” を選ぶと Bluesky アカウントと紐付けられ Publication 作成画面に移動する。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./new-publication.png&#34; srcset=&#34;./new-publication.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Create Your Publication!&#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://leaflet.pub/&#34;&gt;Create Your Publication!&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;こんな感じに Publication 名（ブログ名）やドメイン名等を決めて “Create Publication!” ボタンを押すと Publication が作成される。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./publication.png&#34; srcset=&#34;./publication.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Create Your Publication!&#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://leaflet.pub/&#34;&gt;Create Your Publication!&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ひとつのアカウントに対して複数の Publication を作成することができる。
さっそく “New Draft” ボタンを押して記事を書いてみよう。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./draft-1.png&#34; srcset=&#34;./draft-1.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Draft&#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://leaflet.pub/&#34;&gt;Draft&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;編集は WYSIWYG (What You See Is What You Get) スタイルで，今どきの markdown 記法とかは使えない。
最初「絵とかどうやって入れるの？」と途方に暮れたが，行頭に &lt;code&gt;/&lt;/code&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./draft-2.png&#34; srcset=&#34;./draft-2.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Draft&#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://leaflet.pub/&#34;&gt;Draft&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;でも表は書けないっぽい。&lt;/p&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./draft-3.png&#34; srcset=&#34;./draft-3.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Draft&#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://leaflet.pub/&#34;&gt;Draft&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;記事の保存は自動で行われる。
公開する際は左上の “Publish!” ボタンを押す。&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./draft-4.png&#34; srcset=&#34;./draft-4.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Draft&#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://leaflet.pub/&#34;&gt;Draft&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://leaflet.pub/&#34;&gt;
&lt;a href=&#34;https://leaflet.pub/&#34;&gt;&lt;img src=&#34;./publish.png&#34; srcset=&#34;./publish.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Publish!&#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://leaflet.pub/&#34;&gt;Publish!&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;“Share on Bluesky” を選ぶと記事へのリンクが Bluesky にポストされる。
“Publish this Post!” ボタンを押すと記事が公開される。
Bluesky へのポストはこんな感じ。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;blockquote class=&#34;bluesky-embed&#34; data-bluesky-uri=&#34;at://did:plc:w7fwp2mtlaaffnx42wsc76wt/app.bsky.feed.post/3meibm6q6oc2r&#34; data-bluesky-cid=&#34;bafyreigopqsviwupg4sawxqt3tqlgxrhf2qxbx76fw3r4zd3wlwkbtkzky&#34; data-bluesky-embed-color-mode=&#34;system&#34;&gt;&lt;p lang=&#34;&#34;&gt;2026-02-08 のお散歩カメラ&lt;br&gt;&lt;br&gt;&lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt/post/3meibm6q6oc2r?ref_src=embed&#34;&gt;[image or embed]&lt;/a&gt;&lt;/p&gt;&amp;mdash; Spiegel＠巡遊者 (&lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt?ref_src=embed&#34;&gt;@baldanders.info&lt;/a&gt;) &lt;a href=&#34;https://bsky.app/profile/did:plc:w7fwp2mtlaaffnx42wsc76wt/post/3meibm6q6oc2r?ref_src=embed&#34;&gt;February 10, 2026 at 2:54 PM&lt;/a&gt;&lt;/blockquote&gt;&lt;script async src=&#34;https://embed.bsky.app/static/embed.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;
&lt;/figure&gt;
&lt;p&gt;実際に公開した記事はこんな感じ。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;https://spiegel.leaflet.pub/3meibm4cbj22r&#34;&gt;&lt;img src=&#34;./posted.png&#34; srcset=&#34;./posted.png 900w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;雪やこんこ - お散歩カメラ&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;https://spiegel.leaflet.pub/3meibm4cbj22r&#34;&gt;雪やこんこ - お散歩カメラ&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;凝ったカスタマイズはできなさそうだが，基本的な機能は押さえてあるし，シンプルで使いやすいサービスだと思う。&lt;/p&gt;
&lt;h2&gt;Leaflet と The Atmosphere&lt;/h2&gt;
&lt;p&gt;最初に述べたように &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; は &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; ベースのブログサービスである。
&lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; の構成はこんな感じ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox lightmode&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://commons.wikimedia.org/wiki/File:Bluesky%E2%80%93AT_Protocol_federation_architecture.svg&#34;&gt;
&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Bluesky%E2%80%93AT_Protocol_federation_architecture.svg&#34;&gt;&lt;img src=&#34;./Bluesky%e2%80%93AT_Protocol_federation_architecture.svg.png&#34; srcset=&#34;./Bluesky%e2%80%93AT_Protocol_federation_architecture.svg.png 960w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;File:Bluesky–AT Protocol federation architecture.svg - Wikimedia Commons (CC BY 4.0)&#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://commons.wikimedia.org/wiki/File:Bluesky%E2%80%93AT_Protocol_federation_architecture.svg&#34;&gt;File:Bluesky–AT Protocol federation architecture.svg - Wikimedia Commons (CC BY 4.0)&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;前に紹介した&lt;a href=&#34;https://text.baldanders.info/remark/2026/01/trilinesat/&#34; target=&#34;_blank&#34; title=&#34;三行日記はじめました&#34;&gt;三行日記&lt;/a&gt;と同じように &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; も（おそらく&lt;sup id=&#34;fnref1: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;）独自のストレージを持っているわけではなく PDS (Personal Data Server) の各ユーザのリポジトリに記事データを格納している。&lt;/p&gt;
&lt;p&gt;さらに &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; は最近 &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; と呼ばれる（ブログなどの）長文記事用の Lexicon を&lt;a href=&#34;https://lab.leaflet.pub/3md4qsktbms24&#34; target=&#34;_blank&#34; title=&#34;Leaflet, standard.site, and open social publishing! - Leaflet Lab Notes&#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;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;a href=&#34;https://pckt.blog/&#34; target=&#34;_blank&#34; title=&#34;pckt.blog&#34;&gt;pckt&lt;/a&gt; や &lt;a href=&#34;https://offprint.app/&#34; target=&#34;_blank&#34; title=&#34;Own your words. Own your audience. | Offprint&#34;&gt;Offprint&lt;/a&gt; といったサービスがあるらしい。
同じ Lexicon を持つこれらのサービスでは相互運用が容易になる。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&lt;/a&gt; に関連して以下の記事を見つけた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.augment.ink/the-everything-account/&#34; target=&#34;_blank&#34;&gt;The Everything Account&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この記事は以下の問題意識から始まる。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;&lt;p&gt;The problem with our accounts is that they aren&amp;rsquo;t our accounts. They&amp;rsquo;re accounts owned by Google, Instagram, Reddit, and X. And when any of these organizations wants to go rogue, all you can do is say &amp;ldquo;wow, that sucks,&amp;rdquo; and keep using it because starting from scratch with another service is hard.&lt;/p&gt;
&lt;p&gt;And what makes it hard is simple: they have our data, including our posts, our relationships, and so much more, and we can&amp;rsquo;t take it all elsewhere. The data you&amp;rsquo;ve created in an app is directly tied to the app itself, and the companies behind it hoard the data because they know it&amp;rsquo;s what gives them the power to hold on to you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;The Everything Account&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;「私のアカウント」「私のデータ」だと思っているものは実際にはアプリと不可分で，サービス・プロバイダが所有し囲っており，アカウントおよびそれに紐づくデータがサービス間で共有・移動することはあまりない。
プロバイダの気が向けばデータを共有するための API を提供したりインポート・エクスポート機能を提供したりすることもあるが，それが他サービスとマッチするとは限らない。&lt;/p&gt;
&lt;p&gt;中国の WeChat は “The Everything App” (万能アプリ) と呼ばれる仕組みを持っている。
あるひとつのアプリのアカウントに対して多様なミニアプリがぶら下がり，それらの間でシームレスにデータを共有できる仕組みらしい。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;&lt;p&gt;here&amp;rsquo;s a common concept known as &amp;ldquo;The Everything App&amp;rdquo;: a single app that contains a series of sub-apps, all under a single account. An example is the popular Chinese app &lt;a href=&#34;https://en.wikipedia.org/wiki/WeChat&#34; target=&#34;_blank&#34;&gt;WeChat&lt;/a&gt;, which offers messaging, payments, a full social network, and mini-apps that other companies can build to live inside it.&lt;/p&gt;
&lt;p&gt;This simplifies the model we&amp;rsquo;re used to by not requiring you to create a new account for every app. The Everything App stores your data in a shared location within it, and other apps can use it as long as you give them permission.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;The Everything Account&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;確かにこの方法であれば “The Everything App” の裁量下で多様なサービスとアカウントとデータを共有できる。
ただし，それでも “The Everything App” のアカウント自体は「わたしのもの」ではなく “The Everything App” を所有するプロバイダのものである。&lt;/p&gt;
&lt;p&gt;では本当の意味で「わたしのアカウント」「わたしのデータ」を実現するにはどうすればいいのか。
これを解決する（解決できそう）なのが &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; である。
先に挙げた &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; の構成をもう一度見返してみよう。&lt;/p&gt;
&lt;p&gt;「わたしのアカウント」「わたしのデータ」を格納している PDS はアプリから独立しており， Bluesky を含む各アプリは API を通じて PDS にアクセスする。
これが “The Everything Account” (万能アカウント) である。
そして “The Everything Account” を中心にしたエコシステムを “The Atmosphere” と呼ぶ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;img src=&#34;./Screenshot_20260204_121413_Samsung-Notes.jpg&#34; srcset=&#34;./Screenshot_20260204_121413_Samsung-Notes.jpg 1000w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;
&lt;p&gt;The Atmosphere, as you can see above, already has countless apps you can use. There are Twitter-like apps such as &lt;a href=&#34;https://bsky.app/&#34; target=&#34;_blank&#34;&gt;Bluesky&lt;/a&gt; and &lt;a href=&#34;https://blacksky.community/&#34; target=&#34;_blank&#34;&gt;Blacksky&lt;/a&gt;; blogging services like &lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34;&gt;Leaflet&lt;/a&gt;, &lt;a href=&#34;https://offprint.app/&#34; target=&#34;_blank&#34;&gt;Offprint&lt;/a&gt;, and &lt;a href=&#34;https://pckt.blog/&#34; target=&#34;_blank&#34;&gt;pckt&lt;/a&gt;; collection and annotation tools like &lt;a href=&#34;https://semble.so/&#34; target=&#34;_blank&#34;&gt;Semble&lt;/a&gt;, &lt;a href=&#34;http://margin.at/&#34; target=&#34;_blank&#34;&gt;Margin&lt;/a&gt;, and &lt;a href=&#34;https://seams.so/&#34; target=&#34;_blank&#34;&gt;Seams&lt;/a&gt;; and I can go on and on because the ecosystem is expanding by the day. And this is just a small portion of the existing Atmosphere - I couldn&amp;rsquo;t fit all of the different apps because there are just. so. many. Perhaps in a separate post.&lt;/p&gt;&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;The Everything Account&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;不勉強で &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; を中心としたいわゆる ATmosphere が既にこれほどの多様性を産んでいることを初めて知った。
真面目に &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; の勉強をしないといけないなぁ。&lt;/p&gt;
&lt;p&gt;以上の話を併せると &lt;a href=&#34;https://atproto.com/&#34; target=&#34;_blank&#34; title=&#34;The AT Protocol&#34;&gt;atproto&lt;/a&gt; の ATmosphere が実装よりの話で “The Atmosphere” はもう少し概念よりの話ということになるだろうか。
実際には稼働し利用されている PDS のほとんどは Bluesky が提供している &lt;code&gt;bsky.social&lt;/code&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; らしいのでまだ理想の状況とは言えないかもしれないが PDS 自体は自前で立てることも可能らしい。
&lt;a href=&#34;https://hostdon.jp/&#34; target=&#34;_blank&#34; title=&#34;Hostdon | 分散SNSホスティングサービス&#34;&gt;Hostdon&lt;/a&gt; でお一人様サーバを立てるみたいに，簡単に PDS サーバを立てられるようになると面白いんだけどねぇ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;&lt;p&gt;The Atmosphere is an ecosystem that respects your agency as a user, and it&amp;rsquo;s one of many ways we can start taking back control of our online experiences. Whether you&amp;rsquo;re a user or a builder, you no longer need to hold onto hope that a giant company does the right thing for you. You can take your Everything Account across The Atmosphere without the permission of any other entity.&lt;/p&gt;
&lt;p&gt;[&amp;hellip;]&lt;/p&gt;
&lt;p&gt;Your Everything Account – your account on The Atmosphere – is your account. And it&amp;rsquo;s about damn time we had an account that actually is.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://www.augment.ink/the-everything-account/&#34;&gt;The Everything Account&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://lab.leaflet.pub/&#34; target=&#34;_blank&#34;&gt;Leaflet Lab Notes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://arxiv.org/abs/2402.03239&#34; target=&#34;_blank&#34;&gt;[2402.03239] Bluesky and the AT Protocol: Usable Decentralized Social Media&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ja.wikipedia.org/wiki/AT_Protocol&#34; target=&#34;_blank&#34;&gt;AT Protocol - Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://atasinti.chu.jp/dad3/archives/86927&#34; target=&#34;_blank&#34;&gt;ATProtocol上でブログ風長文投稿を行うLeaflet – あたしンちのおとうさんの独り言&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://atasinti.chu.jp/dad3/archives/86992&#34; target=&#34;_blank&#34;&gt;続・ATProtocol上でブログ風長文投稿を行うLeaflet – あたしンちのおとうさんの独り言&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://kisato.leaflet.pub/3meuwu3ggpk2q&#34; target=&#34;_blank&#34;&gt;leaflet 更新と使い方 -  kisato&amp;rsquo;s mini blog&lt;/a&gt;&lt;/p&gt;
&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;&lt;a href=&#34;https://leaflet.pub/&#34; target=&#34;_blank&#34; title=&#34;Leaflet&#34;&gt;Leaflet&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;&amp;#160;&lt;a href=&#34;#fnref1: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;Lexicon は直訳的には「語彙（集）」だが，ここではデータおよびそのアクセスのための構造（schema）を指す。ちなみに Bluesky の lexicon は bsky.app で，これは Bluesky の App View を兼ねている（筈）。&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;厳密には Bluesky の PDS は多数のサーバで構成されているそうだが，ユーザから見た PDS へのアクセスは &lt;code&gt;bsky.social&lt;/code&gt; で&lt;a href=&#34;https://docs.bsky.app/docs/advanced-guides/entryway&#34; target=&#34;_blank&#34; title=&#34;PDS Entryway | BlueskyPDS Entryway | Bluesky&#34;&gt;統合されている&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;/ol&gt;
&lt;/div&gt;
</content>
	</entry><entry>
		<title>Kagi 翻訳のスマホアプリが登場</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/02/kagi-translate-arrives-on-mobile/" />
		<id>tag:text.Baldanders.info,2026-02-06:/remark/2026/02/kagi-translate-arrives-on-mobile/</id>
		<published>2026-02-06T03:39:43+00:00</published>
		<updated>2026-02-07T07:20:07+00:00</updated>
		<summary>これでまたひとつ Google の支配から逃れられる</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;2月6日は「ブログの日」なんだそうで。
なんでこの日なんだろうと軽くググってみたが，ただの&lt;a href=&#34;https://prtimes.jp/magazine/today/blog-day/&#34; target=&#34;_blank&#34; title=&#34;ブログの日（2月6日）｜意味や由来・広報PRに活用するポイントと事例を紹介 | PR TIMES MAGAZINE&#34;&gt;語呂合わせ&lt;/a&gt;らしい（笑） だからというわけではないが，今回はツールの紹介。
いや，最近はツールやサービスの紹介ばっかりしてるな。
入院生活はそれだけ暇ということで。&lt;/p&gt;
&lt;p&gt;有料検索サービスの &lt;a href=&#34;https://kagi.com/&#34; target=&#34;_blank&#34;&gt;Kagi&lt;/a&gt; が提供している翻訳サービス &lt;a href=&#34;https://translate.kagi.com/&#34; target=&#34;_blank&#34; title=&#34;Kagi Translate&#34;&gt;Kagi Translate&lt;/a&gt; がスマホアプリとしてリリースされた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.kagi.com/kagi-translate-mobile&#34; target=&#34;_blank&#34;&gt;Kagi Translate Arrives on Mobile | Kagi Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/us/app/kagi-translate/id6748310237&#34; target=&#34;_blank&#34;&gt;Kagi Translate App - App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.kagi.translate&#34; target=&#34;_blank&#34;&gt;Kagi Translate - Apps on Google Play&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39; lang=&#34;en&#34;&gt;
&lt;blockquote class=&#34;nobox&#34; cite=&#34;https://www.youtube.com/watch?v=4ElOC3g58O8&#34;&gt;&lt;div style=&#34;position: relative; margin: 0 2rem; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;&#34;&gt;
&lt;iframe class=&#34;youtube-player&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&#34; allowfullscreen frameborder=&#34;0&#34; src=&#34;https://www.youtube-nocookie.com/embed/4ElOC3g58O8&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4ElOC3g58O8&#34;&gt;Kagi Translate Arrives on Mobile - YouTube&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;以下 &lt;a href=&#34;https://assistant.kagi.com/&#34; target=&#34;_blank&#34; title=&#34;Kagi Assistant&#34;&gt;Kagi Assistant&lt;/a&gt; による要約を交えながら紹介してみる。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote&gt;&lt;h3&gt;その場で翻訳&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;モバイルアプリはブラウザ版と同様の主要機能（文書翻訳、音声付き豊富な辞書、細かく設定可能な翻訳オプション）を多く備えています。&lt;/li&gt;
&lt;li&gt;モバイル固有の機能として、画像をアップロードしたり写真を撮ったりして、読み取っているものの完全なコンテキスト理解を得る機能があります。これは語ごとの訳を越え、画像とテキストを合わせて解釈します。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;機能のハイライト：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会話の翻訳：ライブの音声→音声翻訳で、別の言語で話したり聞いたりできます。&lt;/li&gt;
&lt;li&gt;画像翻訳：画像の視覚的文脈を解析し、より正確な翻訳を提供します。&lt;/li&gt;
&lt;li&gt;辞書検索＆校正：単語の意味が不明なときや、自分の表現が正しいか確認したいときにワンタップでチェックできます。&lt;/li&gt;
&lt;li&gt;完全プライベート：Kagi の製品と同様、広告なし・トラッカーゼロで提供されます。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに、デバイス上の翻訳履歴、よく使う単語やフレーズをブックマークする機能（語学学習や日常利用に便利）、および Kagi Translate にしかない細かな改良も備えています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;Kagi Assistant による要約&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;私はあまり使ってないが，文章の校正機能は割と人気があるらしい。&lt;/p&gt;
&lt;p&gt;翻訳機能を単独でアプリ化する意義はけっこうあって，たとえば Bluesky の公式アプリにはポストごとに「翻訳」オプションがあるが，少なくとも Android 版であれば任意の翻訳アプリを選ぶことができる。&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;bluesky-transrate-1.jpg&#34;&gt;
&lt;a href=&#34;bluesky-transrate-1.jpg&#34;&gt;&lt;img src=&#34;./bluesky-transrate-1.jpg&#34; srcset=&#34;./bluesky-transrate-1.jpg 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Bluesky Translation Option&#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;bluesky-transrate-1.jpg&#34;&gt;Bluesky Translation Option&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&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;bluesky-transrate-2.jpg&#34;&gt;
&lt;a href=&#34;bluesky-transrate-2.jpg&#34;&gt;&lt;img src=&#34;./bluesky-transrate-2.jpg&#34; srcset=&#34;./bluesky-transrate-2.jpg 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Bluesky Translation Option&#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;bluesky-transrate-2.jpg&#34;&gt;Bluesky Translation Option&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;こんな感じでアプリ間で連携できるのだ。
助かる！&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote&gt;&lt;h3&gt;ブラウザでの翻訳&lt;/h3&gt;
&lt;p&gt;Kagi Translate を 2024 年にリリースして以来、新機能の追加と一貫した改善が続き、248 以上の言語をサポートしています（Google Translate と同等、DeepL より多く）。
最近では Kagi Translate のブラウザ拡張も導入され、閲覧中にインラインで翻訳できる統合を提供しています。
これによりタブを切り替えたりテキストをコピーしたりすることなく、さまざまなプラットフォーム上で直接翻訳できるようになります。&lt;/p&gt;
&lt;h3&gt;翻訳を始めましょう&lt;/h3&gt;
&lt;p&gt;ブラウザ版とモバイルアプリの両方で、Kagi Translate は誰にでもフル機能の無料体験を提供します。
Kagi 会員は、より高精度の上位翻訳モデルや、校正と翻訳のための「Best モード」、文書翻訳、拡張されたコンテキスト長、より長いテキスト読み上げや音声入力などのプレミアム機能を利用できます。&lt;/p&gt;
&lt;p&gt;これらの機能の一部は現在ベータ版であり、開発を続ける間は一部が全員に無料で提供されます。
ヘルプドキュメントで Kagi Translate の詳細を学ぶことができ、改善のためのフィードバックも歓迎します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;Kagi Assistant による要約&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ということで Kagi のアカウントがなくても使えるらしい。&lt;/p&gt;
&lt;p&gt;ブラウザ版の &lt;a href=&#34;https://translate.kagi.com/&#34; target=&#34;_blank&#34; title=&#34;Kagi Translate&#34;&gt;Kagi Translate&lt;/a&gt; が出たばかりの頃は日本語への翻訳がイマイチな感じだったが，今ではほぼ違和感なく使えるレベルになっていると思う。
ブラウザ拡張機能もめちゃめちゃ便利。
Firefox の AI 翻訳機能は要らない。
私はもう Google 翻訳はほとんど使ってない。&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://theintelligence.com/42086/android-translate-app-privacy/&#34; target=&#34;_blank&#34;&gt;Try a brand new privacy-first Android Translate app | The Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>三行日記はじめました</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/01/trilinesat/" />
		<id>tag:text.Baldanders.info,2026-01-30:/remark/2026/01/trilinesat/</id>
		<published>2026-01-30T10:48:30+00:00</published>
		<updated>2026-03-06T02:48:56+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;div class=&#34;box&#34;&gt;&lt;p&gt;&lt;strong&gt;【2026-03-06 追記】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最新の atproto 関連サービス利用については以下を参照のこと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/atproto-based-services/&#34; target=&#34;_blank&#34;&gt;AT Protocol 関連サービスの利用について&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2&gt;TriLinesAt&lt;/h2&gt;
&lt;p&gt;Bluesky の TL で面白いサービスを見つけた。
三行日記を書いて共有するサービスらしい。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;https://trilinesat.suibari.com/&#34;&gt;
&lt;a href=&#34;https://trilinesat.suibari.com/&#34;&gt;&lt;img src=&#34;./trilineat.png&#34; srcset=&#34;./trilineat.png 1200w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;TriLinesAt&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://trilinesat.suibari.com/&#34;&gt;TriLinesAt&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;すいばり（&lt;a href=&#34;https://bsky.app/profile/suibari.com&#34; target=&#34;_blank&#34;&gt;@suibari.com&lt;/a&gt;）さんが個人で開発・運営しているサービスだそうで Bluesky のアカウントでサインインできる。
認証は OAuth で行っていて（アプリパスワードではない）日記データは PDS (Personal Data Server) にそのまま格納される（ので秘匿できない）ようだ。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./about.png&#34;&gt;
&lt;a href=&#34;./about.png&#34;&gt;&lt;img src=&#34;./about.png&#34; srcset=&#34;./about.png 523w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;TriLinesAt について&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./about.png&#34;&gt;TriLinesAt について&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;入力画面はシンプル。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./new-dialy.png&#34;&gt;
&lt;a href=&#34;./new-dialy.png&#34;&gt;&lt;img src=&#34;./new-dialy.png&#34; srcset=&#34;./new-dialy.png 590w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;新しい日記&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./new-dialy.png&#34;&gt;新しい日記&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;1行あたり50文字。
画像も入れられるらしい。
「Bluesky にシェア」を有効にすれば Bluesky の自 TL にも投稿される。&lt;/p&gt;
&lt;p&gt;表示はこんな感じ。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./saved-dialy.png&#34;&gt;
&lt;a href=&#34;./saved-dialy.png&#34;&gt;&lt;img src=&#34;./saved-dialy.png&#34; srcset=&#34;./saved-dialy.png 589w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;三行日記&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;./saved-dialy.png&#34;&gt;三行日記&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;日記に対するコメント機能はないが ♡ を付けることはできる。
シンプルかつ緩い感じが面白い。&lt;/p&gt;
&lt;h2&gt;Three Good Things&lt;/h2&gt;
&lt;p&gt;“Three Good Things” (TGT) というのは，毎晩寝る前にその日あったよかったこと（些細なことでもよい）を3つ書き出すというエクササイズ。
浅学にして知らなかったのだが「ポジティブ心理学」という分野があるそうで，その中のポジティブ介入（positive interventions）のひとつとして広まった方法なんだそうな。
幸福感の増加や抑うつ症状の減少といった効果があると言われているが，これに関しては異論もあるみたいで（追試では明確な効果が見られなかった），特に重度の鬱病の人に対しては要注意らしい（ヤバそうなら自己流ではなく精神科とかでちゃんとカウンセリングを受けた（受けさせる）ほうがいいと思う）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&#34;https://www.rieti.go.jp/jp/publications/dp/13j073.pdf&#34;&gt;良いことを毎日３つ書くと幸せになれるか？ &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;/ul&gt;
&lt;p&gt;個人的には簡易的な逆向き瞑想と考えれば，なかなか面白いんじゃないかなと思ったりする。
近い過去を振り返って言語化することで自身の記憶の強化や感情の整理にはなるだろう。
また TGT を義務化すると逆効果になることもあるそうで，理屈とかあまり深く考えず緩々とやっていくのがいいのかもしれない。&lt;/p&gt;
&lt;p&gt;まぁ「書きたくないときには書かない」というのはこのブログでも基本的なスタンスなので，三行日記についても構えずに気楽にやっていこう。&lt;/p&gt;
&lt;p&gt;しかし「3」というのはつくづくマジックナンバーなんだなぁ。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://whtwnd.com/whtwnd.com/entries/atproto%E5%85%A5%E9%96%801%20PDS%E3%81%A3%E3%81%A6%EF%BC%9F%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E7%89%B9%E5%BE%B4%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%EF%BC%9F%EF%BC%9F&#34; target=&#34;_blank&#34;&gt;atproto入門1 PDSって？どういう特徴があるの？？ | WhiteWind | WhiteWind blog&lt;/a&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/4106036517?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/41SEG414RdL._SL160_.jpg&#34; width=&#34;107&#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/4106036517?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;新潮社 2009-10-24&lt;/dd&gt;
    &lt;dd&gt;単行本&lt;/dd&gt;
    &lt;dd&gt;4106036517 (ASIN), 9784106036514 (EAN), 4106036517 (ISBN)&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;2019-04-23&#34;&gt;2019-04-23&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;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B07QH9YVZ3?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/61X877YfNXL._SL160_.jpg&#34; width=&#34;160&#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/B07QH9YVZ3?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Anything Goes!（『仮面ライダーオーズ／OOO』挿入歌）&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;大黒摩季 (メインアーティスト)&lt;/dd&gt;
    &lt;dd&gt;avex trax 2019-05-01 (Release 2019-04-26)&lt;/dd&gt;
    &lt;dd&gt;MP3 ダウンロード&lt;/dd&gt;
    &lt;dd&gt;B07QH9YVZ3 (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;2022年は&lt;a href=&#34;https://maki-ohguro.com/&#34;&gt;大黒摩季&lt;/a&gt;30周年だったんだそうで。でも私が知ってて唄える曲ってこれしかないんだよな（笑） 仕事中に聴くとテンションが上がる。&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;2022-03-29&#34;&gt;2022-03-29&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;!-- Anything Goes!（『仮面ライダーオーズ／OOO』） --&gt;
</content>
	</entry>
</feed>
