<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,2025-02-08:/tags</id>
	<updated>2025-02-08T18:04:57+09:00</updated>
	<subtitle>帰ってきた「しっぽのさきっちょ」</subtitle>
	<icon>https://text.baldanders.info/images/avatar.jpg</icon>
	<logo>https://text.baldanders.info/images/avatar.jpg</logo>

	<entry>
		<title>GitHub Copilot で遊ぶ</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/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;/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;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;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;/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;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;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;ノート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;静音マウスを使いだしたら普通のマウスがカチカチ煩いと感じるようになってしまい，仕方ないので 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;購入した 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;/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;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;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;著者のひとりは（あの「バイブル」とも呼ばれる）通称 “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>2022-04-23T14:00:19+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;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><entry>
		<title>Java と VS Code</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2021/08/java-with-vscode/" />
		<id>tag:text.Baldanders.info,2021-08-18:/remark/2021/08/java-with-vscode/</id>
		<published>2021-08-18T13:20:30+00:00</published>
		<updated>2022-04-23T13:45:31+00:00</updated>
		<summary>どうせなら VS Code で環境を作るのがいいよねってことで</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;仕事で Spring Boot なコードを書くことになって，今更ながら基本から勉強し直している。
で，どうせなら &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;h2&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack&#34; target=&#34;_blank&#34; title=&#34;Extension Pack for Java - Visual Studio Marketplace&#34;&gt;Extension Pack for Java&lt;/a&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;$ code --install-extension vscjava.vscode-java-pack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これをインストールすると以下のパッケージも併せてインストールされる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=redhat.java&#34; target=&#34;_blank&#34;&gt;Language Support for Java(TM) by Red Hat - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug&#34; target=&#34;_blank&#34;&gt;Debugger for Java - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test&#34; target=&#34;_blank&#34;&gt;Test Runner for Java - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven&#34; target=&#34;_blank&#34;&gt;Maven for Java - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency&#34; target=&#34;_blank&#34;&gt;Project Manager for Java - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode&#34; target=&#34;_blank&#34;&gt;Visual Studio IntelliCode - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これだけあれば基本的な道具は一通り揃う。&lt;/p&gt;
&lt;h3&gt;みんな大好き “Hello, World!”&lt;/h3&gt;
&lt;p&gt;ここで簡単に動作確認しておこう。
以下の手順でプロジェクトの雛形を作成する。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コマンドパレットから “Java: Create Java Project” を選択する&lt;/li&gt;
&lt;li&gt;プロジェクト・タイプの一覧が表示されるので “No build tools” を選択する&lt;/li&gt;
&lt;li&gt;作業ディレクトリを選択する&lt;/li&gt;
&lt;li&gt;プロジェクト名を指定する（ここでは &lt;code&gt;hello&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ tree hello
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hello
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── lib
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── App.java
&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;2 directories, 2 files
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;という感じにディレクトリ・ファイルが作成される。
&lt;code&gt;App.java&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-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;App&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;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&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;n&#34;&gt;args&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;kd&#34;&gt;throws&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Exception&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;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Hello, World!&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 class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;エディタ上は&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;https://text.baldanders.info/hello-java-code.png&#34;&gt;&lt;img src=&#34;./hello-java-code.png&#34; srcset=&#34;./hello-java-code.png 528w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;という感じに表示されているので &lt;code&gt;main()&lt;/code&gt; 関数直上の &lt;code&gt;Run&lt;/code&gt; のリンクをクリックすればコンパイル＆実行してくれる。
Java Process Console に &lt;code&gt;Hello, World!&lt;/code&gt; と表示されれば無問題。&lt;/p&gt;
&lt;h3&gt;Import 補完&lt;/h3&gt;
&lt;p&gt;Java の &lt;code&gt;import&lt;/code&gt; 宣言ってすぐに汚れるよね。
使わない &lt;code&gt;import&lt;/code&gt; とか。
逆に &lt;code&gt;import&lt;/code&gt; が足りなくてエラーになったり。&lt;/p&gt;
&lt;p&gt;こういうときはコマンドパレットから “Organize Imports” でいい感じに整形してくれる。
保存時に自動で整形するには &lt;code&gt;settings.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;s2&#34;&gt;&amp;#34;java.saveActions.organizeImports&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;h2&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack&#34; target=&#34;_blank&#34; title=&#34;Spring Boot Extension Pack - Visual Studio Marketplace&#34;&gt;Spring Boot Extension Pack&lt;/a&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;$ code --install-extension Pivotal.vscode-boot-dev-pack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これも以下のパッケージを含んでいるようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-spring-boot&#34; target=&#34;_blank&#34;&gt;Spring Boot Tools - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-initializr&#34; target=&#34;_blank&#34;&gt;Spring Initializr Java Support - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-boot-dashboard&#34; target=&#34;_blank&#34;&gt;Spring Boot Dashboard - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;雛形プロジェクトを作る&lt;/h3&gt;
&lt;p&gt;これも動作確認しておこう。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コマンドパレットから “Spring Initializr: Generate a Maven Project” を選択する&lt;/li&gt;
&lt;li&gt;Spring Boot のバージョンを選択（2021-08-18 時点の最新は 2.5.3）&lt;/li&gt;
&lt;li&gt;使用言語を選択。もちろん Java で&lt;/li&gt;
&lt;li&gt;Group Id を入力。ここはデフォルトの &lt;code&gt;com.example&lt;/code&gt; のままにしておく&lt;/li&gt;
&lt;li&gt;Artifact Id を入力。ここもデフォルトの &lt;code&gt;demo&lt;/code&gt; のままにしておく&lt;/li&gt;
&lt;li&gt;パッケージタイプを選択。 &lt;code&gt;Jar&lt;/code&gt; と &lt;code&gt;War&lt;/code&gt; がある。とりあえす &lt;code&gt;Jar&lt;/code&gt; にしておこうか&lt;/li&gt;
&lt;li&gt;Java のバージョンを選択。無難に LTS 版の 11 を選択しておくか（JDK のインストールは別途行うこと）&lt;/li&gt;
&lt;li&gt;依存パッケージを選択。 Spring Web と Lombok は必須。あとは必要に応じて
&lt;ul&gt;
&lt;li&gt;Spring Web (必須)&lt;/li&gt;
&lt;li&gt;Lombok (必須)&lt;/li&gt;
&lt;li&gt;Spring Boot DevTools&lt;/li&gt;
&lt;li&gt;Thymeleaf&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;https://text.baldanders.info/choose-dependencies.png&#34;&gt;&lt;img src=&#34;./choose-dependencies.png&#34; srcset=&#34;./choose-dependencies.png 630w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;あとは作業ディレクトリを指定すれば完了。
作業ディレクトリ直下に Artifact Id で指定した名前でディレクトリが掘られ，ディレクトリ・ファイルが展開される。&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;$ tree demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── HELP.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── mvnw
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── mvnw.cmd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── pom.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   ├── java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │   └── com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │       └── example
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │           └── demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │               └── DemoApplication.java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └── resources
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       ├── application.properties
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       ├── static
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       └── templates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            └── com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                └── example
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    └── demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        └── DemoApplicationTests.java
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;DemoApplication.java&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-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;com.example.demo&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;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;org.springframework.boot.SpringApplication&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;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;org.springframework.boot.autoconfigure.SpringBootApplication&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;nd&#34;&gt;@SpringBootApplication&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;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;DemoApplication&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&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;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&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;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;		&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SpringApplication&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DemoApplication&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;class&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;n&#34;&gt;args&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&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;このままだと何も表示できないので controller クラスと対応するテンプレートファイルを用意する。&lt;/p&gt;
&lt;p&gt;まずは &lt;code&gt;demo/src/main/java/com/example/demo/controller/DemoController.java&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-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;com.example.demo.controller&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;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;org.springframework.stereotype.Controller&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;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;org.springframework.web.bind.annotation.GetMapping&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;nd&#34;&gt;@Controller&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;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;DemoController&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&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;nd&#34;&gt;@GetMapping&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&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;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;demo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;		&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;demo&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 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;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;demo/src/main/resources/templates/demo.html&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-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;charset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Demo&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Hello World!&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;全体の構成はこんな感じ。&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;$ tree demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── HELP.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── mvnw
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── mvnw.cmd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── pom.xml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   ├── java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │   └── com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │       └── example
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │           └── demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │               ├── DemoApplication.java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │               └── controller
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   │                   └── DemoController.java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │   └── resources
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       ├── application.properties
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       ├── static
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │       └── templates
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    │           └── demo.html
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── java
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            └── com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                └── example
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    └── demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        └── DemoApplicationTests.java
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;テストとか端折ってるけどご容赦ね。&lt;/p&gt;
&lt;p&gt;あとは Spring Boot Dashboard から Start すれば OK。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;https://text.baldanders.info/dashboard.png&#34;&gt;&lt;img src=&#34;./dashboard.png&#34; srcset=&#34;./dashboard.png 500w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Web ブラウザから &lt;code&gt;http://localhost:8080/&lt;/code&gt; を叩いて &lt;code&gt;Hello, World!&lt;/code&gt; と表示されれば無問題。&lt;/p&gt;
&lt;h2&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok&#34; target=&#34;_blank&#34; title=&#34;Lombok Annotations Support for VS Code - Visual Studio Marketplace&#34;&gt;Lombok Annotations Support for VS Code&lt;/a&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;$ code --install-extension GabrielBB.vscode-lombok
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;@Getter&lt;/code&gt; とか &lt;code&gt;@Setter&lt;/code&gt; とか &lt;code&gt;@Slf4j&lt;/code&gt; とかの &lt;a href=&#34;https://projectlombok.org/&#34; target=&#34;_blank&#34; title=&#34;Project Lombok&#34;&gt;Lombok&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;h2&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;/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;$ code --install-extension ms-azuretools.vscode-azureappservice
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;VS code 上から &lt;a href=&#34;https://azure.microsoft.com/ja-jp/services/app-service/web/&#34; target=&#34;_blank&#34; title=&#34;Web App Service | Microsoft Azure&#34;&gt;Azure Web Apps&lt;/a&gt; にお手軽にデプロイ出来ないかなぁ，と思って探したらありました。
やり方は以下のページの後半で紹介している。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/java/java-webapp&#34; target=&#34;_blank&#34;&gt;Build and Deploy Java Web Apps to the cloud with Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;めがっさ簡単だった。
&lt;a href=&#34;https://docs.microsoft.com/ja-jp/azure/app-service/deploy-github-actions&#34; target=&#34;_blank&#34; title=&#34;GitHub アクションを使用して CI/CD を構成する - Azure App Service | Microsoft Docs&#34;&gt;GitHub Actions を使う&lt;/a&gt;方法とか，何なら &lt;a href=&#34;https://azure.microsoft.com/ja-jp/services/spring-cloud/&#34; target=&#34;_blank&#34; title=&#34;Azure Spring Cloud – Spring Boot アプリの開発 | Microsoft Azure&#34;&gt;Azure Spring Cloud&lt;/a&gt; を契約する手もあるのだが，今回はとにかく JAR か WAR を投げれればよかったので。&lt;/p&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/takumi_links/items/fe71cfeb4dfaa76fbe31&#34; target=&#34;_blank&#34;&gt;VSCodeで作るJava開発環境＆Spring Bootアプリケーション入門 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://spring.pleiades.io/spring-boot/docs/current/reference/html/deployment.html&#34; target=&#34;_blank&#34;&gt;Spring Boot アプリケーションのデプロイ - リファレンス&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/koukibuu3/items/77734596483ffd788931&#34; target=&#34;_blank&#34;&gt;SpringBootをVSCodeで使ってみる - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kohei.life/spring-boot-build-deploy/&#34; target=&#34;_blank&#34;&gt;【Maven編】Spring Bootのビルドとデプロイ方法 | こへいブログ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ameblo.jp/kazusa-g/entry-12536838291.html&#34; target=&#34;_blank&#34;&gt;VSCodeとDockerでSpring Boot + PostgreSQL開発環境を作る(2) | Sales8開発者日記&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://learning-collection.com/springboot-%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%94%bb%e9%9d%a2%e4%bd%9c%e6%88%90/&#34; target=&#34;_blank&#34;&gt;SpringBoot ログイン画面作成&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/t-shin0hara/items/eaf44e4f48341616ab97&#34; target=&#34;_blank&#34;&gt;Spring Boot + Spring Data JPA ～サンプルアプリ実装～ - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://itref.fc2web.com/java/jpa/annotation.html&#34; target=&#34;_blank&#34;&gt;JPA (Java Persistence API)のアノテーション&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/NagaokaKenichi/items/c6d1b76090ef5ef39482&#34; target=&#34;_blank&#34;&gt;Thymeleafチートシート - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://one-it-thing.com/2074/&#34; target=&#34;_blank&#34;&gt;SpringBootアプリにBootstrap4を追加（WebJars使用） – One IT Thing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.codeflow.site/ja/article/spring-boot__spring-boot-slf4j-logging-example&#34; target=&#34;_blank&#34;&gt;SpringブートSLF4Jロギングの例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ja.getdocs.org/spring-boot-spring-boot-slf4j-logging-example/&#34; target=&#34;_blank&#34;&gt;SpringブートSLF4Jロギングの例 - 開発者ドキュメント&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://m-shige1979.hatenablog.com/entry/2016/11/30/080000&#34; target=&#34;_blank&#34;&gt;Spring bootでHttpSessionを使用する - m_shige1979のささやかな抵抗と欲望の日々&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/t-yama-3/items/572fabc873b4b6a0fc7c&#34; target=&#34;_blank&#34;&gt;Spring Boot で Ajax を実装する単純なサンプル - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/opengl-8080/items/671ffd4bf84fe5e32557&#34; target=&#34;_blank&#34;&gt;Lombok 使い方メモ - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bitto.jp/posts/%E6%8A%80%E8%A1%93/Windows/vscode-java-organize-import/&#34; target=&#34;_blank&#34;&gt;VScodeでJavaのインポート文をFixしたい | 猫好きが猫以外のことも書く&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/java/java-on-azure&#34; target=&#34;_blank&#34;&gt;Deploy Java to Azure&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/B0893LQ5KY?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/51VWsWP87dL._SL160_.jpg&#34; width=&#34;100&#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/B0893LQ5KY?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Spring Boot 2 入門: 基礎から実演まで&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;原田 けいと (著), 竹田 甘地 (著), Robert Segawa (著)&lt;/dd&gt;
    &lt;dd&gt; 2020-05-22 (Release 2020-05-22)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B0893LQ5KY (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;Spring Boot を勉強することになって急遽買った本。めっさ分かりやすかった。 PDF 版が欲しいくらい（笑） Spring Boot 3.2 対応にアップデートされていた。素敵！&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-20&#34;&gt;2024-03-20&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- Spring Boot 2 入門 --&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/4621303252?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/41WZElZb9eL._SL160_.jpg&#34; width=&#34;128&#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/4621303252?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Effective Java 第3版&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Joshua Bloch (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;丸善出版 2018-10-30&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4621303252 (ASIN), 9784621303252 (EAN), 4621303252 (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;再勉強中。 Kindle 版のほうがちょっと安いが，勤務先でも使いたかったので紙の本にした。&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-03-17&#34;&gt;2021-03-17&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;!-- Effective Java 第3版 --&gt;
</content>
	</entry><entry>
		<title>Markdown と VS Code</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2021/02/markdown-with-vscode/" />
		<id>tag:text.Baldanders.info,2021-02-28:/remark/2021/02/markdown-with-vscode/</id>
		<published>2021-02-28T03:45:02+00:00</published>
		<updated>2022-04-23T13:45:31+00:00</updated>
		<summary>Preview 機能は個人的に必要ないのでレビューしないが，仕事で使うようなことがあれば，そのうち記事にすることもあるだろう。</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://code.visualstudio.com/&#34; target=&#34;_blank&#34; title=&#34;Visual Studio Code - Code Editing. Redefined&#34;&gt;VS Code&lt;/a&gt; で markdown テキストを入出力する話。&lt;/p&gt;
&lt;h2&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&#34; target=&#34;_blank&#34; title=&#34;Markdown All in One - Visual Studio Marketplace&#34;&gt;Markdown All in One&lt;/a&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;$ code --install-extension yzhang.markdown-all-in-one
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Markdown 関連の拡張機能は色々あるようだが，入力支援に関してはこれで必要十分ぽい。&lt;/p&gt;
&lt;p&gt;お気に入りはテーブル整形の機能で， Linux/Ubuntu なら &lt;code&gt;[Ctrl+Shift+I]&lt;/code&gt; キー（Format Document）押下で綺麗に整形してくれる。&lt;/p&gt;
&lt;p&gt;ところが Windows 版では &lt;code&gt;[Shift+Alt+F]&lt;/code&gt; キーが Format Document に割り当てられているようだ。
プラットフォームによって違うのかよ。&lt;/p&gt;
&lt;p&gt;というわけで Windows 版の方にキー割当を合わせることにした。&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;c1&#34;&gt;// Place your key bindings in this file to override the defaults
&lt;/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;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;nt&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;shift+alt+f&amp;#34;&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;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editor.action.formatDocument&amp;#34;&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;nt&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editorHasDocumentFormattingProvider &amp;amp;&amp;amp; editorTextFocus &amp;amp;&amp;amp; !editorReadonly &amp;amp;&amp;amp; !inCompositeEditor&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;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;nt&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ctrl+shift+i&amp;#34;&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;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-editor.action.formatDocument&amp;#34;&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;nt&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editorHasDocumentFormattingProvider &amp;amp;&amp;amp; editorTextFocus &amp;amp;&amp;amp; !editorReadonly &amp;amp;&amp;amp; !inCompositeEditor&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;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;nt&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;shift+alt+f&amp;#34;&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;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editor.action.formatDocument.none&amp;#34;&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;nt&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editorTextFocus &amp;amp;&amp;amp; !editorHasDocumentFormattingProvider &amp;amp;&amp;amp; !editorReadonly&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;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;nt&#34;&gt;&amp;#34;key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ctrl+shift+i&amp;#34;&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;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-editor.action.formatDocument.none&amp;#34;&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;nt&#34;&gt;&amp;#34;when&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;editorTextFocus &amp;amp;&amp;amp; !editorHasDocumentFormattingProvider &amp;amp;&amp;amp; !editorReadonly&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;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;h2&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode&#34; target=&#34;_blank&#34; title=&#34;Prettier - Code formatter - Visual Studio Marketplace&#34;&gt;Prettier - Code formatter&lt;/a&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;$ code --install-extension esbenp.prettier-vscode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Markdown 専用というわけではないが JavaScript/TypeScript, CSS/SCSS/Less, HTML, JSON, GraphQL, YAML など幅広い言語に対応している整形ツールで，しかも plugin 拡張もできるらしい。
もちろん markdown テキストにも対応している。&lt;/p&gt;
&lt;p&gt;で，これと &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&#34; target=&#34;_blank&#34; title=&#34;Markdown All in One - Visual Studio Marketplace&#34;&gt;Markdown All in One&lt;/a&gt; の整形機能（Format Document）が被るわけですよ。
そこで，どちらの機能を使うか言語ごとに設定できるようになっている。
私は &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&#34; target=&#34;_blank&#34; title=&#34;Markdown All in One - Visual Studio Marketplace&#34;&gt;Markdown All in One&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-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;nt&#34;&gt;&amp;#34;[markdown]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;editor.defaultFormatter&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;yzhang.markdown-all-in-one&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;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;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;nt&#34;&gt;&amp;#34;[markdown]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;editor.defaultFormatter&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;yzhang.markdown-all-in-one&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;editor.formatOnSave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;editor.formatOnSaveMode&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;modifications&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ちなみに &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig&#34; target=&#34;_blank&#34; title=&#34;EditorConfig for VS Code - Visual Studio Marketplace&#34;&gt;EditorConfig for VS Code&lt;/a&gt; が有効な場合は &lt;code&gt;.editorconfig&lt;/code&gt; の設定（インデントや改行コードなど）を考慮してくれるようだ。
これを無効にするには “Use Editor Config” の項目を OFF にする。&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;nt&#34;&gt;&amp;#34;prettier.useEditorConfig&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ただし， &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig&#34; target=&#34;_blank&#34; title=&#34;EditorConfig for VS Code - Visual Studio Marketplace&#34;&gt;EditorConfig&lt;/a&gt; が有効な場合でも &lt;code&gt;.prettierrc&lt;/code&gt; ファイルなどによる &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode&#34; target=&#34;_blank&#34; title=&#34;Prettier - Code formatter - Visual Studio Marketplace&#34;&gt;Prettier&lt;/a&gt; 独自の設定がある場合は，そちらのほうが優先されるようだ。
ややこしい&amp;hellip;&lt;/p&gt;
&lt;h2&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; の売りのひとつはスニペットを含む強力な自動補完機能だが，何故か markdown ファイルには自動補完が効かない。
と思ったら，既定で無効になっているらしい。
いや，有効にしとけよ。&lt;/p&gt;
&lt;p&gt;というわけで &lt;code&gt;settings.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;nt&#34;&gt;&amp;#34;[markdown]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;editor.quickSuggestions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;editor.snippetSuggestions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;top&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;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;h2&gt;Markdown Preview 機能は必要か&lt;/h2&gt;
&lt;p&gt;私個人で言うなら No で，仕事なら場合によっては Yes かな。&lt;/p&gt;
&lt;p&gt;そもそも markdown テキストってのは，見出しや段落や箇条書き等の文書構造がそのままでも human-readable である点が利点と言える。
さらに言えば，ここのブログは &lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world’s fastest framework for building websites | Hugo&#34;&gt;Hugo&lt;/a&gt; の shortcodes 等で入力自体をカスタマイズしまくってるので，ただの markdown preview なんか使いものにならないのだ（&lt;a href=&#34;https://gohugo.io/&#34; target=&#34;_blank&#34; title=&#34;The world’s fastest framework for building websites | Hugo&#34;&gt;Hugo&lt;/a&gt; はサーバ・モードで起動できるので，リアルタイムでブラウザ表示を確認しながら記事を書いている）。&lt;/p&gt;
&lt;p&gt;一方で， Office ツールなどレガシーな環境を捨てて markdown 等の構造化テキストをベースにしたドキュメンテーションをしようとするなら，それなりにリッチな markdown preview 機能と PDF 等へ「最終出力」するためのツールチェーンが必要となる。&lt;/p&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;p&gt;というわけで，以降では PDF 等への「最終出力」を念頭に置いたドキュメントツールとして幾つかの拡張機能を紹介してみる。
上述したように，私個人は全く必要ないのでレビューしないが，仕事で使うようなことがあれば，そのうち記事にすることもあるだろう。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced&#34; target=&#34;_blank&#34; title=&#34;Markdown Preview Enhanced - Visual Studio Marketplace&#34;&gt;Markdown Preview Enhanced&lt;/a&gt;&lt;/h3&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 shd101wyy.markdown-preview-enhanced
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TeX の数学記法あるいは &lt;a href=&#34;http://plantuml.com/&#34; target=&#34;_blank&#34; title=&#34;Open-source tool that uses simple textual descriptions to draw UML diagrams.&#34;&gt;PlantUML&lt;/a&gt; や &lt;a href=&#34;https://mermaidjs.github.io/&#34; target=&#34;_blank&#34;&gt;mermaid&lt;/a&gt; 等の記法も認識して preview 表示できるらしい。
&lt;a href=&#34;https://graphviz.gitlab.io/_pages/doc/info/lang.html&#34; target=&#34;_blank&#34; title=&#34;The DOT Language&#34;&gt;DOT&lt;/a&gt; 言語も使えるのか。
CSS をカスタマイズ可能。&lt;/p&gt;
&lt;p&gt;HTML や PDF へ出力できるようだ（PDF 出力は Chrome 経由）。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf&#34; target=&#34;_blank&#34; title=&#34;Markdown PDF - Visual Studio Marketplace&#34;&gt;Markdown PDF&lt;/a&gt;&lt;/h3&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 yzane.markdown-pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コマンド一発で PDF 変換してくれる。
簡易的な出力しか出来ないのかと思ったら，意外にもかなりカスタマイズできるらしい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/reona396/items/40b234108f7664267db8&#34; target=&#34;_blank&#34;&gt;VSCode と Markdown で技術同人誌書いたので拡張機能とかまとめ - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://h-s-hige.hateblo.jp/entry/20190405/1554467885&#34; target=&#34;_blank&#34;&gt;【Visual Studio Code】Markdown PDF のスタイル(CSS)を変える方法 - Nekonote&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=marp-team.marp-vscode&#34; target=&#34;_blank&#34; title=&#34;Marp for VS Code - Visual Studio Marketplace&#34;&gt;Marp for VS Code&lt;/a&gt;&lt;/h3&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 marp-team.marp-vscode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://marp.app/&#34; target=&#34;_blank&#34; title=&#34;Marp: Markdown Presentation Ecosystem&#34;&gt;Marp&lt;/a&gt; を使って markdown テキストからスライドを生成する。
PDF へエクスポートできるらしい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/tomo_makes/items/aafae4021986553ae1d8&#34; target=&#34;_blank&#34;&gt;【VS Code + Marp】Markdown から爆速・自由自在なデザインで、プレゼンスライドを作る - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio&#34; target=&#34;_blank&#34; title=&#34;Draw.io Integration - Visual Studio Marketplace&#34;&gt;Draw.io Integration&lt;/a&gt;&lt;/h3&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 hediet.vscode-drawio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://app.diagrams.net/&#34; target=&#34;_blank&#34;&gt;Draw.io (diagrams.net)&lt;/a&gt; を利用した作図ツール。
データはテキストで保持して PNG や SVG へエクスポート可能って感じなのかな。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/riku-shiru/items/5ab7c5aecdfea323ec4e&#34; target=&#34;_blank&#34;&gt;VSCode で Draw.io が使えるようになったらしい！ - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml&#34; target=&#34;_blank&#34; title=&#34;PlantUML - Visual Studio Marketplace&#34;&gt;PlantUML&lt;/a&gt;&lt;/h3&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 jebbs.plantuml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;http://plantuml.com/&#34; target=&#34;_blank&#34; title=&#34;Open-source tool that uses simple textual descriptions to draw UML diagrams.&#34;&gt;PlantUML&lt;/a&gt; 作図・出力支援。
あらかじめ &lt;a href=&#34;http://plantuml.com/&#34; target=&#34;_blank&#34; title=&#34;Open-source tool that uses simple textual descriptions to draw UML diagrams.&#34;&gt;PlantUML&lt;/a&gt; 作図環境を用意する必要がある（ただし &lt;code&gt;plantuml.jar&lt;/code&gt; ファイルは拡張機能内にあらかじめ格納されている？）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://text.baldanders.info/remark/2018/12/plantuml-1/&#34; target=&#34;_blank&#34;&gt;真面目に PlantUML (1) : PlantUML のインストール&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;ブックマーク&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zenn.dev/karaage0703/books/80b6999d429abc8051bb&#34; target=&#34;_blank&#34;&gt;VS Code エディタ入門&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/tfukumori/items/0f2b52088cd39f5c124e&#34; target=&#34;_blank&#34;&gt;(2020 年 12 月 8 日追記)VSCode で Draw.io Integration 使用時にエクスポートできないことがある問題への対処 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://coffee-nominagara.com/2019-01-25-094628&#34; target=&#34;_blank&#34;&gt;Visual Studio Code で markdown のスニペットを登録する  |  コーヒー飲みながら仕事したい&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zenn.dev/spiegel/articles/20200922-editorconfig&#34; target=&#34;_blank&#34;&gt;インデントおよび行末は EditorConfig で始末する&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/B08CZ2C3NZ?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/51LziyyXRmL._SL160_.jpg&#34; width=&#34;113&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/B08CZ2C3NZ?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Software Design (ソフトウェアデザイン) 2020年8月号 [雑誌]&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Software Design 編集部 (編集)&lt;/dd&gt;
    &lt;dd&gt;技術評論社 2020-07-18 (Release 2020-07-18)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B08CZ2C3NZ (ASIN)&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;特集記事は「Vim vs. Visual Studio Code」&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-02-28&#34;&gt;2021-02-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;!-- Software Design (2020年8月号) --&gt;
</content>
	</entry><entry>
		<title>Go と VS Code</title>
		<link rel="alternate" type="text/html" href="https://text.baldanders.info/remark/2021/02/golang-with-vscode/" />
		<id>tag:text.Baldanders.info,2021-02-27:/remark/2021/02/golang-with-vscode/</id>
		<published>2021-02-27T09:47:11+00:00</published>
		<updated>2024-05-10T22:02:32+00:00</updated>
		<summary>ぶっちゃけ ATOM の go-plus よりも出来がいいので，ゆるゆると移行していきますよっと。</summary>
		<author>
			<name>Spiegel</name>
			<uri>https://baldanders.info/profile/</uri>
		</author>
		
	<link rel="cc:license" type="application/rdf+xml" href="https://creativecommons.org/licenses/by-sa/4.0/rdf" />


		<content type="html" xml:lang="ja-JP" xml:base="https://text.baldanders.info/">&lt;p&gt;どっちのセクションで書こう悩んだが，所詮ツールの話だし，こっち側で。&lt;/p&gt;
&lt;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/2021/02/installing-vscode-again/&#34; target=&#34;_blank&#34; title=&#34;パソコンに Visual Studio Code を導入する（再チャレンジ）&#34;&gt;前回&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://go.dev/&#34; target=&#34;_blank&#34;&gt;Go 言語&lt;/a&gt;開発支援環境を入れる。
といっても一択だけどね。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=golang.go&#34; target=&#34;_blank&#34;&gt;Go - Visual Studio Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;インストールはこちら。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ code --install-extension golang.go
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一応 Google が公式に参加している拡張機能らしい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.golang.org/vscode-go&#34; target=&#34;_blank&#34;&gt;The VS Code Go extension joins the Go project - The Go Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://code.visualstudio.com/blogs/2020/06/09/go-extension&#34; target=&#34;_blank&#34;&gt;Visual Studio Code Go extension joins the Go project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかも最近，こちらも事実上のオフィシャルである &lt;a href=&#34;https://pkg.go.dev/golang.org/x/tools/gopls&#34; target=&#34;_blank&#34; title=&#34;gopls · pkg.go.dev&#34;&gt;gopls&lt;/a&gt; が，この拡張機能の既定の &lt;a href=&#34;https://langserver.org/&#34; target=&#34;_blank&#34; title=&#34;Langserver.org&#34;&gt;language server&lt;/a&gt; となったようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.golang.org/gopls-vscode-go&#34; target=&#34;_blank&#34;&gt;Gopls on by default in the VS Code Go extension - The Go Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人的にひとつだけ気に入らないところがあって，既定の設定のままではプロジェクト・フォルダを開いたときにトップに &lt;code&gt;go.mod&lt;/code&gt; ファイルがないと上手く動かないみたいなんだよね（&lt;a href=&#34;https://zenn.dev/spiegel/articles/20210223-go-module-aware-mode&#34; target=&#34;_blank&#34; title=&#34;Go のモジュール管理【バージョン 1.16 改訂版】&#34;&gt;モジュール対応モード&lt;/a&gt;の場合）。&lt;/p&gt;
&lt;p&gt;最初は拡張機能側の問題かと思っていたが，どうも &lt;a href=&#34;https://pkg.go.dev/golang.org/x/tools/gopls&#34; target=&#34;_blank&#34; title=&#34;gopls · pkg.go.dev&#34;&gt;gopls&lt;/a&gt; の制限らしい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/golang/tools/blob/master/gopls/doc/workspace.md&#34; target=&#34;_blank&#34;&gt;tools/workspace.md at master · golang/tools · GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一応の回避策はあって &lt;code&gt;settings.json&lt;/code&gt; に以下の&lt;a href=&#34;https://github.com/golang/tools/blob/master/gopls/doc/settings.md#experimentalworkspacemodule-bool&#34; target=&#34;_blank&#34;&gt;オプションを設定&lt;/a&gt;することでトップ以外の複数の &lt;code&gt;go.mod&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;nt&#34;&gt;&amp;#34;gopls&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;build.experimentalWorkspaceModule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#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;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ただし &lt;code&gt;go.mod&lt;/code&gt; ファイルで定義したモジュール名は開いたプロジェクト・フォルダ内で一意でなければならない。
名前が被ってるとめっさ怒られる。&lt;/p&gt;
&lt;p&gt;まぁ，理屈は分からんでもないが，私の場合，ブログなどのドキュメント環境でサンプルコードを書き散らしていて，それらのモジュール名が大抵 &amp;ldquo;&lt;code&gt;sample&lt;/code&gt;” だったりするので被りまくりなんだよなぁ sigh&amp;hellip;&lt;/p&gt;
&lt;p&gt;ちなみに，この &lt;a href=&#34;https://github.com/golang/tools/blob/master/gopls/doc/settings.md#experimentalworkspacemodule-bool&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;experimentalWorkspaceModule&lt;/code&gt; オプション&lt;/a&gt;は一時的な措置なので将来的にはなくなるようだ。
それまでには何とかするということだろう。&lt;/p&gt;
&lt;p&gt;それ以外の部分ではぶっちゃけ &lt;a href=&#34;https://atom.io/&#34; target=&#34;_blank&#34;&gt;ATOM&lt;/a&gt; の &lt;a href=&#34;https://atom.io/packages/go-plus&#34; target=&#34;_blank&#34;&gt;go-plus&lt;/a&gt; よりも出来がいいので，ゆるゆると移行していきますよっと。&lt;/p&gt;
&lt;p&gt;現時点での &lt;code&gt;settings.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;nt&#34;&gt;&amp;#34;go.buildOnSave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;off&amp;#34;&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;nt&#34;&gt;&amp;#34;go.autocompleteUnimportedPackages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;go.formatTool&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;goimports&amp;#34;&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;nt&#34;&gt;&amp;#34;go.lintTool&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;golangci-lint&amp;#34;&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;nt&#34;&gt;&amp;#34;go.gotoSymbol.includeGoroot&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;go.testOnSave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;go.coverageOptions&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;showUncoveredCodeOnly&amp;#34;&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;nt&#34;&gt;&amp;#34;go.coverOnSave&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;go.coverOnSingleTestFile&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nt&#34;&gt;&amp;#34;go.coverageDecorator&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gutter&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;#34;gopls&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&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;build.experimentalWorkspaceModule&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#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;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;【2021-03-02 追記】&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;&amp;gt;Go: Install/Update Tools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;と入力すると関連ツールのインストールおよびアップデートができる。&lt;/p&gt;
&lt;figure style=&#39;margin:0 auto;text-align:center;&#39;&gt;&lt;a href=&#34;./update-tools.png&#34;&gt;&lt;img src=&#34;./update-tools.png&#34; srcset=&#34;./update-tools.png 612w&#34; sizes=&#34;(min-width:600px) 500px, 80vw&#34; alt=&#34;Go: Install/Update Tools&#34; loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;div&gt;&lt;a href=&#34;./update-tools.png&#34;&gt;Go: Install/Update Tools&lt;/a&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;Tools environment: GOPATH=/home/username/go
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing 9 tools at /home/username/go/bin in module mode.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gopkgs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  go-outline
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gotests
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gomodifytags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  impl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  goplay
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  dlv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  golangci-lint
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gopls
&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;Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs (/home/username/go/bin/gopkgs) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/ramya-rao-a/go-outline (/home/username/go/bin/go-outline) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/cweill/gotests/... (/home/username/go/bin/gotests) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/fatih/gomodifytags (/home/username/go/bin/gomodifytags) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/josharian/impl (/home/username/go/bin/impl) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/haya14busa/goplay/cmd/goplay (/home/username/go/bin/goplay) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/go-delve/delve/cmd/dlv (/home/username/go/bin/dlv) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing github.com/golangci/golangci-lint/cmd/golangci-lint (/home/username/go/bin/golangci-lint) SUCCEEDED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing golang.org/x/tools/gopls (/home/username/go/bin/gopls) SUCCEEDED
&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;All tools successfully installed. You are ready to Go :).
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;てな感じで &lt;code&gt;go install&lt;/code&gt; してくれるようだ。
自動でアップデートしてくれるといいのだが&amp;hellip;&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/B08CZ2C3NZ?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/51LziyyXRmL._SL160_.jpg&#34; width=&#34;113&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/B08CZ2C3NZ?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;Software Design (ソフトウェアデザイン) 2020年8月号 [雑誌]&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Software Design 編集部 (編集)&lt;/dd&gt;
    &lt;dd&gt;技術評論社 2020-07-18 (Release 2020-07-18)&lt;/dd&gt;
    &lt;dd&gt;Kindle版&lt;/dd&gt;
    &lt;dd&gt;B08CZ2C3NZ (ASIN)&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;特集記事は「Vim vs. Visual Studio Code」&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-02-28&#34;&gt;2021-02-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;!-- Software Design (2020年8月号) --&gt;
