<feed xmlns="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/">
	<title>List of Vscode [text.Baldanders.info]</title>
	<link rel="alternate" type="text/html" href="https://text.baldanders.info/tags/vscode/" />
	<link rel="self" type="application/atom+xml" href="https://text.baldanders.info/tags/vscode/index.xml" />
	<id>tag:text.Baldanders.info,2026-05-31:/tags</id>
	<updated>2026-05-31T12:43:36+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>Secretary as a Service</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/05/secretary-as-a-service/" />
		<id>tag:text.Baldanders.info,2026-05-31:/remark/2026/05/secretary-as-a-service/</id>
		<published>2026-05-31T03:43:36+00:00</published>
		<updated>2026-06-01T02:30:22+00:00</updated>
		<summary>既に AI サービスはメタクソ化が始まってると思う。早めに逃げれるようにしておかないと。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;h2&gt;Agents Window&lt;/h2&gt;
&lt;p&gt;最近気がついたのだが &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - The open source AI code editor | Your home for multi-agent development&#34;&gt;VS Code&lt;/a&gt; 1.120 から &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/agents/agents-window&#34; target=&#34;_blank&#34; title=&#34;Use the Agents window (Preview)&#34;&gt;Agents Window&lt;/a&gt; なるものが追加されたそうだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gihyo.jp/article/2026/05/vscode-1.120&#34; target=&#34;_blank&#34;&gt;VS Code 1.120リリース、Agentsウィンドウの安定版向けプレビューを開始 | gihyo.jp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://note.com/shali_note/n/n47d9fa3e4a46&#34; target=&#34;_blank&#34;&gt;VS Codeの「Agents window」とは？複数AIエージェントを並列で動かす新機能をやさしく解説します｜しゃり&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仕事でコードを書くときは分担して作業するものなのであまり意識することはないが，独りで作業する場合，特に &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34;&gt;Go&lt;/a&gt; で複数のパッケージを同時に弄る場合は頭の中がとっ散らかってしまうことがある。
我ながら歳をとったなぁとは思うけど。&lt;/p&gt;
&lt;p&gt;というわけで，少しでも作業が軽減できればと &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/agents/agents-window&#34; target=&#34;_blank&#34; title=&#34;Use the Agents window (Preview)&#34;&gt;Agents Window&lt;/a&gt; を試そうとしたんだけど，これって既存の AI エージェントとのセッションを他セッションに引き継げないのな。
「どうにかならん？」と，それこそ &lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;Copilot&lt;/a&gt; に訊いてみたんだが，セッション履歴のインポート・エクスポート機能はあるが（つまりバックアップ・リストアはできる？），他セッションに引き継いで fork することはできないと言われた。
できることは AI に引き継ぎ資料を書かせて，それを別のセッションに読み込ませるくらいだそうな。&lt;/p&gt;
&lt;p&gt;この辺の話を Mastodon/Bluesky で愚痴ったのだが&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://mstdn.world/@rino/116650070084518151/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://mstdn.world/@rino/116650070084518151&#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 @rino@mstdn.world&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://mstdn.world/&#34; async src=&#34;https://mstdn.world/embed.js&#34;&gt;&lt;/script&gt;
&lt;/figure&gt;
&lt;p&gt;みたいなポストをいただいたり。
でも，ここに書かれている Claude のやり方も裏技っぽいよねぇ。
他に「&lt;a href=&#34;https://rio.st/2026/02/26/zed%e3%81%aemcp%e3%82%b5%e3%83%bc%e3%83%90%e3%81%a7%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e5%85%b1%e6%9c%89%e3%81%97%e3%81%9f%e3%81%84/&#34; target=&#34;_blank&#34; title=&#34;ZedのMCPサーバでコンテキスト共有したい - rio.st&#34;&gt;ZedのMCPサーバでコンテキスト共有したい&lt;/a&gt;」みたいな運用もあるよ，と教えてもらった。&lt;/p&gt;
&lt;p&gt;セッションの複製や fork は必須の機能だと思うんだけど，なんで &lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;Copilot&lt;/a&gt; の標準機能にないの？ やっぱそろそろ &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - The open source AI code editor | Your home for multi-agent development&#34;&gt;VS Code&lt;/a&gt; や &lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;Copilot&lt;/a&gt; は卒業すべきかねぇ。
だからといって，個人利用で Claude Code とか使う気はないが。&lt;/p&gt;
&lt;h2&gt;秘書としての AI エージェント&lt;/h2&gt;
&lt;p&gt;他の記事でも言ってるけど，コーディング支援として使う AI はどちらかというとペアプログラミングしている感じ。
それも新人くんとのペアプロ（笑） 最初の頃は「自分で書いたほうが速い」って感じだったんだけど，反応を見ながら指示を出すことで，なんとなく AI の性格のようなものが分かってきた。
&lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;GitHub Copilot&lt;/a&gt; の Pro 契約で使える主なモデルはこんな感じ（個人の意見です。あしからず）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPT-5-mini&lt;/strong&gt;: コストゼロで使えるのが最大のメリット。生真面目なおバカ。コード補完やコメント補完では重宝するが，エージェント・モードだと最初から明後日の方向に全力疾走する。「けもフレ」のアライさんみたいなモデル&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPT-5.3-Codex&lt;/strong&gt;: 個人で使うエージェントとしては一番バランスが取れている。こちらの意見に&lt;a href=&#34;https://text.baldanders.info/remark/2026/05/reading-living-with-ai/#sycophancy&#34; target=&#34;_blank&#34; title=&#34;追従する AI は向社会的な姿勢を減退させる？&#34;&gt;追従（ついしょう）&lt;/a&gt;せず，ちゃんと反論できる。人間のペースに合わせてくれる盲導犬モデル&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Sonnet 4.6&lt;/strong&gt;: 計画立案は上手いが，一度走り出すと融通が利かず失敗するまで突っ走るチョロQモデル。コード分析等で無闇にトークンを消費してる印象。金に糸目をつけず地球資源を濫用する富裕層向き&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;エージェントの使い方がちょっと変わったきっかけになったが &lt;a href=&#34;https://github.com/goark/pa-api&#34; target=&#34;_blank&#34; title=&#34;goark/pa-api: Go client for the Amazon Creators API&#34;&gt;&lt;code&gt;goark/pa-api&lt;/code&gt;&lt;/a&gt; パッケージに来た PR の評価に &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - The open source AI code editor | Your home for multi-agent development&#34;&gt;VS Code&lt;/a&gt; の &lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;Copilot&lt;/a&gt; を使ったこと。
PA-API から Creator API に移行するための大きな変更だったので，自分だけで評価・判断するのがちょっと不安だったのだ。&lt;/p&gt;
&lt;p&gt;実をいうと PR ページでアサインする AI レビューが使いものにならなかったのであまり期待してなかったのだが，思った以上に使えた。
私は，上述の性格診断から GPT-5.3-Codex を常用しているのだが， PR に対するお互いの評価を突き合わせて「議論」が成立したことに驚いた。
結城浩さんの『AIと生きる』に出てくる「&lt;a href=&#34;https://text.baldanders.info/remark/2026/05/reading-living-with-ai/&#34; target=&#34;_blank&#34; title=&#34;『AIと生きる』を読む&#34;&gt;AI との対話&lt;/a&gt;」ってこういう感じなんだなぁ，と実感したのだった。&lt;/p&gt;
&lt;p&gt;これで我が家では &lt;a href=&#34;https://github.com/features/copilot&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer · GitHub&#34;&gt;Copilot&lt;/a&gt; はペアプロ相手の新人くんから秘書に格上げになった。
AI で秘書的な役割を演じるものとして思いつくのはグレッグ・イーガンの『&lt;a href=&#34;https://amzn.to/4viO0LY&#34; target=&#34;_blank&#34; title=&#34;万物理論 | グレッグ・イーガン, 山岸 真 |本 | 通販 | Amazon&#34;&gt;万物理論&lt;/a&gt;』に出てくるシジフォスだな。
私としてはあーゆーのが理想なんだけどねぇ。&lt;/p&gt;
&lt;h2&gt;サービスとしての秘書&lt;/h2&gt;
&lt;p&gt;個人で &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34;&gt;Go&lt;/a&gt; 製ツールを書くときは複数の自作パッケージを同時に扱うことが多い。
そういう意味で &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/agents/agents-window&#34; target=&#34;_blank&#34; title=&#34;Use the Agents window (Preview)&#34;&gt;Agents Window&lt;/a&gt; は便利そうなのだが，前に述べたようにセッションの複製や fork ができないのはいただけない。
あと，複数のセッションを統括する AI セッションが要るよね，たぶん（セッション間の通信？）。
秘書はなんぼあってもいいですからね（by ミルクボーイ）。&lt;/p&gt;
&lt;p&gt;で，思ったんだけど，これ &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - The open source AI code editor | Your home for multi-agent development&#34;&gt;VS Code&lt;/a&gt; から分離したほうがよくね？ そもそもエディタや IDE にエージェント機能を組み込むのは筋が悪いと思うのだ。
だからこそ CLI インタフェースの AI エージェントが人気なんだろうけど GUI デスクトップでいまさら CUI ターミナル上で動かす意味はないよね。
ブラウザ上で動かすのはもっとないけど。&lt;/p&gt;
&lt;p&gt;というわけで &lt;a href=&#34;https://code.visualstudio.com/docs/copilot/agents/agents-window&#34; target=&#34;_blank&#34; title=&#34;Use the Agents window (Preview)&#34;&gt;Agents Window&lt;/a&gt; には密かに期待を寄せている。
どう発展するのか分からないけど。&lt;/p&gt;
&lt;p&gt;あと，やっぱローカル LLM は真面目に勉強しないといけないなぁ。
既に AI サービスは&lt;a href=&#34;https://en.wikipedia.org/wiki/Enshittification&#34; target=&#34;_blank&#34; title=&#34;Enshittification - Wikipedia&#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://qiita.com/yasuo-dev/items/88cc099d3e133ab87cc1&#34; target=&#34;_blank&#34;&gt;VS Code 1.121 で何が変わったのか？ Agents・Mermaid・HTMLプレビュー・ターミナル最適化を整理する - Qiita&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/4488711022?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/51J3DEJJ1TL._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/4488711022?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;万物理論 (創元SF文庫)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;グレッグ・イーガン (著), 山岸 真 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;東京創元社 2004-10-28&lt;/dd&gt;
    &lt;dd&gt;文庫&lt;/dd&gt;
    &lt;dd&gt;4488711022 (ASIN), 9784488711023 (EAN), 4488711022 (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;strong&gt;[Comment]&lt;/strong&gt; グレッグ・イーガンの名作。これも singularity を巡る物語だな。&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;2017-09-18&#34;&gt;2017-09-18&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- 万物理論 --&gt;
</content>
	</entry><entry>
		<title>VS Code 1.122.0 の不具合に関する覚え書き【解消済み】</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/05/vscode-1-122-0-bug-notes/" />
		<id>tag:text.Baldanders.info,2026-05-28:/remark/2026/05/vscode-1-122-0-bug-notes/</id>
		<published>2026-05-28T05:42:28+00:00</published>
		<updated>2026-05-31T04:13:38+00:00</updated>
		<summary>1.122.1 で解消済み</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;h2&gt;【2026-05-30 追記】&lt;/h2&gt;
&lt;p&gt;今回の不具合は 1.122.1 で修正されたようだ。&lt;/p&gt;
&lt;p&gt;APT で &lt;code&gt;code&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 apt-mark unhold code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすればスムーズに更新できるだろう。&lt;/p&gt;
&lt;p&gt;今回のこれは Linux ユーザの評判をかなり落としたんじゃないかねぇ。
起動していきなり画面共有の許可ダイアログが出るのは流石に拙かった。
私もビビったもん。&lt;/p&gt;
&lt;p&gt;Issue スレッドも罵詈雑言の嵐だったし。&lt;/p&gt;
&lt;h2&gt;【2026-05-29 追記】&lt;/h2&gt;
&lt;p&gt;似た isuue が複数立ったのでまとめられたようだ。
現在生きてる issue はこっち。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/issues/318697&#34; target=&#34;_blank&#34;&gt;Last update asks for screen sharing permission every time · Issue #318697 · microsoft/vscode&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://github.com/microsoft/vscode/issues/318697&#34;&gt;👋 This is caused by a new flow for reporting vscode issues (gated behind a setting issueReporter.wizard.enabled). Unfortunately there is a small snippet of code that executes outside the gated setting. Despite us having a test plan item for linux, this has slipped our testing because the test plan item was mistakenly done on WSL and not on a proper linux distribution. I apologize for this regression. We unfortunately cannot &amp;ldquo;pause&amp;rdquo;/&amp;ldquo;freeze&amp;rdquo; an update on linux due to the way package managers work, so we are now working on a fix and a .1 release.&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/issues/318697&#34;&gt;Last update asks for screen sharing permission every time&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;というわけで，今回の現象は別のバグが発生して問題を報告しようとし，その際に画面共有の許可を求めるコードが実行されてしまうことが原因だったようだ。
なんだそれ？ ヤバくね？&lt;/p&gt;
&lt;p&gt;とにかく，今回のケースについては修正されるまでは 1.121.0 にダウングレードしておくのが正解のようだ。&lt;/p&gt;
&lt;h2&gt;VS Code 1.122.0 の不具合に関する覚え書き 【2026-05-28】&lt;/h2&gt;
&lt;p&gt;先程 &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - The open source AI code editor | Your home for multi-agent development&#34;&gt;VS Code&lt;/a&gt; 1.122.0 がリリースされ，自宅マシンの Ubuntu 環境に APT でアップデートしたのだが，起動時に変なダイアログが出るようになった。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote class=&#34;nobox&#34; style=&#39;margin:0 auto;text-align:center;&#39; cite=&#34;./screen-sharing.png&#34;&gt;
&lt;a href=&#34;./screen-sharing.png&#34;&gt;&lt;img src=&#34;./screen-sharing.png&#34; srcset=&#34;./screen-sharing.png 669w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Screen Sharing&#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;./screen-sharing.png&#34;&gt;Screen Sharing&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;どうもこれは既に issue として上がっているようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/issues/317955&#34; target=&#34;_blank&#34;&gt;[Bug]: Unwanted xdg-desktop-portal screen sharing dialog on startup (Wayland, Electron 39) · Issue #317955 · microsoft/vscode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/issues/317948&#34; target=&#34;_blank&#34;&gt;getDisplayMedia called at workbench boot → KDE screen-share dialog on every new window · Issue #317948 · microsoft/vscode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/issues/318697&#34; target=&#34;_blank&#34;&gt;Last update asks for screen sharing permission every time · Issue #318697 · microsoft/vscode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これを回避する方法として2つ挙がっている。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wayland から X11 (XWayland) に切り替える&lt;/li&gt;
&lt;li&gt;ひとつ前のバージョン 1.121.0 にダウングレードする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1 は環境変数か起動時引数で指定する方法がある。
環境変数を指定する方法はこれ。&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;$ ELECTRON_OZONE_PLATFORM_HINT=x11 code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;起動時引数の指定は &lt;code&gt;~/.vscode/argv.json&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-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;err&#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&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;// Temporary bug fix for v1.122.0 (disabling Wayland)
&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;nt&#34;&gt;&amp;#34;ozone-platform&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;x11&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;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;手元の環境で試してみたが，この方法はうまく行かなかった。&lt;/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;$ sudo apt install code=1.121.0-1779186519
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt-mark hold code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2行目は &lt;code&gt;apt 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 apt-mark unhold code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Issue を眺める限り単純じゃないっぽいが，次バージョンで修正されることを期待しよう。&lt;/p&gt;
&lt;h2&gt;【おまけ】 Agents Window&lt;/h2&gt;
&lt;p&gt;（この節は「&lt;a href=&#34;https://text.baldanders.info/remark/2026/05/secretary-as-a-service/&#34; target=&#34;_blank&#34;&gt;Secretary as a Service&lt;/a&gt;」へ移動した）&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gihyo.jp/article/2026/05/vscode-1.122&#34; target=&#34;_blank&#34;&gt;VS Code 1.122リリース、GitHubサインインなしでBYOKを利用可能に | gihyo.jp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>GitHub Copilot はシェル芸達者</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2026/04/github-copilot-shell-wizardry/" />
		<id>tag:text.Baldanders.info,2026-04-09:/remark/2026/04/github-copilot-shell-wizardry/</id>
		<published>2026-04-09T06:57:34+00:00</published>
		<updated>2026-04-09T07:38:08+00:00</updated>
		<summary>GitHub Copilot に少しずつ仕事を振ってみたら，記事の下ごしらえからタグ整理，デプロイ，Hugo 更新まで思った以上に任せられた話。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;最初に予防線を張っておくと，この記事は技術系の内容ではありませんし，私は生成 AI の扱いにも慣れてません。
その辺を割り引いて読んでいただけるとありがたいです。&lt;/p&gt;
&lt;h2&gt;生成 AI にどこまで任せていいのか&lt;/h2&gt;
&lt;p&gt;最近は GitHub Copilot に開発支援だけじゃなくて，このブログのメンテナンスもさせている。
なにせ，どこまで任せていいのか匙加減がさっぱり分からないので，できそうなところから徐々に任せていく感じ。
気分は新卒社会人の OJT だぜ（笑）&lt;/p&gt;
&lt;p&gt;今のところ GitHub Copilot に任せているのは以下の作業：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;タイトル &amp;amp; slug の提案と記事ファイルの作成&lt;/li&gt;
&lt;li&gt;書いた記事の校正とタグの提案&lt;/li&gt;
&lt;li&gt;記事ファイルの commit &amp;amp; push&lt;/li&gt;
&lt;li&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; の更新&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;記事そのものは書かせてない。&lt;/p&gt;
&lt;p&gt;いや，生成 AI に書かせるとホンマに好き勝手な（私の意図とは程遠い）ことを書くのよ。
一度，タイトルだけ決めたまっさらな状態で書かせようとしたら「何の論文を書く気？」って感じのアウトラインを組み始めて，さすがに止めた。
ブログ記事に10個も章立てしてどうする（笑）&lt;/p&gt;
&lt;p&gt;よくアフィリエイト記事を AI に書かせて云々みたいな話を聞くけど，ホンマに AI に書かせてるの？ かなり無茶苦茶するぞ。
ある意味，文才があるのかも知れないが。&lt;/p&gt;
&lt;p&gt;というわけで「記事を書く」以外の作業をやらせている。&lt;/p&gt;
&lt;p&gt;ちなみにモデルは GPT-5.3-Codex を使っている。
あまり Premium Request を消費したくないので最初は GPT-5 mini を使ってたのだが，どうもこの手の「作業」には向かない感じ。
最終的にはローカル LLM を構築したいのだが，お試しレベルならともかく，まともに動くモデルを個人環境で構築するのは難しいか？&lt;/p&gt;
&lt;h2&gt;タイトル &amp;amp; slug の提案と記事ファイルの作成&lt;/h2&gt;
&lt;p&gt;私は最初にタイトルを決めないとブログ記事が書けない。
マイクロブログ程度の短文ならともかく，ブログ記事でタイトルも決めずに書き始めると大抵記事が迷走する（タイトルを決めて書いても迷走しがちなのだが，それはそれ）。&lt;/p&gt;
&lt;p&gt;手順としては&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;日本語のタイトルを決める（ここだけ私の作業）&lt;/li&gt;
&lt;li&gt;Copilot に英語の翻訳と対応する slug を提案させる（たいてい複数個の候補を提案してくれる）&lt;/li&gt;
&lt;li&gt;slug が決まったら記事ファイルを作成させる&lt;/li&gt;
&lt;li&gt;ファイル内の front matter を埋めさせる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という感じ。
日本語タイトルを英訳させるための対話で，色々と気付きがあって面白い。&lt;/p&gt;
&lt;p&gt;たとえば日本語タイトルが曖昧で英訳が頓珍漢な文になることがある。
これは生成 AI 以前の機械翻訳サービスを使ってたときもそうだったが，機械と対話することで「文のこの部分が誤解を招いてるのか」と気づいたりできるわけだ。
こういったやり取りが意外と面白かったりする。&lt;/p&gt;
&lt;p&gt;記事ファイルの作成用にシェルスクリプトを組んでいるのだが，まずその挙動を理解させるところから始めた。
したら「このスクリプトをリファクタリングするか？」と訊いてきたのでやらせてみたら，なかなかいい感じに仕上げてくれた。
これなら AI にスクリプトを改善させることもできそうだ。&lt;/p&gt;
&lt;p&gt;他の既存のスクリプトについても同様にリファクタリングさせ，それらの使い方を &lt;code&gt;copilot-instructions.md&lt;/code&gt; および &lt;code&gt;README.md&lt;/code&gt; にまとめさせた。&lt;/p&gt;
&lt;h2&gt;書いた記事の校正とタグの提案&lt;/h2&gt;
&lt;p&gt;私のブログは意図的に文体を崩して書いているので（設計書やビジネス文書じゃあるまいし），下手に賢い lint では却って使いづらかったりする。
ためしに Copilot に「誤字だけ指摘して」と指示してみたら，いい感じに結果を返してくれた。
以来，校正は Copilot に任せている。&lt;/p&gt;
&lt;p&gt;誤字だけでなく慣用句の漢字間違いの指摘とかは結構ありがたかったり。
それでいて崩した文体については一切スルーしてくれる（笑） 偉い偉い。&lt;/p&gt;
&lt;p&gt;もうひとつ悩んでいるのが記事に付与するタグの選択だ。
これを普通に AI に任せるとメチャクチャにしてくれるので，まずは過去の記事を全て浚ってタグの一覧を作らせるところから始めた。&lt;/p&gt;
&lt;p&gt;したらすごい勢いでシェルスクリプトを書き始めた。
私はそれを「へぇ。なるほど」とか言いながら眺めるだけ。
アレだ。
ペアプログラミングってやつ（笑） 機械相手にペアプロすることになるとは思わなかった。&lt;/p&gt;
&lt;p&gt;せっかくいい感じのスクリプトを書いてくれたので，それをファイルにまとめていつでも呼び出せるようにさせた。
タグの一覧を出現数の多いものからソートして CSV ファイルに出力させる。
ここまでできれば，作成した記事に対してタグ一覧の中から妥当なタグを提案するよう指示すればよい。&lt;/p&gt;
&lt;p&gt;タグ一覧を作ったメリットはもうひとつあって typo がいくつか見つかったのと似たような意味のタグの重複が見つかった。
見つけたのも Copilot だけど（なにせ10年以上の間にタグが450個以上できてるのだ）。
これらも修正方針を提案させた上で修正させた。
ファイル作業に関してはちゃんと手順を踏めば間違えることなくやってくれる。&lt;/p&gt;
&lt;h2&gt;記事ファイルの commit &amp;amp; push&lt;/h2&gt;
&lt;p&gt;記事ファイルの commit に関しては，念のため，最初に commit message を提案させて，私が確認してから実際の作業を行わせている。
ここで GPT-5 mini と GPT-5.3-Codex の違いが大きく出た。&lt;/p&gt;
&lt;p&gt;いや，ブログ記事の追加なんだから &lt;ruby&gt;&lt;rb&gt;AI&lt;/rb&gt;&lt;rp&gt; (&lt;/rp&gt;&lt;rt&gt;君&lt;/rt&gt;&lt;rp&gt;) &lt;/rp&gt;&lt;/ruby&gt; のしたことを書くんじゃなくて，どんな記事を追加したのかを書けよ！&lt;/p&gt;
&lt;p&gt;というわけで，GPT-5 mini は向いてないという結論になった。
commit &amp;amp; push するためのコマンドラインの組み立て自体はどちらも大差ないんだけどねぇ。&lt;/p&gt;
&lt;h2&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push&lt;/h2&gt;
&lt;p&gt;ブログのビルドと GitHub Pages への commit &amp;amp; push についても以前からスクリプトファイルを作っていたので，それをそのまま Copilot に使わせている。
まぁ，自分でやったほうが早いのだが，作業の一連を任せることに意味があると思ってるので，敢えて任せている。
この辺も OJT っぽいよな（笑）&lt;/p&gt;
&lt;p&gt;指示も最初はできるだけ具体的にしていたが，最近は「デプロイして」だけでも（過去の作業履歴や &lt;code&gt;copilot-instructions.md&lt;/code&gt; の記述から）適切に処理してくれるようになった。&lt;/p&gt;
&lt;h2&gt;Hugo の更新&lt;/h2&gt;
&lt;p&gt;このブログは静的サイトジェネレータである &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; を使って構築しているのだが，未だ v1 に到達せずベータ版のままである。
古いテンプレート変数や関数のいくつかは deprecated になっているし，稀に破壊的変更が起きることもある。
&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; のバージョンアップのたびにビルドし直して互換性等の確認をしているのだが，だんだん面倒くさくなってきたので，これも Copilot に任せてみることにした。&lt;/p&gt;
&lt;p&gt;今回もゴリゴリとスクリプトを書き始める AI。
私も前と同じく様子を眺めていたが，出来がよさそうなのでスクリプトファイルとして書き出してもらった。
こんな感じ（長いぞ！）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install latest Hugo Extended .deb from GitHub Releases using apt.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Usage: ./hugo_inst.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gohugoio/hugo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://api.github.com/repos/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/releases/latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WORK_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TMPDIR&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/tmp&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/hugo-inst.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cleanup&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;trap&lt;/span&gt; cleanup EXIT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$WORK_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;arch&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  amd64&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;arm64&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  *&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported architecture: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;This script supports: amd64, arm64&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Current Hugo:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v hugo &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  hugo version &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;hugo command not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Fetching latest release metadata from &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REPO&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;release_json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$API_URL&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;tag_name&amp;#34;/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$version&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed to read latest release version.&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;asset_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;browser_download_url&amp;#34;/ &amp;amp;&amp;amp; /hugo_extended_.*_linux-&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;\.deb/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$asset_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed to find hugo_extended .deb for architecture: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;asset_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;##*/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Latest release: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Downloading: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fL --retry &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --retry-delay &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$asset_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Optional checksum verification when checksums.txt exists in latest release.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;checksums_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;awk -F &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#34;browser_download_url&amp;#34;/ &amp;amp;&amp;amp; /checksums\.txt/ {print $4; exit}&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$release_json&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$checksums_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Downloading checksums.txt for verification ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  curl -fL --retry &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --retry-delay &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; -o checksums.txt &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$checksums_url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt; checksums.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -qx &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Verifying checksum ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;  &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;$&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; checksums.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sha256sum -c -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;checksums.txt does not include &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;; skipping verification.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;checksums.txt not found in latest release; skipping verification.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Installing &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deb_file&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; with apt ...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y &lt;span class=&#34;s2&#34;&gt;&amp;#34;./&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$deb_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Installed Hugo:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Done.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これについては，私は1行も触っていない。&lt;/p&gt;
&lt;p&gt;手順としては&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;インストールするマシンのアーキテクチャを確認して対応する &lt;code&gt;.deb&lt;/code&gt; ファイルをダウンロードする&lt;/li&gt;
&lt;li&gt;可能ならチェックサムの検証も行う&lt;/li&gt;
&lt;li&gt;ダウンロードした &lt;code&gt;.deb&lt;/code&gt; ファイルを &lt;code&gt;apt install&lt;/code&gt; コマンドでインストールする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という感じ。&lt;/p&gt;
&lt;p&gt;これを実行して &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world&amp;#39;s fastest framework for building websites&#34;&gt;Hugo&lt;/a&gt; を更新した後，ブログのビルドを行い，ビルド前後の差分を調べて問題がないことを確認する。
問題がなければビルドしたものを commit &amp;amp; push させる。&lt;/p&gt;
&lt;p&gt;「問題がないことを確認する」の部分は私が判断しているので完全な自動化ではないが，今のところ問題は起きていない。&lt;/p&gt;
&lt;h2&gt;GitHub Copilot はシェル芸達者&lt;/h2&gt;
&lt;p&gt;という感じで緩々と GitHub Copilot を使っている。&lt;/p&gt;
&lt;p&gt;今回の一連で意外とシェル芸達者なのが分かったので，自宅機に &lt;a href=&#34;https://github.com/features/copilot/cli&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot CLI · GitHub&#34;&gt;CLI 版&lt;/a&gt;を入れようかなぁ。
でも，&lt;a href=&#34;https://social.hyuki.net/@hyuki&#34; target=&#34;_blank&#34; title=&#34;結城浩 / Hiroshi Yuki (@hyuki@social.hyuki.net) - 結城浩のマストドン&#34;&gt;結城浩&lt;/a&gt;さんほど使い倒す勇気はないんだよなぁ。
それよりもローカル LLM 構築に向けて環境を整えるほうが先か？&lt;/p&gt;
&lt;h2&gt;参考&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B07TSZZPWN?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/51H&amp;#43;4kUhbFL._SL160_.jpg&#34; width=&#34;121&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/B07TSZZPWN?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;フルスクラッチから1日でCMSを作る_シェルスクリプト高速開発手法入門 改訂2版 (アスキードワンゴ)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;上田 隆一 (著), 後藤 大地 (著), ＵＳＰ研究所 (監修)&lt;/dd&gt;
    &lt;dd&gt;ドワンゴ 2019-07-05 (Release 2019-07-05)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B07TSZZPWN (ASIN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;4&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;far fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;&lt;strong&gt;[Comment]&lt;/strong&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>GitHub Copilot で遊ぶ</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2025/02/playing-with-github-copilot/" />
		<id>tag:text.Baldanders.info,2025-02-08:/remark/2025/02/playing-with-github-copilot/</id>
		<published>2025-02-08T09:04:57+00:00</published>
		<updated>2025-03-07T10:16:41+00:00</updated>
		<summary> 生成 AI の時代に求められる人材とはプロンプトを駆使する技能を持つ人ではなく，生成 AI の提案に NO と言える技術力と見識を持つ「狂狷の徒」ではないだろうか。</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;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;GitHub Copilot&lt;/a&gt; の無料版（制限あり）が開放されて VS Code 上で使えるようになった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&#34; target=&#34;_blank&#34;&gt;GitHub Copilot - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といってもコメントの補完とかコミットメッセージくらいにしか使ってないけど。
英語不得手なので，これだけでもめっちゃ助かっている。&lt;/p&gt;
&lt;p&gt;ちょっと思いついて &lt;a href=&#34;https://github.com/goark/koyomi&#34; target=&#34;_blank&#34; title=&#34;GitHub - goark/koyomi: 日本のこよみ&#34;&gt;&lt;code&gt;github.com/goark/koyomi&lt;/code&gt;&lt;/a&gt;&lt;code&gt;/value&lt;/code&gt; パッケージに曜日（Weekday）型を追加しようと思うのだが，試しに &lt;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;GitHub Copilot&lt;/a&gt; に手伝ってもらうことにした。&lt;/p&gt;
&lt;h2&gt;GitHub Copilot で遊ぶ&lt;/h2&gt;
&lt;p&gt;まず &lt;span class=&#34;box&#34;&gt; &lt;code&gt;Ctrl&lt;/code&gt; &lt;/span&gt;+&lt;span class=&#34;box&#34;&gt; &lt;code&gt;I&lt;/code&gt; &lt;/span&gt; でプロンプトを表示し「&lt;a href=&#34;https://pkg.go.dev/time&#34; target=&#34;_blank&#34; title=&#34;time package - time - Go Packages&#34;&gt;&lt;code&gt;time&lt;/code&gt;&lt;/a&gt;&lt;code&gt;.Weekday&lt;/code&gt; と同等な機能で日本語の曜日名を出力する型」で問い合わせてみる。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./github-copilot-prompt.png&#34;&gt;&lt;img src=&#34;./github-copilot-prompt.png&#34; srcset=&#34;./github-copilot-prompt.png 1039w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;time.Weekday と同等な機能で日本語の曜日名を出力する型&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./github-copilot-prompt.png&#34;&gt;time.Weekday と同等な機能で日本語の曜日名を出力する型&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;おー。
一通り提示してくれるんだな。
既に作っている &lt;a href=&#34;https://github.com/goark/koyomi&#34; target=&#34;_blank&#34; title=&#34;GitHub - goark/koyomi: 日本のこよみ&#34;&gt;&lt;code&gt;koyomi&lt;/code&gt;&lt;/a&gt;&lt;code&gt;/value.DateJp&lt;/code&gt; 型と関連するメソッドも追加されている。&lt;/p&gt;
&lt;p&gt;これはこれで（エラーもバグもないし）使えなくもないのだが，いくつか調整したい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;WeekdayJp&lt;/code&gt; 型の基底型は &lt;code&gt;int&lt;/code&gt; ではなく &lt;a href=&#34;https://pkg.go.dev/time&#34; target=&#34;_blank&#34; title=&#34;time package - time - Go Packages&#34;&gt;&lt;code&gt;time&lt;/code&gt;&lt;/a&gt;&lt;code&gt;.Weekday&lt;/code&gt; としたい
&lt;ul&gt;
&lt;li&gt;機能上のメリットがあるわけではないが「文芸」的に &lt;code&gt;WeekdayJp&lt;/code&gt; 型と &lt;a href=&#34;https://pkg.go.dev/time&#34; target=&#34;_blank&#34; title=&#34;time package - time - Go Packages&#34;&gt;&lt;code&gt;time&lt;/code&gt;&lt;/a&gt;&lt;code&gt;.Weekday&lt;/code&gt; 型が「関連」することを明示したい（&lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34;&gt;Go&lt;/a&gt; に「継承」はない）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;曜日名の出力メソッドは &lt;code&gt;String()&lt;/code&gt;, &lt;code&gt;ShortString()&lt;/code&gt; ではなく &lt;code&gt;StringJp()&lt;/code&gt;, &lt;code&gt;ShortStringJp()&lt;/code&gt; としたい
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;String()&lt;/code&gt; メソッドは &lt;a href=&#34;https://pkg.go.dev/time&#34; target=&#34;_blank&#34; title=&#34;time package - time - Go Packages&#34;&gt;&lt;code&gt;time&lt;/code&gt;&lt;/a&gt;&lt;code&gt;.Weekday&lt;/code&gt; と同じ機能にする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WeekdayJp&lt;/code&gt; 型の値が &lt;code&gt;Sunday&lt;/code&gt; 〜 &lt;code&gt;Saturday&lt;/code&gt; 以外なら，曜日名の出力は &lt;a href=&#34;https://pkg.go.dev/time&#34; target=&#34;_blank&#34; title=&#34;time package - time - Go Packages&#34;&gt;&lt;code&gt;time&lt;/code&gt;&lt;/a&gt;&lt;code&gt;.Weekday.String()&lt;/code&gt; メソッドと同じにしたい&lt;/li&gt;
&lt;/ol&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-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// WeekdayJp is a type that represents the days of the week in the Japanese context.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// It is based on the time.Weekday type from the standard library.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Weekday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;const&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Sunday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Sunday&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;iota&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 日曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Monday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                              &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 月曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Tuesday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                             &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 火曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Wednesday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                           &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 水曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Thursday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                            &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 木曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Friday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                              &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 金曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Saturday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                                            &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 土曜日&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weekdayNames&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;日曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;月曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;火曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;水曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;木曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;金曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;土曜日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weekdayShortNames&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;日&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;月&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;火&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;水&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;木&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;金&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;土&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// String returns the English name of the Japanese weekday (WeekdayJp)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// by converting it to the standard time.Weekday type and calling its String method.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Weekday&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// StringJp returns the Japanese name of the WeekdayJp if it is between Sunday and Saturday.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// If the WeekdayJp is out of this range, it returns the standard time.Weekday string representation.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;StringJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Sunday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;||&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Saturday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Weekday&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weekdayNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// ShortStringJp returns the short Japanese name of the WeekdayJp.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// If the WeekdayJp is not within the valid range (Sunday to Saturday),&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// it returns the default string representation of the time.Weekday.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;WeekdayJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ShortStringJp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Sunday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;||&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Saturday&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Weekday&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;weekdayShortNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;たとえば &lt;code&gt;String()&lt;/code&gt; メソッドは&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./autocomplete-code.png&#34;&gt;&lt;img src=&#34;./autocomplete-code.png&#34; srcset=&#34;./autocomplete-code.png 530w&#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;./autocomplete-code.png&#34;&gt;コード補完&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;という感じにコードを提案してくる。
この状態で &lt;span class=&#34;box&#34;&gt; &lt;code&gt;Tab&lt;/code&gt; &lt;/span&gt; キー押下で確定する。
テストコードも関数名から推測して妥当なコードを提案してくる。
変数・定数もクラス・メソッド名も名前が大事ってことですね（笑）&lt;/p&gt;
&lt;p&gt;コメントの補完も同様。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./autocomplete-comment.png&#34;&gt;&lt;img src=&#34;./autocomplete-comment.png&#34; srcset=&#34;./autocomplete-comment.png 530w&#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;./autocomplete-comment.png&#34;&gt;コメント補完&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&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;./generate-docs.png&#34;&gt;&lt;img src=&#34;./generate-docs.png&#34; srcset=&#34;./generate-docs.png 1038w&#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;./generate-docs.png&#34;&gt;ドキュメント生成&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ATOM や VS Code の使い始めの頃はスニペットベースのコード補完機能に感動したものだが， &lt;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;Copilot&lt;/a&gt; によって柔軟なコード補完や生成ができるのマジ助かる。
今回はコードレビュー機能等は紹介しないが，ちょろんと試した感じではなかなかいい感じである。
人間にレビューを投げる前に &lt;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;Copilot&lt;/a&gt; 相手にレビューを行うのはアリかもしれない。&lt;/p&gt;
&lt;h2&gt;「自律」機械は（今のところ）存在しない&lt;/h2&gt;
&lt;p&gt;教科書に載っているサンプルコード程度ならともかく，プログラムコードに &lt;strong&gt;唯一の正解&lt;/strong&gt; はない。
今回のような小さなコードですらそうなのだ。
&lt;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;Copilot&lt;/a&gt; を含む生成 AI による提案を受け入れるか否かについては「人」による判断が不可欠だし，判断を行うためには，扱う対象に関する知識・技能・技術が要求される。
「自律」的な判断を行うのは今なお，機械ではなく，人の側なのである。&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote cite=&#34;https://www.amazon.co.jp/dp/B071FHBGW8?tag=baldandersinf-22&amp;amp;LINKCODE=OGI&amp;amp;TH=1&amp;amp;PSC=1&#34;&gt;
&lt;q&gt;自立とは、仮想代理人ソフトウェアであるところのエージェントが自ら動き、誰の力も借りずに意思決定できることを言う。
[...]
一方、自律というのは哲学的な意味であり、自らが行動する際の基準と目的を明確を持ち、自ら規範を作り出すことができることをいう。&lt;/q&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B071FHBGW8?tag=baldandersinf-22&amp;amp;LINKCODE=OGI&amp;amp;TH=1&amp;amp;PSC=1&#34;&gt;そろそろ、人工知能の真実を話そう&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;blockquote cite=&#34;https://www.amazon.co.jp/dp/B071FHBGW8?tag=baldandersinf-22&amp;amp;LINKCODE=OGI&amp;amp;TH=1&amp;amp;PSC=1&#34;&gt;
&lt;q&gt;今、世の中で懸念されているのは、自立ではなく自律の方だが、学習能力を与えられ、自らのプログラムを改善できるようになっても、機械が自律することは考えられない。
なぜなら、機械は結局、人間に与えられた理論やルールにのっとって行動することになるからである。&lt;/q&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B071FHBGW8?tag=baldandersinf-22&amp;amp;LINKCODE=OGI&amp;amp;TH=1&amp;amp;PSC=1&#34;&gt;そろそろ、人工知能の真実を話そう&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;GitHub Copilot&lt;/a&gt; をはじめとする最近流行りの生成 AI の機能とは「翻案の大量生産」であり，その膨大な翻案空間から何をどうやって拾い上げるかについては，アルゴリズムの設計を含め（今のところ）人の側に委ねられている&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;a href=&#34;http://copilot.github.com/&#34; target=&#34;_blank&#34; title=&#34;GitHub Copilot · Your AI pair programmer&#34;&gt;GitHub Copilot&lt;/a&gt; が文字通りコパイロット（ナビゲーション）の立ち位置に徹しているのは上手い割り切り方だと思う。&lt;/p&gt;
&lt;p&gt;生成 AI の時代に求められる人材とはプロンプトを駆使（して翻案空間を放浪）する技能を持つ人ではなく（積極的に利用しつつ）生成 AI の提案に NO と言える見識と技術を持つ「&lt;a href=&#34;https://text.baldanders.info/remark/2017/12/hacker-ethic/&#34; target=&#34;_blank&#34; title=&#34;エンジニアこそ「狂狷の徒」たれ&#34;&gt;狂狷の徒&lt;/a&gt;」ではないだろうか。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.watch.impress.co.jp/docs/news/1649089.html&#34; target=&#34;_blank&#34;&gt;GitHub、VS Code上で「Copilot Free」開始　無料で月2000回コード補完 - Impress Watch&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/1659601.html&#34; target=&#34;_blank&#34;&gt;OpenAIの最新推論モデル「o3-mini」が「GitHub Copilot」などで利用可能に - 窓の杜&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/1660865.html&#34; target=&#34;_blank&#34;&gt;無償ユーザーも対象 ～「Gemini 2.0 Flash」が「GitHub Copilot」で利用できるように - 窓の杜&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/1661141.html&#34; target=&#34;_blank&#34;&gt;「Visual Studio Code 1.97」が公開 ～新AI支援機能「Copilot NES」をプレビュー - 窓の杜&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.publickey1.jp/blog/25/github_copilot_agent_mode.html&#34; target=&#34;_blank&#34;&gt;GitHub Copilot Agent Modeが登場。タスクを与えると自律的にプログラミング、テストコードも修正、テストが失敗すればデバッグも － Publickey&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.publickey1.jp/blog/25/ai_1.html&#34; target=&#34;_blank&#34;&gt;生成AIによりプログラマの仕事はなくなるのか？ 「私はそうは思わない」とティム・オライリー氏。プログラマの需要はさらに増えると － Publickey&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://gihyo.jp/article/2025/03/github-copilot-vision-input&#34; target=&#34;_blank&#34;&gt;GitHub Copilot Chat、Visual Studio/VS Code上で画像を入力できるVision機能がパブリックプレビューに | gihyo.jp&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2022/07/code-launderring/&#34; target=&#34;_blank&#34;&gt;GitHub Copilot は貢献者から貢献を奪うか？&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2022/10/cultural-commons/&#34; target=&#34;_blank&#34;&gt;AI は「創作者様」を引きずり下ろすか — 『人権と文化コモンズ』を流し読む&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考図書&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B071FHBGW8?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/51cD7DR87IL._SL160_.jpg&#34; width=&#34;111&#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/B071FHBGW8?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;そろそろ、人工知能の真実を話そう (早川書房)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;ジャン＝ガブリエル ガナシア (著), 小林 重裕・他 (翻訳), 伊藤 直子 (監修)&lt;/dd&gt;
    &lt;dd&gt;早川書房 2017-05-25 (Release 2017-05-31)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B071FHBGW8 (ASIN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;3&#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;far 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;strong&gt;[Comment]&lt;/strong&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;2016-07-02&#34;&gt;2016-07-02&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- 人工知能の真実を話そう --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B0DTT1L1KL?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/51TENFa9uZL._SL160_.jpg&#34; width=&#34;120&#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/B0DTT1L1KL?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;日経サイエンス2025年3月号 [雑誌]&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;日経サイエンス (編集)&lt;/dd&gt;
    &lt;dd&gt;日経サイエンス 2025-01-24 (Release 2025-01-24)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B0DTT1L1KL (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;strong&gt;[Comment]&lt;/strong&gt; Kindle 版は固定レイアウトなのでブラウザ（Kindle Cloud Reader）で読める。特集は「ことばが世界を作る」と「CO2回収の現実味」。&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;2025-02-03&#34;&gt;2025-02-03&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;!-- 「日経サイエンス」2025年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/4814400535?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/41&amp;#43;ew2wl2jL._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/4814400535?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;効率的なGo ―データ指向によるGoアプリケーションの性能最適化&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Bartłomiej Płotka (著), 山口 能迪 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;オライリー・ジャパン 2024-02-24&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4814400535 (ASIN), 9784814400539 (EAN), 4814400535 (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;strong&gt;[Comment]&lt;/strong&gt; &lt;a href=&#34;https://www.oreilly.co.jp/books/9784814400539/&#34;&gt;版元&lt;/a&gt;で Ebook を買える。Go言語のリファレンス本ではない。フトウェア工学，プログラミング（の考え方）を学ぶ教科書的な位置づけかなぁ。&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;2024-04-21&#34;&gt;2024-04-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;!-- 効率的なGo : Efficient Go --&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/B099RTG3J7?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/51TsccJ7LnS._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/B099RTG3J7?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;著作権は文化を発展させるのか: 人権と文化コモンズ&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;山田 奨治 (著)&lt;/dd&gt;
    &lt;dd&gt;人文書院 2021-07-29 (Release 2021-07-29)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B099RTG3J7 (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;&lt;strong&gt;[Comment]&lt;/strong&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;2022-10-23&#34;&gt;2022-10-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;!-- 著作権は文化を発展させるのか: 人権と文化コモンズ --&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/B01J1I8PRQ?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/5132MaXTkGL._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/B01J1I8PRQ?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;社会は情報化の夢を見る (河出文庫)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;佐藤俊樹 (著)&lt;/dd&gt;
    &lt;dd&gt;河出書房新社 2010-09-03 (Release 2016-07-29)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B01J1I8PRQ (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;&lt;strong&gt;[Comment]&lt;/strong&gt; 1996年に出版された『ノイマンの夢・近代の欲望―情報化社会を解体する』の改訂新装版。しかし内容はこれまでと変わりなく，繰り返し語られる技術決定論を前提とする安易な未来予測を「情報化」社会論だとして批判する。&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2015-09-15&#34;&gt;2015-09-15&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- 社会は情報化の夢を見る --&gt;
&lt;h2&gt;作業中の BGV (メン限配信以外)&lt;/h2&gt;
&lt;p&gt;ReGLOSS の五色のバラバラな声がパズルのようにカチッと填まると本当にかっこいいよね。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=u4uDiV3u-do&#34; target=&#34;_blank&#34;&gt;ReGLOSS &amp;lsquo;フィーリングラデーション&amp;rsquo; OFFICIAL MV - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Mb2Pdf7P-a4&#34; target=&#34;_blank&#34;&gt;晴る / ヨルシカ  covered by ReGLOSS 【歌ってみた / hololive DEV_IS】 - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=m6T71r7hRMI&#34; target=&#34;_blank&#34;&gt;ムーンライト / 星街すいせい covered by ReGLOSS 【歌ってみた / hololive DEV_IS】 - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=ed-0AKPWaf8&#34; target=&#34;_blank&#34;&gt;【歌ってみた】STAR TRAIN/Perfume【ReGLOSS】 - YouTube&lt;/a&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;生成 AI の背後にある翻案元のコンテンツやアルゴリズムと知財権との&lt;a href=&#34;https://text.baldanders.info/remark/2023/06/is-generative-ai-copyright-safe/&#34; target=&#34;_blank&#34; title=&#34;Generative AI は Copyright-Safe か？&#34;&gt;関係&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>Chromebook を導入する 7 — VS Code の導入</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2024/05/chromebook-7/" />
		<id>tag:text.Baldanders.info,2024-05-12:/remark/2024/05/chromebook-7/</id>
		<published>2024-05-12T08:48:44+00:00</published>
		<updated>2024-05-12T09:35:08+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;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/03/chromebook-1/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/04/chromebook-2/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 2 — Linux サブシステム&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/04/chromebook-3/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 3 — GnuPG &amp;amp; OpenSSH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/04/chromebook-4/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 4 — Flatpak で Firefox を導入する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/04/chromebook-5/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 5 — APT で Firefox を導入する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/05/chromebook-6/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 6 — Git &amp;amp; Go コンパイラ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2024/05/chromebook-7/&#34; target=&#34;_blank&#34;&gt;Chromebook を導入する 7 — VS Code の導入&lt;/a&gt; ← イマココ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このシリーズとしては多分最終回。
スキマ時間でちまちまやってたから，やたら時間がかかってしまった。&lt;/p&gt;
&lt;h2&gt;VS Code のインストール&lt;/h2&gt;
&lt;p&gt;ググってみると Chromebook の古いバージョンの記事が多く悩ましいのだが，現状では APT 版をインストールするので問題ないようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/setup/linux&#34; target=&#34;_blank&#34;&gt;Running Visual Studio Code on Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上の記事を参考に以下の手順でインストールした&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;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 /etc/apt/keyrings/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo curl -L https://packages.microsoft.com/keys/microsoft.asc -O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ echo &amp;#34;deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/microsoft.asc] https://packages.microsoft.com/repos/code stable main&amp;#34; | sudo tee /etc/apt/sources.list.d/vscode.list &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これでランチャーに VS Code のアイコンが入る。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./launcher.png&#34;&gt;&lt;img src=&#34;./launcher.png&#34; srcset=&#34;./launcher.png 647w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Chromebook ランチャー&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./launcher.png&#34;&gt;Chromebook ランチャー&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;さっそく&lt;a href=&#34;https://text.baldanders.info/remark/2024/05/chromebook-6/&#34; target=&#34;_blank&#34; title=&#34;Chromebook を導入する 6 — Git &amp;amp; Go コンパイラ&#34;&gt;前回&lt;/a&gt;作った &lt;code&gt;hello&lt;/code&gt; プロジェクトのディレクトリに入って &lt;code&gt;code .&lt;/code&gt; で起動してみる。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./vscode.png&#34;&gt;&lt;img src=&#34;./vscode.png&#34; srcset=&#34;./vscode.png 1024w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;VS Code&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./vscode.png&#34;&gt;VS Code&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;うんうん。
問題ないかな。
&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;に比べれば若干もったりしてるが，気になるほどではない。
ChromeOS 標準のエディタに比べればキビキビ動く（笑）&lt;/p&gt;
&lt;p&gt;細かい設定や &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34; title=&#34;The Go Programming Language&#34;&gt;Go&lt;/a&gt; や markdown 関連の設定については以前に書いた記事を参照のこと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/installing-vscode-again/&#34; target=&#34;_blank&#34;&gt;パソコンに Visual Studio Code を導入する（再チャレンジ）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/golang-with-vscode/&#34; target=&#34;_blank&#34;&gt;Go と VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/markdown-with-vscode/&#34; target=&#34;_blank&#34;&gt;Markdown と VS Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一部記述が古くなってるが，まだ使えるな。
何でも取っておくものである。&lt;/p&gt;
&lt;h2&gt;Inconsolata フォントのインストール&lt;/h2&gt;
&lt;p&gt;私はコード表示用のフォントに昔から Inconsolata を使っている。&lt;/p&gt;
&lt;p&gt;今回の Chromebook には既定で入ってないようなので入れておく。
フォントは GitHub のリポジトリからダウンロードできる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/googlefonts/Inconsolata/releases&#34; target=&#34;_blank&#34;&gt;Releases · googlefonts/Inconsolata · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zip ファイルを解凍し，中に入ってる OTF フォント全部を &lt;code&gt;/usr/local/share/fonts&lt;/code&gt; ディレクトリに突っ込んで &lt;code&gt;fc-cache -fv&lt;/code&gt; とすればOK。
確認は &lt;code&gt;fc-list&lt;/code&gt; コマンドでできる。&lt;/p&gt;
&lt;p&gt;VS Code で使う場合は設定の “Editor: Font Family” の項目に設定すればよい。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./vscode-settings-font-family.png&#34;&gt;&lt;img src=&#34;./vscode-settings-font-family.png&#34; srcset=&#34;./vscode-settings-font-family.png 1200w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Editor: Font Family&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./vscode-settings-font-family.png&#34;&gt;Editor: Font Family&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;VS Code は複数のフォントを（優先順位を付けて）指定できるのがいいよね。&lt;/p&gt;
&lt;h2&gt;ファンクションキーがない？&lt;/h2&gt;
&lt;p&gt;VS Code のキーアサインの設定をしようとして気がついたのだが Chromebook にはファンクションキーがなかった。
いや，いまさら気づくとか &lt;code&gt;orz&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nj-clucker.com/chromebook-function-key/&#34; target=&#34;_blank&#34;&gt;Chromebook でファンクションキーを使う方法。F1 から F12 までどこに割り振られているのか？！&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なるほど。
&lt;span&gt;&lt;span class=&#34;box&#34;&gt; &lt;i class=&#34;fa-solid fa-magnifying-glass&#34;&gt;&lt;/i&gt; &lt;/span&gt;&lt;/span&gt; キーと組み合わせて使うのか。
覚えておこう。
しかし &lt;code&gt;Shift+Ctrl+F1&lt;/code&gt; とかって組み合わせたらエラいことになるな。&lt;/p&gt;
&lt;h2&gt;ようやく&lt;/h2&gt;
&lt;p&gt;Chromebook のセットアップが終わったよ。
これで外出先でも遊べるようになった。&lt;/p&gt;
&lt;p&gt;でも1kg強の重量は重いよなぁ。
このスペックでせめて1kg未満にならんもんかねぇ。
それとも Chromebook を担ぐためにもう少し容量の大きいメッセンジャーバッグかリュックを買うべきだろうか。
それも本末転倒だよなー。&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/B0BKKF7JHV?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/41OOqwWbGBL._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/B0BKKF7JHV?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;【Amazon.co.jp限定】 ASUS Chromebook クロームブック Flip CX1 11.6インチ 2-in-1 タッチスクリーン 日本語キーボード 重量1.32kg トランスペアレントシルバー CX1102FKA-MK0037&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;ASUS (Release 2022-11-04)&lt;/dd&gt;
    &lt;dd&gt;Personal Computers&lt;/dd&gt;
    &lt;dd&gt;B0BKKF7JHV (ASIN), 0195553939942 (EAN), 195553939942 (UPC)&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;strong&gt;[Comment]&lt;/strong&gt; ASUS 製 Chromebook。11.6インチディスプレイ，8GBメモリ，32GBストレージ。正直，ストレージはもう少し欲しかったがメモリ容量優先で選んだ。&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;2024-03-27&#34;&gt;2024-03-27&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;!-- ASUS Chromebook --&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/B079MCPJGH?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/41PXfQ8766L._SL160_.jpg&#34; width=&#34;156&#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/B079MCPJGH?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;CloudValley 0.6mm 超薄型 ウェブカメラカバー、メタルカメラカバー カメラ目隠し MacBook air・ノートパソコン・iMac・デスクトップ・PC・MacBook Pro・iPad・iPhone 8/7/6用、プライバシーウェブカメラプロテクション 【2本セット】ブラック&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;CloudValley&lt;/dd&gt;
    &lt;dd&gt;Personal Computers&lt;/dd&gt;
    &lt;dd&gt;B079MCPJGH (ASIN), 0654070887322 (EAN), 654070887322 (UPC)&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;strong&gt;[Comment]&lt;/strong&gt; ノートPCに見られるのが嫌なので目隠しした。&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;2024-03-30&#34;&gt;2024-03-30&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- カメラ 目隠し シャッター --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B08LMYWKZD?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/317ZXhs7GQL._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/B08LMYWKZD?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;エレコム ワイヤレスマウス Bluetooth Slint M-TM10BBBU/EC 薄型 静音 4ボタン プレゼンモード機能付 Windows Mac Android iOS iPadOS FireOS対応 ネイビーブルー&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;エレコム(ELECOM) (Release 2020-11-24)&lt;/dd&gt;
    &lt;dd&gt;Personal Computers&lt;/dd&gt;
    &lt;dd&gt;B08LMYWKZD (ASIN), 4549550198189 (EAN)&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;strong&gt;[Comment]&lt;/strong&gt; 静音マウスを使いだしたら普通のマウスがカチカチ煩いと感じるようになってしまい，仕方ないので Bluetooth 無線マウスも静音マウスに替えた。単三電池一本で駆動するの助かる。&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;2024-04-13&#34;&gt;2024-04-13&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- Bluetooth 無線静音マウス --&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/B07KJWYQJW?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/41eb8MUNhHL._SL160_.jpg&#34; width=&#34;118&#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/B07KJWYQJW?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Anker PowerExpand&amp;#43; 7-in-1 USB-C PD メディア ハブ 85Wパススルー充電 Power Delivery USB-Cポート HDMI USB-Aポート&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Anker&lt;/dd&gt;
    &lt;dd&gt;&lt;/dd&gt;
    &lt;dd&gt;B07KJWYQJW (ASIN), 0848061003871 (EAN), 848061003871 (UPC)&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;strong&gt;[Comment]&lt;/strong&gt; 購入した Chromebook と周辺機器を繋ぐために購入。 USB-C は電源用（Power Delivery 対応）とデータ用の口がある。 HDMI の口もありモニタと繋ぐこともできる。 USB-DAC も繋がる。助かる。&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;2024-05-06&#34;&gt;2024-05-06&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;!-- ANKER PowerExpand USB メディアハブ --&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/B08P54PQDB?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/31yRFa0S-&amp;#43;L._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/B08P54PQDB?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;[クローム] メッセンジャーバッグ SIMPLE MESSENGER/シンプル メッセンジャー BLACK (現行モデル) 12L 防水 メンズ&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;CHROME(クローム)&lt;/dd&gt;
    &lt;dd&gt;ウェア&amp;amp;シューズ&lt;/dd&gt;
    &lt;dd&gt;B08P54PQDB (ASIN), 0841916163973 (EAN), 841916163973 (UPC)&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;strong&gt;[Comment]&lt;/strong&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;2022-10-08&#34;&gt;2022-10-08&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- メッセンジャーバッグ --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B09BMPZ3BZ?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/51Q5HoOI9xL._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/B09BMPZ3BZ?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Chromebook仕事術 最速で業務に生かす基本＋活用ワザ できるビジネスシリーズ&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;株式会社インサイトイメージ (著)&lt;/dd&gt;
    &lt;dd&gt;インプレス 2021-08-04 (Release 2021-08-04)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B09BMPZ3BZ (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;strong&gt;[Comment]&lt;/strong&gt; Chromebook の操作・設定の基本部分について一通り網羅している感じ。参考になった。&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;2024-03-28&#34;&gt;2024-03-28&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;!-- Chromebook仕事術 --&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;strong&gt;[Comment]&lt;/strong&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;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/41meaSLNFfL._SL160_.jpg&#34; width=&#34;122&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;丸善出版 2016-06-20&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;&lt;strong&gt;[Comment]&lt;/strong&gt; 著者のひとりは（あの「バイブル」とも呼ばれる）通称 “K&amp;amp;R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。と思ったら絶版状態らしい（2025-01 現在）。復刊を望む！&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2016-07-13&#34;&gt;2016-07-13&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- プログラミング言語Go --&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Ubuntu の話であるが APT v2.8 から仕様が色々と変わるらしい（&lt;a href=&#34;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0812&#34; target=&#34;_blank&#34;&gt;第812回　aptの新機能あれこれ ［Ubuntu 24.04 LTS版］&lt;/a&gt;）。特にリポジトリ情報の記述が deb822 形式に変わるようで，おそらく ChromeOS にも影響が出てくるはず。ちなみに現行（2024-05 時点）の APT のバージョンを見たら 2.6.1 だった。&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>Atom の落日</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2022/06/sunsetting-atom/" />
		<id>tag:text.Baldanders.info,2022-06-11:/remark/2022/06/sunsetting-atom/</id>
		<published>2022-06-11T00:19:04+00:00</published>
		<updated>2022-11-26T04:31:55+00:00</updated>
		<summary>ユーザ間のエコシステムが出来上がっている製品であっても廃れたらあっという間</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-jp" xml:base="https://text.baldanders.info/">&lt;p&gt;GitHub が Microsoft に買収されて以来，その内そうなるだろうとは思っていたが，ついにこの日が来てしまったか。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://github.blog/2022-06-08-sunsetting-atom/&#34;&gt;Today, we’re announcing that we are sunsetting Atom and will archive all projects under the organization on December 15, 2022.&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://github.blog/2022-06-08-sunsetting-atom/&#34;&gt;Sunsetting Atom | The GitHub Blog&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Atom には&lt;a href=&#34;https://text.baldanders.info/tags/atom/&#34; target=&#34;_blank&#34;&gt;思い入れ&lt;/a&gt;がある。
思い返せば2015年は色々と心境の変化があった年で，たとえば Windows 7 のサポート終了をにらんで Windows 依存からの脱却を模索し始めた年で &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34; title=&#34;The Go Programming Language&#34;&gt;Go&lt;/a&gt; で遊び始めた年でもある。
「Windows 依存からの脱却」の最大の障害はテキストエディタの秀丸に依存しきっていたことで，マルチプラットフォームで手に馴染むエディタを探すことが&lt;a href=&#34;https://dic.pixiv.net/a/%E9%A2%A8%E8%A6%8B%E3%81%BF%E3%81%9A%E3%81%BB&#34; target=&#34;_blank&#34; title=&#34;風見みずほ (かざみみずほ)とは【ピクシブ百科事典】&#34;&gt;最優先事項&lt;/a&gt;だったのだ。&lt;/p&gt;
&lt;p&gt;というわけで，私の中で Atom と &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34; title=&#34;The Go Programming Language&#34;&gt;Go&lt;/a&gt; はセットになっていた。
Atom の拡張機能である go-plus の出来が（当時としては）よかったのも大きい。&lt;/p&gt;
&lt;p&gt;そういえば Twitter で「VSCode に「中華を初めて統一した始皇帝」みたいな印象ができつつある」みたいな tweet を見かけたが，&lt;a href=&#34;https://twitter.com/spiegel_2007/status/1535014771522560001&#34; target=&#34;_blank&#34;&gt;エディタ界の始皇帝は vim だろう&lt;/a&gt;とか思ってみたり。
このブログでも何度か書いているが，私は vi にトラウマがあって， vi/vim を起動するとペーペーの新人の頃に工場の片隅でガチの VT 端末を前に泣きながらデバッグしていたあの頃がフラッシュバックしてしまうのだ。
なので最初から vim という選択肢はなかった。
まぁ Ubuntu 環境にいると結局は vim も使わざるを得ないのだが（笑）&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;
&lt;blockquote class=&#34;nobox&#34; cite=&#34;https://www.youtube.com/watch?v=P7LNU9HYr7M&#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/P7LNU9HYr7M&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=P7LNU9HYr7M&#34;&gt;プログラミルクボーイ「Vim」 - YouTube&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;a href=&#34;https://microsoft.github.io/language-server-protocol/&#34; target=&#34;_blank&#34; title=&#34;Official page for Language Server Protocol&#34;&gt;Language Server Protocol (LSP)&lt;/a&gt;” が登場したあたり。
LSP はホンマに画期的なアイデアで，当然 &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34; title=&#34;The Go Programming Language&#34;&gt;Go&lt;/a&gt; 用の lunguage server も登場するんだけど&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; go-plus はこれを取り込むことができなかった。&lt;/p&gt;
&lt;p&gt;加えて，私が IT 業界に再就職して支給された Windows 10 機に Atom を入れたら堪えられないほど遅いのにビックリし，観念して VS Code に乗り換えたのだった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/installing-vscode-again/&#34; target=&#34;_blank&#34;&gt;パソコンに Visual Studio Code を導入する（再チャレンジ）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Microsoft Windows を嫌って Ubuntu や Atom にしたというのに，結局は Microsoft に屈してしまったわけだ（「&lt;a href=&#34;https://dic.pixiv.net/a/%E3%81%8F%E3%81%A3%E3%80%81%E6%AE%BA%E3%81%9B%21&#34; target=&#34;_blank&#34; title=&#34;くっ、殺せ! (くっころ)とは【ピクシブ百科事典】&#34;&gt;くっころ&lt;/a&gt;」とか言わないよ）。
今やすっかり手に馴染んでしまったけどね。&lt;/p&gt;
&lt;p&gt;Atom が登場したのは2014年だそうだが，当時は SublimeText のカウンタという位置付けだったと思う。
8年というのはソフトウェア製品としては息が長いほうだと思うけど，テキストエディタは下手すると10年20年と使うものなので簡単に消えられては困るわけですよ。
それでも時代の流れには逆らえない。
ユーザ間のエコシステムが出来上がっている製品であっても廃れたらあっという間ということか。
まさに「落日」だな。&lt;/p&gt;
&lt;p&gt;せめて VS Code のエコシステムが永く続くことを祈ろう。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.makeuseof.com/atom-text-editor-why-github-is-killing/&#34; target=&#34;_blank&#34;&gt;Why GitHub Is Killing Atom Text Editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zed.dev/&#34; target=&#34;_blank&#34;&gt;Introducing Zed – A collaborative code editor written in Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forest.watch.impress.co.jp/docs/news/1457313.html&#34; target=&#34;_blank&#34;&gt;GitHub製コードエディター「Atom」の最終版が公開 ～8年間の開発に終止符 - 窓の杜&lt;/a&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;LSP が発表された頃 &lt;a href=&#34;https://go.dev/&#34; target=&#34;_blank&#34; title=&#34;The Go Programming Language&#34;&gt;Go&lt;/a&gt; 用の lunguage server としていくつかの実装があったが，現在はほぼ &lt;a href=&#34;https://github.com/golang/tools/tree/master/gopls&#34; target=&#34;_blank&#34;&gt;gopls&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>TechCrunch Japan 終了後の後始末</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2022/05/garbage-collection/" />
		<id>tag:text.Baldanders.info,2022-05-04:/remark/2022/05/garbage-collection/</id>
		<published>2022-05-04T07:03:59+00:00</published>
		<updated>2022-05-04T07:04:24+00:00</updated>
		<summary>翻訳記事 URL を可能な限り原文記事 URL に書き換えてみる。</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月に &lt;a href=&#34;https://text.baldanders.info/remark/2022/02/the-nation-of-amnesia/&#34; target=&#34;_blank&#34; title=&#34;記憶喪失の国&#34;&gt;TechCrunch Japan が終了してバックナンバーも残さず消滅する話を書いた&lt;/a&gt;。
んで，実際に GW 中にサイトが消滅したわけだが，以前の URL を叩いてみたところ 404 ではなく&lt;a href=&#34;https://techcrunch.com/&#34; target=&#34;_blank&#34; title=&#34;TechCrunch – Startup and Technology News&#34;&gt;本家 TechCrunch&lt;/a&gt; にリダイレクトされるようだ。&lt;/p&gt;
&lt;p&gt;いや，そこまでしてくれるなら，せめて翻訳記事は&lt;a href=&#34;https://techcrunch.com/&#34; target=&#34;_blank&#34; title=&#34;TechCrunch – Startup and Technology News&#34;&gt;本家&lt;/a&gt;の原文記事にリダイレクトしてくれよ &lt;code&gt;orz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;まぁ，愚痴ってもしょうがない。
こちらで可能な限り URL の書き換えを試みることにしよう。&lt;/p&gt;
&lt;p&gt;まずこのブログ・サイトの&lt;a href=&#34;https://github.com/spiegel-im-spiegel/github-pages-env&#34; target=&#34;_blank&#34; title=&#34;spiegel-im-spiegel/github-pages-env: Document Environment for spiegel-im-spiegel.github.io&#34;&gt;作業リポジトリ&lt;/a&gt;上で TechCrunch Japan の URL がどのくらいあるか軽く &lt;code&gt;grep&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;/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;$ grep -c &amp;#34;jp\.techcrunch\.com&amp;#34; &amp;#34;content/**/*.md&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1121
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;おぅふ。
アホほどあるがな &lt;code&gt;orz&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;TechCrunch Japan 記事の URL を機械的に変換できるか&lt;/h2&gt;
&lt;p&gt;たとえば TechCrunch Japan 記事の URL を&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;https://jp.techcrunch.com/2020/08/14/2020-08-13-instagram-delete-photos-messages-servers/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とする。
この記事に対する原文記事の URL は&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://techcrunch.com/2020/08/13/instagram-delete-photos-messages-servers/&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;https://techcrunch.com/2020/08/13/instagram-delete-photos-messages-servers/&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;である。
ドメインが &lt;code&gt;jp.techcrunch.com&lt;/code&gt; → &lt;a href=&#34;https://techcrunch.com/&#34; target=&#34;_blank&#34; title=&#34;TechCrunch – Startup and Technology News&#34;&gt;&lt;code&gt;techcrunch.com&lt;/code&gt;&lt;/a&gt; なのは当然として&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;翻訳記事と原文記事では URL パスの日付部分が違う&lt;/li&gt;
&lt;li&gt;原文記事の日付は翻訳記事の slug に含まれている&lt;/li&gt;
&lt;li&gt;日付部分を除く slug の文字列は翻訳記事と原文記事で同じ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これくらいなら正規表現を使った置換処理で何とかなりそうだ。
最近のテキスト・エディタは置換処理で正規表現が使えるものが多いが，私が愛用している &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; でも正規表現を使った一括置換が可能である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/kgsi/items/a88662c6e43fa5311288&#34; target=&#34;_blank&#34;&gt;Visual Studio Codeを用いた簡単な正規表現検索 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;ruby&gt;&lt;rb&gt;例外&lt;/rb&gt;&lt;rp&gt; (&lt;/rp&gt;&lt;rt&gt;AMP&lt;/rt&gt;&lt;rp&gt;) &lt;/rp&gt;&lt;/ruby&gt;を潰す&lt;/h2&gt;
&lt;p&gt;私の作業環境で2箇所ほど例外というか間違いがあって&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2017/12/12/2017-12-11-some-hp-laptops-are-hiding-a-deactivated-keylogger/amp/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2020/01/03/2020-01-02-ex-google-policy-chief-dumps-on-the-tech-giant-for-dodging-human-rights/amp/?__twitter_impression=true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などと，うっかり AMP 用の URL を載せちゃったみたいで，しかも片方は変なパラメータがくっついている。
これらも機械的に置換できなくはないのだが，2箇所だけだし，手作業で原文記事の URL に書き換えた。&lt;/p&gt;
&lt;p&gt;AMP ページはマジで滅びて欲しい。
なんでこんな下らないことで Google に気を使わにゃならんの。
メディアが気を遣うべき相手は私ら閲覧者だろうが。
本末転倒だよ。&lt;/p&gt;
&lt;p&gt;あと，古い URL でスキーマが HTTP のままになってるのが結構あったので，これは &lt;code&gt;http://jp.techcrunch.com&lt;/code&gt; → &lt;code&gt;https://jp.techcrunch.com&lt;/code&gt; に一括置換した。&lt;/p&gt;
&lt;h2&gt;Slug パターン&lt;/h2&gt;
&lt;p&gt;前節の例外を排除したことで TechCrunch Japan 記事のURL&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;https://jp.techcrunch.com/yyyy/mm/dd/slug/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;のうち slug 部分にのみ注目すればよくなった。
この Slug 部分も複数のパターンが見受けられるので整理しておく&lt;/p&gt;
&lt;h3&gt;パターン1: 日付情報 yyyy-mm-dd を含む Slug&lt;/h3&gt;
&lt;p&gt;最初に挙げた例の通り &lt;code&gt;yyyy-mm-dd-originalslug&lt;/code&gt; に要素分解できるパターン。
このパターンには別のバリエーションがあって&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2020/07/15/x2020-07-14-harvard-mit-sue-ice-student-visas-rule/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2020/11/21/https-techcrunch-com-2020-11-20-google-facebook-and-twitter-threaten-to-leave-pakistan-over-censorship-law/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;のように日付情報の前に余分な文字列がくっついている。
2番目のとか原文記事の URL そのままぢゃん。
「なにすんねん」ってツッコんじゃったよ（笑）&lt;/p&gt;
&lt;h3&gt;パターン2: 日付情報 yyyymmdd を含む Slug&lt;/h3&gt;
&lt;p&gt;以下のような URL パターン：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2017/09/13/20170912new-bluetooth-vulnerability-can-hack-a-phone-in-ten-seconds/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2016/07/08/automotive-fortune-tesla20160706tesla-says-drivers-using-autopilot-remain-safer-than-regular-drivers/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;パターン1のハイフンが抜けた状態。&lt;/p&gt;
&lt;h3&gt;パターン3: Slug に日付情報がない&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2021/06/10/netflix-cowboy-bebop-streaming-this-fall/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;jp.techcrunch.com&lt;/code&gt; → &lt;a href=&#34;https://techcrunch.com/&#34; target=&#34;_blank&#34; title=&#34;TechCrunch – Startup and Technology News&#34;&gt;&lt;code&gt;techcrunch.com&lt;/code&gt;&lt;/a&gt; と置換するだけで行けるかなぁと思ったが駄目だった（&lt;a href=&#34;https://techcrunch.com/&#34; target=&#34;_blank&#34; title=&#34;TechCrunch – Startup and Technology News&#34;&gt;本家サイト&lt;/a&gt;が404になる）。
原文記事の日付情報が得られないので置換不可。&lt;/p&gt;
&lt;h3&gt;パターン4: Slug が&lt;a href=&#34;https://text.baldanders.info/golang/uri-encoding/&#34; target=&#34;_blank&#34; title=&#34;URI エンコーディングについて&#34;&gt;パーセント・エンコーディング&lt;/a&gt;されている&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://jp.techcrunch.com/2017/03/13/%e3%80%8c%e6%b3%95%e4%bb%a4%e4%b8%8a%e9%81%95%e5%8f%8d%e3%81%ae%e5%8f%af%e8%83%bd%e6%80%a7%e3%80%81%e5%80%ab%e7%90%86%e7%9a%84%e3%81%ab%e3%82%82%e5%95%8f%e9%a1%8c%e3%80%8ddena%e3%81%8cwelq%e5%95%8f/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;多分，というか間違いなく日本版オリジナル記事だよね。
これは置換対象外とした。&lt;/p&gt;
&lt;h2&gt;置換用正規表現&lt;/h2&gt;
&lt;p&gt;というわけで，今回はパターン1と2のみが対象となる。
置換処理は &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; を使っている。&lt;/p&gt;
&lt;p&gt;パターン1の検索・置換正規表現は以下の通り。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;正規表現&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;検索&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://jp\.techcrunch\.com/\d{4}/\d{2}/\d{2}/.*(\d{4})-(\d{2})-(\d{2})-(.+)/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;置換&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://techcrunch.com/$1/$2/$3/$4/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;対象ファイル&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;*.md&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;パターン2の検索・置換正規表現は以下の通り。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;正規表現&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;検索&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://jp\.techcrunch\.com/\d{4}/\d{2}/\d{2}/.*(\d{4})(\d{2})(\d{2})(.+)/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;置換&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://techcrunch.com/$1/$2/$3/$4/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;対象ファイル&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;*.md&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;もう少し頑張ればひとつにまとめられたかもしれないが，副作用が出るのが嫌だったので分けた。
これで未変換の TechCrunch Japan 記事の URL は118個まで減ったが，今のところ，これ以上は無理なので，放置ということで。&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://murashun.jp/article/programming/regular-expression.html&#34; target=&#34;_blank&#34;&gt;基本的な正規表現一覧 | murashun.jp&lt;/a&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://github.com/mattn/jvgrep&#34; target=&#34;_blank&#34; title=&#34;mattn/jvgrep: grep for japanese vimmer&#34;&gt;mattn/jvgrep&lt;/a&gt; を &lt;code&gt;grep&lt;/code&gt; に alias して使っている。ファイル指定を &lt;code&gt;&amp;quot;content/**/*.md&amp;quot;&lt;/code&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>やっと Codespaces が使える</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2022/04/codespaces/" />
		<id>tag:text.Baldanders.info,2022-04-23:/remark/2022/04/codespaces/</id>
		<published>2022-04-23T13:45:12+00:00</published>
		<updated>2026-05-17T05:32:22+00:00</updated>
		<summary>Go が動くぞ！</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;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/installing-vscode-again/&#34; target=&#34;_blank&#34;&gt;パソコンに Visual Studio Code を導入する（再チャレンジ）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/golang-with-vscode/&#34; target=&#34;_blank&#34;&gt;Go と VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/02/markdown-with-vscode/&#34; target=&#34;_blank&#34;&gt;Markdown と VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2021/08/java-with-vscode/&#34; target=&#34;_blank&#34;&gt;Java と VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2022/04/codespaces/&#34; target=&#34;_blank&#34;&gt;やっと Codespaces が使える&lt;/a&gt; ← イマココ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;さて，&lt;a href=&#34;https://text.baldanders.info/remark/2022/03/github-team/&#34; target=&#34;_blank&#34;&gt;独り GitHub Team&lt;/a&gt; も契約したし，よーやく &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; が使えるようになったよ。&lt;/p&gt;
&lt;p&gt;今のところ &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; は GitHub Team または GitHub Enterprise Cloud のメンバで利用できる。
2022-04-23 時点の料金（米ドル建て）は以下の通り。&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://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces&#34;&gt;
&lt;a href=&#34;https://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces&#34;&gt;&lt;img src=&#34;./priceing.png&#34; srcset=&#34;./priceing.png 626w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;About billing for Codespaces - GitHub Docs&#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://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces&#34;&gt;About billing for Codespaces - GitHub Docs&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;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; クラウドに立つ&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; の起動にはまず，ブラウザでリポジトリ・ページを開き，&lt;code&gt;[Code]&lt;/code&gt; ボタンを押下する。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./code.png&#34;&gt;&lt;img src=&#34;./code.png&#34; srcset=&#34;./code.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Create codespace on master&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./code.png&#34;&gt;Create codespace on master&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;[Create codespace on master]&lt;/code&gt; ボタン押下で &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; のインスタンス生成が始まる。
上手く起動すればこんな感じに表示される。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./codespae-on-the-browser.png&#34;&gt;&lt;img src=&#34;./codespae-on-the-browser.png&#34; srcset=&#34;./codespae-on-the-browser.png 1922w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Create codespace on master&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./codespae-on-the-browser.png&#34;&gt;Create codespace on master&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&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;./extensions.png&#34;&gt;&lt;img src=&#34;./extensions.png&#34; srcset=&#34;./extensions.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Extensions&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./extensions.png&#34;&gt;Extensions&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;設定はユーザごとに保持して同期させることもできるようだ。&lt;/p&gt;
&lt;h2&gt;Go が動くぞ！&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; 上のターミナルで試しに Go コンパイラを動かしてみたら普通に動いた。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./go-on-the-terminal.png&#34;&gt;&lt;img src=&#34;./go-on-the-terminal.png&#34; srcset=&#34;./go-on-the-terminal.png 961w&#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;./go-on-the-terminal.png&#34;&gt;こいつ・・・動くぞ！&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/remote/codespaces&#34; target=&#34;_blank&#34; title=&#34;Developing with GitHub Codespaces&#34;&gt;GitHub Codespaces&lt;/a&gt; 拡張機能&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; の拡張機能に &lt;a href=&#34;https://code.visualstudio.com/docs/remote/codespaces&#34; target=&#34;_blank&#34; title=&#34;Developing with GitHub Codespaces&#34;&gt;GitHub Codespaces&lt;/a&gt; というのがあって，これを使うとローカルの &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; 上で &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; のリソースにアクセスできる。
コマンドパレットから &lt;code&gt;Codespaces: Connect to Codespace&lt;/code&gt; を選択すると生成済みのインスタンスの一覧が表示されるので，選択して接続すると &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; に接続した &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; が起動する。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./codespace-on-the-vscode.png&#34;&gt;&lt;img src=&#34;./codespace-on-the-vscode.png&#34; srcset=&#34;./codespace-on-the-vscode.png 1595w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Codespace on the VS Code&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./codespace-on-the-vscode.png&#34;&gt;Codespace on the VS Code&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;パソコンで作業する場合はこっちのほうがいいかもねぇ。&lt;/p&gt;
&lt;h2&gt;Andorid タブレットでも動いた&lt;/h2&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./codespace-on-the-android-browser.jpg&#34;&gt;&lt;img src=&#34;./codespace-on-the-android-browser.jpg&#34; srcset=&#34;./codespace-on-the-android-browser.jpg 1920w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Codespace on the Android Browser&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./codespace-on-the-android-browser.jpg&#34;&gt;Codespace on the Android Browser&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;おわ。
ターミナルの状態も共有できるのか。
凄いな。&lt;/p&gt;
&lt;p&gt;ちなみに Android の Firefox では &lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; を起動できなかった。
冷遇されてるなぁ（笑）&lt;/p&gt;
&lt;h2&gt;後始末&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; を終了する場合はコマンドパレットから &lt;code&gt;Codespaces: Stop Current Codespace&lt;/code&gt; を選択して明示的に停止させること。
まぁ，最悪でも30分非活性状態なら自動的に停止するらしいけど。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/codespaces&#34; target=&#34;_blank&#34; title=&#34;GitHub Codespaces Documentation - GitHub Docs&#34;&gt;Codespaces&lt;/a&gt; のインスタンスはリポジトリごとに生成されるのでご注意を。
また，使わなくなったインスタンスはマメに削除することをお勧めする。
インスタンスの削除は “Your codespaces” でできる。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./your-codespaces.png&#34;&gt;&lt;img src=&#34;./your-codespaces.png&#34; srcset=&#34;./your-codespaces.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Your codespaces&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./your-codespaces.png&#34;&gt;Your codespaces&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.blog/jp/2021-08-30-githubs-engineering-team-moved-codespaces/&#34; target=&#34;_blank&#34;&gt;GitHub開発チームでのCodespacesの利用 - GitHubブログ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/features/codespaces&#34; target=&#34;_blank&#34;&gt;GitHub Codespaces · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.github.com/en/codespaces&#34; target=&#34;_blank&#34;&gt;GitHub Codespaces Documentation - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.github.com/ja/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces&#34; target=&#34;_blank&#34;&gt;Codespaces の支払いについて - GitHub Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/Alt225/items/5d904fafc779e6505768&#34; target=&#34;_blank&#34;&gt;Github CodeSpace 触ってみた - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.wantedly.com/companies/wantedly/post_articles/355862&#34; target=&#34;_blank&#34;&gt;GitHub Codespaces をつかって 3分で始めるサービス開発 | Wantedly, Inc.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.wantedly.dev/fields/dev-tools/codespaces&#34; target=&#34;_blank&#34;&gt;GitHub Codespaces で開発する - Wantedly Engineering Handbook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>Azure App Service に VS Code でデプロイできなかった話</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2022/04/cannot-deploy-with-vscode/" />
		<id>tag:text.Baldanders.info,2022-04-06:/remark/2022/04/cannot-deploy-with-vscode/</id>
		<published>2022-04-06T11:37:03+00:00</published>
		<updated>2022-04-14T11:20:28+00:00</updated>
		<summary>当面は VS Code 1.65.x にダウングレードするしかないらしい。</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://azure.microsoft.com/en-us/services/app-service/&#34; target=&#34;_blank&#34; title=&#34;App Service — Build &amp;amp; Host Web Apps | Microsoft Azure&#34;&gt;Azure App Service&lt;/a&gt; に手動でデプロイする際は &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; の &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureappservice&#34; target=&#34;_blank&#34; title=&#34;Azure App Service - Visual Studio Marketplace&#34;&gt;Azure App Service 拡張機能&lt;/a&gt;を使ってるんだけど，ここのところ頻繁にデプロイに失敗してたのよ。
最初は &lt;a href=&#34;https://azure.microsoft.com/en-us/services/app-service/&#34; target=&#34;_blank&#34; title=&#34;App Service — Build &amp;amp; Host Web Apps | Microsoft Azure&#34;&gt;App Service&lt;/a&gt; のほうがやらかしてるんだと思ってたんだけど（だって上手く行くときもあるし），ググったら違ってたようだ。&lt;/p&gt;
&lt;figure lang=&#34;en&#34;&gt;
&lt;blockquote cite=&#34;https://github.com/microsoft/vscode-azureappservice/issues/2194#issuecomment-1087857459&#34;&gt;
VS Code 1.66 upgraded to Node 16 which has been causing deployment issues for both Functions and App Service. Unfortunately, the only current known workaround is to downgrade VS Code to 1.65.x. We&#39;re currently investigating a proper fix.
&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;via &lt;q&gt;&lt;a href=&#34;https://github.com/microsoft/vscode-azureappservice/issues/2194#issuecomment-1087857459&#34;&gt;ECONNRESET trying azure deploy webapp VS Code · Issue #2194 · microsoft/vscode-azureappservice&lt;/a&gt;&lt;/q&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;まじすか &lt;code&gt;orz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;ダウングレードってどうやんだ？ と思ったが単純に 1.65.x のインストール・パッケージを拾ってきて上書きインストールすればいいようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/updates/v1_65&#34; target=&#34;_blank&#34;&gt;Visual Studio Code February 2022&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 環境では自動更新を無効にするのをお忘れなく。
やれやれ&lt;/p&gt;
&lt;div class=&#34;box&#34;&gt;&lt;p&gt;&lt;strong&gt;【2022-04-14 追記】&lt;/strong&gt;
v1.66.2 で直った。
よかったよかった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode/releases/tag/1.66.2&#34; target=&#34;_blank&#34;&gt;Release March 2022 Recovery 2 · microsoft/vscode · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/microsoft/vscode-azurefunctions/issues/2844&#34; target=&#34;_blank&#34;&gt;Investigate ECONNRESET issue during &amp;ldquo;zipdeploy&amp;rdquo; call · Issue #2844 · microsoft/vscode-azurefunctions · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
	</entry><entry>
		<title>改めて TeX Live を Ubuntu に（APT を使わずに）導入する</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2021/09/install-texlive-in-ubuntu-again/" />
		<id>tag:text.Baldanders.info,2021-09-09:/remark/2021/09/install-texlive-in-ubuntu-again/</id>
		<published>2021-09-09T13:20:36+00:00</published>
		<updated>2021-09-10T09:57:54+00:00</updated>
		<summary>LuaLaTeX でソースコードを含む文書を PDF 出力するところまで。</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;6月にパソコンを買い換えてから新しいマシンには $\mathrm{\TeX}$ 環境を入れてなかったのだが，先日『&lt;a href=&#34;https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; title=&#34;[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon&#34;&gt;LaTeX2ε美文書作成入門&lt;/a&gt;』第8版の&lt;a href=&#34;https://text.baldanders.info/remark/2021/09/latex-primer/&#34; target=&#34;_blank&#34; title=&#34;改訂第8版『LaTeX2ε美文書作成入門』を眺める&#34;&gt;読書感想文を書いた&lt;/a&gt;ばかりなので，調子に乗って &lt;a href=&#34;http://www.tug.org/texlive/&#34; target=&#34;_blank&#34; title=&#34;TeX Live - TeX Users Group&#34;&gt;TeX Live&lt;/a&gt; 2021 を入れてしまおうと思い立った。&lt;/p&gt;
&lt;p&gt;『&lt;a href=&#34;https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; title=&#34;[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon&#34;&gt;LaTeX2ε美文書作成入門&lt;/a&gt;』の付録Aには&lt;/p&gt;
&lt;figure&gt;
&lt;blockquote cite=&#34;https://www.amazon.co.jp/dp/B08MZ98Z1Q?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;q&gt;あらかじめ &lt;code&gt;/usr/local/texlive&lt;/code&gt; というディレクトリを作成し，インストールする人の権限で書き込めるようにしておくのが簡単です&lt;/q&gt;&lt;/blockquote&gt;
&lt;figcaption&gt;&lt;div&gt;&lt;q&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/B08MZ98Z1Q?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;［改訂第8版］LaTeX2ε美文書作成入門&lt;/a&gt;&lt;/q&gt;より&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;とか書かれてあって「やっぱそーなのか」と納得してしまった。
激しくダサい気がするがしょうがないか。
まぁ，今回は個人パソコンなので素直に&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cd /usr/local/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo mkdir texlive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo chown -R username:username texlive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;としてしおう。&lt;/p&gt;
&lt;p&gt;サーバ機などでは，インストール完了後にオーナーを &lt;code&gt;root&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 /usr/local
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo chown -R root:root texlive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cd texlive/2021/bin/x86_64-linux/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo ./tlmgr path add
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;と &lt;code&gt;/usr/local/bin/&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 tlmgr path remove
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cd /usr/local/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo chown -R username:username texlive
&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;h2&gt;OpenPGP 公開鍵を取ってくる&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.tug.org/texlive/&#34; target=&#34;_blank&#34; title=&#34;TeX Live - TeX Users Group&#34;&gt;TeX Live&lt;/a&gt; のサイトでは検証用に OpenPGP 公開鍵を公開している。
これを取ってきて自分の鍵束にインポートしてしまおう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg --fetch-key http://www.tug.org/texlive/files/texlive.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 鍵を&amp;#39;http://www.tug.org/texlive/files/texlive.asc&amp;#39;から要求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 鍵0D5E5D9106BAB6BC: 公開鍵&amp;#34;TeX Live Distribution &amp;lt;tex-live@tug.org&amp;gt;&amp;#34;をインポートしました
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 処理数の合計: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg:               インポート: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg --list-keys 0D5E5D9106BAB6BC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pub   rsa2048 2016-03-19 [SC]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      C78B82D8C79512F79CC0D7C80D5E5D9106BAB6BC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uid           [  不明  ] TeX Live Distribution &amp;lt;tex-live@tug.org&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sub   rsa2048 2016-03-19 [E]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sub   rsa2048 2016-03-19 [S] [有効期限: 2022-07-27]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これはアレだな。
&lt;a href=&#34;http://www.tug.org/texlive/&#34; target=&#34;_blank&#34; title=&#34;TeX Live - TeX Users Group&#34;&gt;TeX Live&lt;/a&gt; がアップグレードされるたびに更新しろってことだな。&lt;/p&gt;
&lt;h2&gt;インストーラのダウンロードと検証&lt;/h2&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;$ curl -L &amp;#34;https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz&amp;#34; -O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl -L &amp;#34;https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz.sha512&amp;#34; -O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl -L &amp;#34;https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc&amp;#34; -O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ gpg -d install-tl-unx.tar.gz.sha512.asc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 署名されたデータが&amp;#39;install-tl-unx.tar.gz.sha512&amp;#39;にあると想定します
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: 2021年09月08日 08時53分40秒 JSTに施された署名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg:                RSA鍵4CE1877E19438C70を使用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: &amp;#34;TeX Live Distribution &amp;lt;tex-live@tug.org&amp;gt;&amp;#34;からの正しい署名 [不明の]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg: *警告*: この鍵は信用できる署名で証明されていません!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpg:          この署名が所有者のものかどうかの検証手段がありません。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主鍵フィンガープリント: C78B 82D8 C795 12F7 9CC0  D7C8 0D5E 5D91 06BA B6BC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     副鍵フィンガープリント: D8F2 F860 57A8 57E4 2A88  106A 4CE1 877E 1943 8C70
&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;$ sha512sum -c install-tl-unx.tar.gz.sha512
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;install-tl-unx.tar.gz: OK
&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;code&gt;orz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;ちなみに拙作の &lt;a href=&#34;https://github.com/spiegel-im-spiegel/gnkf&#34; target=&#34;_blank&#34; title=&#34;spiegel-im-spiegel/gnkf: Network Kanji Filter by Golang&#34;&gt;gnkf&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;$ gnkf hash -a SHA-512 -c install-tl-unx.tar.gz.sha512
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;install-tl-unx.tar.gz: OK
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;てな感じで検証できる。
&lt;code&gt;sha512sum&lt;/code&gt; コマンドがない環境でどうぞ。
宣伝でした（笑）&lt;/p&gt;
&lt;h2&gt;よーやくインストール開始&lt;/h2&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;$ tar xvf install-tl-unx.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cd install-tl-20210908/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./install-tl
&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;======================&amp;gt; TeX Live installation procedure &amp;lt;=====================
&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;======&amp;gt;   Letters/digits in &amp;lt;angle brackets&amp;gt; indicate   &amp;lt;=======
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;======&amp;gt;   menu items for actions or customizations      &amp;lt;=======
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= help&amp;gt;   https://tug.org/texlive/doc/install-tl.html   &amp;lt;=======
&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; Detected platform: GNU/Linux on x86_64
&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; &amp;lt;B&amp;gt; set binary platforms: 1 out of 16
&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; &amp;lt;S&amp;gt; set installation scheme: scheme-full
&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; &amp;lt;C&amp;gt; set installation collections:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     40 collections out of 41, disk space required: 7135 MB
&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; &amp;lt;D&amp;gt; set directories:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXDIR (the main TeX directory):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     /usr/local/texlive/2021
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFLOCAL (directory for site-wide local files):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     /usr/local/texlive/texmf-local
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFSYSVAR (directory for variable and automatically generated data):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     /usr/local/texlive/2021/texmf-var
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFSYSCONFIG (directory for local config):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     /usr/local/texlive/2021/texmf-config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFVAR (personal directory for variable and automatically generated data):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ~/.texlive2021/texmf-var
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFCONFIG (personal directory for local config):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ~/.texlive2021/texmf-config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   TEXMFHOME (directory for user-specific files):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     ~/texmf
&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; &amp;lt;O&amp;gt; options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [ ] use letter size instead of A4 by default
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [X] allow execution of restricted list of programs via \write18
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [X] create all format files
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [X] install macro/font doc tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [X] install macro/font source tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   [ ] create symlinks to standard directories
&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; &amp;lt;V&amp;gt; set up for portable installation
&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;Actions:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &amp;lt;I&amp;gt; start installation to hard disk
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &amp;lt;P&amp;gt; save installation profile to &amp;#39;texlive.profile&amp;#39; and exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &amp;lt;Q&amp;gt; quit
&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;Enter command: 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;必要に応じて設定を変えて（既定のままでも無問題）問題なければ &lt;code&gt;I&lt;/code&gt; を入力してインストールを開始する。
私の環境では1時間近くかかった。
お茶菓子を用意しておくか（笑）&lt;/p&gt;
&lt;p&gt;環境変数については &lt;code&gt;~/.profile&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-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;c1&#34;&gt;# Expand $PATH to include the directory where TeX Live applications go.&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;texlive_path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/usr/local/texlive/2021&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;texlive_bin_path&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;texlive_path&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/bin/x86_64-linux&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; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$texlive_path&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; -a -n &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;PATH&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;nv&#34;&gt;texlive_bin_path&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; -a -n &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;PATH&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;nv&#34;&gt;texlive_bin_path&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&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 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;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&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;nv&#34;&gt;$PATH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$texlive_bin_path&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;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;nb&#34;&gt;unset&lt;/span&gt; texlive_path texlive_bin_path
&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;$ lualatex -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is LuaHBTeX, Version 1.13.2 (TeX Live 2021)
&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;Execute  &amp;#39;luahbtex --credits&amp;#39;  for credits and version details.
&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;There is NO warranty. Redistribution of this software is covered by
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the terms of the GNU General Public License, version 2 or (at your option)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;any later version. For more information about these matters, see the file
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;named COPYING and the LuaTeX source.
&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;LuaTeX is Copyright 2021 Taco Hoekwater and the LuaTeX Team.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;マニュアルに関しては &lt;code&gt;texdoc&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;$ texdoc luatex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;などとすれば対応する PDF ファイルが開く。
便利！&lt;/p&gt;
&lt;h2&gt;自動実行可能な外部コマンドの指定&lt;/h2&gt;
&lt;p&gt;とりあえず &lt;code&gt;shell_escape_commands&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;$ kpsewhich -var-value=shell_escape_commands
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bibtex,bibtex8,extractbb,gregorio,kpsewhich,makeindex,repstopdf,texosquery-jre8,
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;となっているので &lt;code&gt;/usr/ocal/texlive/texmf-local/web2c/texmf.cnf&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;shell_escape_commands = \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bibtex,bibtex8,pbibtex,jbibtex,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;extractbb,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gregorio,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kpsewhich,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;makeindex,mendex,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repstopdf,epspdf,\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;texosquery-jre8,\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで &lt;code&gt;shell_escape_commands&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;$ kpsewhich -var-value=shell_escape_commands
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bibtex,bibtex8,pbibtex,jbibtex,extractbb,gregorio,kpsewhich,makeindex,mendex,repstopdf,epspdf,texosquery-jre8,
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;となる。&lt;/p&gt;
&lt;p&gt;設定を変更したら &lt;code&gt;mktexlsr&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;$ mktexlsr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mktexlsr: Updating /usr/local/texlive/2021/texmf-config/ls-R... 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mktexlsr: Updating /usr/local/texlive/2021/texmf-dist/ls-R... 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mktexlsr: Updating /usr/local/texlive/2021/texmf-var/ls-R... 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mktexlsr: Updating /usr/local/texlive/texmf-local/ls-R... 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mktexlsr: Done.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;LuaLaTeX でなんか出力してみる&lt;/h2&gt;
&lt;p&gt;そうだ。
プログラムコードを出してみよう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2017/10/writing-code-with-lualatex/&#34; target=&#34;_blank&#34;&gt;LuaLaTeX でコードを書いてみる&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その前に &lt;a href=&#34;https://ctan.org/tex-archive/macros/latex/contrib/listings&#34; target=&#34;_blank&#34; title=&#34;CTAN: /tex-archive/macros/latex/contrib/listings&#34;&gt;&lt;code&gt;listings&lt;/code&gt;&lt;/a&gt; パッケージで Go コードの syntax highlight が効くよう &lt;a href=&#34;https://github.com/julienc91/listings-golang&#34; target=&#34;_blank&#34; title=&#34;julienc91/listings-golang: Golang support for the listings package in LaTeX&#34;&gt;&lt;code&gt;listings-golang&lt;/code&gt;&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;$ cd /usr/local/texlive/texmf-local/tex/latex/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git clone git@github.com:julienc91/listings-golang.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mktexlsr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そうそう。
$\mathrm{Lua\LaTeX}$ を使うならフォントキャッシュも念の為にアップデートしておくか。&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;$ luaotfload-tool -fu
&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-latex&#34; data-lang=&#34;latex&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;\documentclass&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;jlreq&lt;span class=&#34;nb&#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;\usepackage&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;[jis2004,deluxe]&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;luatexja-preset&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;% Japanese fonts
&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;\setmonofont&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;[AutoFakeSlant,BoldItalicFeatures={FakeSlant},Scale=MatchLowercase]&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;Inconsolatazi4&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;% use Inconsolata
&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;\usepackage&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;graphicx,xcolor&lt;span class=&#34;nb&#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;c&#34;&gt;% \usepackage{listings}
&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;\usepackage&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;listings-golang&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;% import this package after listings
&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;\lstset&lt;/span&gt;&lt;span class=&#34;nb&#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;    frame=single,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    basicstyle=&lt;span class=&#34;k&#34;&gt;\small\ttfamily&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    tabsize=4,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    commentstyle=&lt;span class=&#34;k&#34;&gt;\color&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;darkgray&lt;span class=&#34;nb&#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;    keywordstyle=&lt;span class=&#34;k&#34;&gt;\color&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;brown&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;\bfseries&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    stringstyle=&lt;span class=&#34;k&#34;&gt;\color&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;blue&lt;span class=&#34;nb&#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;    showstringspaces=false
&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;}&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;\begin&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;document&lt;span class=&#34;nb&#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&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;\section&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;Go 言語による Hello World&lt;span class=&#34;nb&#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&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;\begin&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;lstlisting&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt;[language=Golang]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;package main
&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;import &amp;#34;fmt&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;func main() &lt;span class=&#34;nb&#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;    for i := 0; i &amp;lt; 10; i++ &lt;span class=&#34;nb&#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;        fmt.Println(&amp;#34;Hello, world&amp;#34;) //Hello, 世界
&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;}&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;}&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;\end&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;lstlisting&lt;span class=&#34;nb&#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&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;\section&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;シェルスクリプト&lt;span class=&#34;nb&#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&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;\begin&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;lstlisting&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt;[language=sh]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;for i in `seq 100`; do
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  j=&amp;#34;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;i&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;  if &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt; `expr &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;i &lt;span class=&#34;c&#34;&gt;% 3` == 0 ]; then echo -n &amp;#39;Fizz&amp;#39;; j=&amp;#39;&amp;#39;; fi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  if [ `expr &lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;i &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;% 5` == 0 ]; then echo -n &amp;#39;Buzz&amp;#39;; j=&amp;#39;&amp;#39;; 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;nb&#34;&gt;  echo &amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;j&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;done
&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;\end&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;lstlisting&lt;span class=&#34;nb&#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&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;\end&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;document&lt;span class=&#34;nb&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;へっへっへ。
&lt;code&gt;jlreq&lt;/code&gt; ドキュメントクラスを使ってみたぜ。&lt;/p&gt;
&lt;p&gt;これを処理した結果は以下の通り。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./sample.pdf&#34;&gt;&lt;img src=&#34;./sample.png&#34; srcset=&#34;./sample.png 1252w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;sample.pdf&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./sample.pdf&#34;&gt;sample.pdf&lt;/a&gt;&lt;/div&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;うんうん。
こんなもんだろう。&lt;/p&gt;
&lt;h2&gt;&lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; に &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop&#34; target=&#34;_blank&#34; title=&#34;LaTeX Workshop - Visual Studio Marketplace&#34;&gt;LaTeX Workshop&lt;/a&gt; を導入する&lt;/h2&gt;
&lt;p&gt;『&lt;a href=&#34;https://www.amazon.co.jp/dp/4297117126?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; title=&#34;[改訂第8版]LaTeX2ε美文書作成入門 | 奥村晴彦, 黒木裕介 |本 | 通販 | Amazon&#34;&gt;LaTeX2ε美文書作成入門&lt;/a&gt;』でも紹介されていた &lt;a href=&#34;https://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; 用の &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop&#34; target=&#34;_blank&#34; title=&#34;LaTeX Workshop - Visual Studio Marketplace&#34;&gt;LaTeX Workshop&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;$ code --install-extension James-Yu.latex-workshop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;たとえば，以下の内容で &lt;code&gt;.latexmkrc&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-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ch&#34;&gt;#!/usr/bin/env perl&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;# LaTeX commands&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;$pdflatex&lt;/span&gt;            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;lualatex %O -synctex=1 %S&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$latex&lt;/span&gt;               &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;uplatex %O -synctex=1 %S&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$latex_silent_switch&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;-interaction=batchmode -c-style-errors&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&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;# bibTeX commands&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;$bibtex&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;upbibtex %O %B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$biber&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;biber %O --bblencoding=utf8 -u -U --output_safechars %B&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$makeindex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;mendex %O -o %D %S&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&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;# Device Driver&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;$dvipdf&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;dvipdfmx %O -z9 -V 7 -o %D %S&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$dvips&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;dvips %O -z -f %S | convbkmk -u &amp;gt; %D&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ps2pdf&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#39;ps2pdf14 -dPDFA -dPDFACompatibilityPolicy=1 -sProcessColorModel=DeviceCMYK %O %S %D&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&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;# Typeset mode (generate a PDF)&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;$pdf_mode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 0: do not generate a pdf , 1: using $pdflatex , 2: using $ps2pdf , 3: using $dvipdf&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;# Other configuration&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;$pvc_view_file_via_temporary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$max_repeat&lt;/span&gt;                  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;したら $\mathrm{\LaTeX}$ テキストを保存するたびに上の設定でタイプセットが自動実行されて PDF まで作ってしまうわけですよ。
めっさ便利。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://www.tug.org/texlive/acquire-netinstall.html&#34; target=&#34;_blank&#34;&gt;Installing TeX Live over the Internet - TeX Users Group&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://texwiki.texjp.org/&#34; target=&#34;_blank&#34;&gt;TeX Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2019/04/install-texlive-in-ubuntu/&#34; target=&#34;_blank&#34;&gt;TeX Live を Ubuntu に（APT を使わずに）導入する&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2019/06/upgrade-texlive-from-2018-to-2019/&#34; target=&#34;_blank&#34;&gt;TeX Live 2018 から 2019 へのアップグレード&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2020/04/upgrade-texlive-2020/&#34; target=&#34;_blank&#34;&gt;TeX Live 2020 へのアップグレード&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;参考図書&lt;/h2&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4297117126?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/41xmBlTiwlL._SL160_.jpg&#34; width=&#34;126&#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/4297117126?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;[改訂第8版]LaTeX2ε美文書作成入門&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;奥村晴彦 (著), 黒木裕介 (著)&lt;/dd&gt;
    &lt;dd&gt;技術評論社 2020-11-14&lt;/dd&gt;
    &lt;dd&gt;大型本&lt;/dd&gt;
    &lt;dd&gt;4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;&lt;strong&gt;[Comment]&lt;/strong&gt; 2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。&lt;a href=&#34;https://gihyo.jp/book/2020/978-4-297-11712-2&#34;&gt;版元&lt;/a&gt;には PDF 版もある。&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;2021-09-05&#34;&gt;2021-09-05&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;!-- LaTeX2ε美文書作成入門 --&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;&amp;quot;TeX Live Distribution &amp;lt;tex-live@tug.org&amp;gt;&amp;quot;からの正しい署名&lt;/code&gt;」が表示されていればOK。警告が出るのはインポートした公開鍵に自鍵で署名したり有効度を設定したりしてないからだが，直接手渡しされた鍵でもないのに安易に信用するのは危険であると言っておこう。もちろん何らかの手段で鍵と所有者が確定できるのであれば署名するなり有効度を設定するなりすればよい。&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>
</feed>