&lt;div class=&#34;hreview&#34;&gt;
  &lt;div class=&#34;photo&#34;&gt;&lt;a href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;&lt;img src=&#34;https://m.media-amazon.com/images/I/41meaSLNFfL._SL160_.jpg&#34; width=&#34;122&#34; alt=&#34;photo&#34;&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;dl&gt;
    &lt;dt class=&#34;item&#34;&gt;&lt;a class=&#34;fn url&#34; href=&#34;https://www.amazon.co.jp/dp/4621300253?tag=baldandersinf-22&amp;amp;linkCode=ogi&amp;amp;th=1&amp;amp;psc=1&#34;&gt;プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)&lt;/dd&gt;
    &lt;dd&gt;丸善出版 2016-06-20&lt;/dd&gt;
    &lt;dd&gt;単行本（ソフトカバー）&lt;/dd&gt;
    &lt;dd&gt;4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN)&lt;/dd&gt;
    &lt;dd&gt;評価&lt;abbr class=&#34;rating fa-sm&#34; title=&#34;5&#34;&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&amp;nbsp;&lt;i class=&#34;fas fa-star&#34;&gt;&lt;/i&gt;&lt;/abbr&gt;&lt;/dd&gt;
  &lt;/dl&gt;
  &lt;p class=&#34;description&#34;&gt;著者のひとりは（あの「バイブル」とも呼ばれる）通称 “K&amp;amp;R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。と思ったら絶版状態らしい（2025-01 現在）。復刊を望む！&lt;/p&gt;
  &lt;p class=&#34;powered-by&#34;&gt;reviewed by &lt;a href=&#39;#maker&#39; class=&#39;reviewer&#39;&gt;Spiegel&lt;/a&gt; on &lt;abbr class=&#34;dtreviewed&#34; title=&#34;2016-07-13&#34;&gt;2016-07-13&lt;/abbr&gt; (powered by &lt;a href=&#34;https://affiliate.amazon.co.jp/assoc_credentials/home&#34;&gt;PA-APIv5&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt; &lt;!-- プログラミング言語Go --&gt;
</content>
	</entry>
</feed>
