2026/02/16(月) [n年前の日記]
#1 [golang] Go言語について勉強中
Windows11 x64 25H2上で、Go (golang) 1.25.7 64bit を使いながら勉強中。
◎ 異なるバージョンを共存 :
Windows11 x64 25H2上で Go 1.25.7 64bitをインストール済みだけど、Go 1.18 も共存できるようにインストールしてみたい。Go言語はそういうこともできるらしい…。
_最新 Go を捨てずに古い Go を支える ― 新旧Go環境共存術
利用する際は、go と打つ代わりに go1.18.10 と打つ。
おお…。別バージョンもインストールできた…。
_最新 Go を捨てずに古い Go を支える ― 新旧Go環境共存術
go install golang.org/dl/go1.18.10@latest go1.18.10 download
利用する際は、go と打つ代わりに go1.18.10 と打つ。
> which go1.18.10 "C:\Users\mieki256\go\bin\go1.18.10.exe" > go1.18.10 version go version go1.18.10 windows/amd64 > go version go version go1.25.7 windows/amd64
おお…。別バージョンもインストールできた…。
◎ Go 1.25.7でWalkを試用 :
Go言語で Windows用のGUIアプリを作成できるライブラリ、Walk を使ってみたい。
_lxn/walk: A Windows GUI toolkit for the Go Programming Language
以下のような出力になった。
_lxn/walk: A Windows GUI toolkit for the Go Programming Language
- github の README.md にサンプルのソースコードが載っているので、コピペして test.go として保存。
- Manifest も載っているので、コピペして test.manifest として保存。.manifest はBOM無しのUTF-8で保存せよ、ということになっているらしい?
# アプリ名を指定しつつ go mod init で依存関係を列挙する go.mod を作成。 go mod init my-walk-app # ソースコードに基づいて必要なパッケージを列挙してもらう go mod tidy # Manifestを変換するためのツール、rsrc.exe を入手 go get github.com/akavel/rsrc # Manifest を .syso に変換 rsrc -manifest main.manifest -o rsrc.syso # Goでビルド go build . # 生成されたアプリを実行して動作確認 my-walk-app.exe
以下のような出力になった。
> go version
go version go1.25.7 windows/amd64
> go mod init my-walk-app
go: creating new go.mod: module my-walk-app
go: to add module requirements and sums:
go mod tidy
> go mod tidy
go: finding module for package github.com/lxn/walk/declarative
go: found github.com/lxn/walk/declarative in github.com/lxn/walk v0.0.0-20210112085537-c389da54e794
go: finding module for package golang.org/x/sys/windows
go: finding module for package github.com/lxn/win
go: finding module for package gopkg.in/Knetic/govaluate.v3
go: downloading golang.org/x/sys v0.41.0
go: found github.com/lxn/win in github.com/lxn/win v0.0.0-20210218163916-a377121e959e
go: found gopkg.in/Knetic/govaluate.v3 in gopkg.in/Knetic/govaluate.v3 v3.0.0
go: found golang.org/x/sys/windows in golang.org/x/sys v0.41.0
> go get github.com/akavel/rsrc
go: added github.com/akavel/rsrc v0.10.2
> rsrc -manifest main.manifest -o rsrc.syso
> go build .
> my-walk-app.exe
[ ツッコむ ]
#2 [golang] Microsoft Copilotに色々と騙された
愚痴です。
Windows11 x64 25H2 + Go 1.25.7 64bit で Walk を使おうとしたのだけど、ついついモノグサをして、Microsoft Copilot に「Go + Walk のサンプルコードを見せて」と質問したら…。ちょっと地獄を見ました…。
まず、提示してきたサンプルコードが間違ってて…。後から分かったけれど、初っ端から嘘…。
ビルドエラーは出なかったけど実行してもウインドウが出ないから尋ねてみたら「Go 1.25でWalkは使えない。Go 1.16〜1.18ぐらいがWalkが動くバージョン」と言ってきて…。これも後で分かったけど真っ赤な嘘…。
Go の古いバージョンは共存できないのかと尋ねたら「それは簡単」と言ってきて、一応そこは正しかったけど…。
「Go 1.18.10 で動く Walk はこのバージョンなのでインストールしてください」と、存在しないタグでのインストールを4回ぐらい提示してきて…。しかも「これで絶対インストールできますよ!」と再三言ってくる…。お前は一体何回嘘を(以下略
もしかしてmanifestが必要なのではないか? なくてもいいの? と尋ねてみたら「そんなものは要らない」「クラッシュの原因とは絶対に無関係」と言い張って…。後で分かったけど必須じゃんよ…。また嘘…。
試しにmanifestをつけてみたら動作が変わったのでやっぱり必要じゃないのですか動作が変わりましたよと尋ねたら「そうなんです! manifestが必要です」と言ってきて…。お前さっき「絶対に要らねえ」って言ってたじゃねえか…。
しかしそこで出してきたmanifestではサイドバイサイドの構成が正しくないとエラーが出てコレ間違ってないですかと尋ねたら「rsrc.exeのバグですね。rsrc.exeはバグが多いことで有名なんです」と清々しいほどの責任転嫁…。後で分かったけどお前が出したmanifestがおかしかったんだよrsrcはちゃんと仕事してたよrsrcへの風評被害やめろや…。
「rsrcの代わりにgo-winresを使ってみましょう」と言い出したけど、これまた存在しない指定オプションを3回ぐらい出してきて…。でもまあ、そういうツールが存在すると知れた点は良かった。こんな便利なツールもあったんやな…。
go-winresについてググって調べてひょっとしてこの指定をするんじゃねと尋ねたら「ああ、その指定もできますね」と抜かしてきやがる…。
ここまできてようやく実行時にpanic内容が出てくるようになって、エラーメッセージをそのまま渡してみたら「ああ、これはソースコードが間違ってますね。レイアウトの指定がありませんよ?」と言い出して…。お前が出してきたコードだよ! 最初から間違ってたんじゃねえか!
一応ウインドウが出るようになって、いやはやこれでなんとかなったかなあ、と思ったけれど。そこでふと、ソースコードとmanifestが間違ってただけなら、実は Go 1.25.7 でも動いたりしないか? と…。
試してみたらすんなり動いてしまって…。「Go 1.2x でWalkは使えません」ってお前そこからして嘘かよ! と…。
いやはや騙された騙された。延々と騙された…。AIがあればプログラマーは要らない、なんて寝ぼけたこと言ってんじゃねえぞと思いました。こんな嘘つき野郎にコード作らせたら絶対にいつか重大事故起きるわ…。
ちなみに、Google Gemini に「Go 1.25.7 で Walk は使えるのか」と尋ねてみたら、「基本的には使えるはず」「WalkはGoが公式にメンテンナンスしてるWindows用のライブラリを経由してWin32 APIを操作しているだけなのでGo内部の仕様変更の影響は少ない」「ただし開発が停滞しているので将来も使えるかどうかは不明」とそれっぽいことを言ってきた…。Geminiのほうがまだちょっとあてになりそう…。
ただ、Gemini にサンプルコードを出してくれとお願いしたら、ID指定を間違えてる manifest を出してきて、これまたエラーが…。お前もかよ…。それでも Copilot と比べたらはるかに少ないやり取りでウインドウが表示されるところまで辿り着けた気がする…。Gemini のほうがまだ優秀なのでは…?
まあ、そもそも公式のドキュメントをちゃんと読め、公式のサンプルを眺めろ、って話ですな…。モノグサしちゃいけない…。
Windows11 x64 25H2 + Go 1.25.7 64bit で Walk を使おうとしたのだけど、ついついモノグサをして、Microsoft Copilot に「Go + Walk のサンプルコードを見せて」と質問したら…。ちょっと地獄を見ました…。
まず、提示してきたサンプルコードが間違ってて…。後から分かったけれど、初っ端から嘘…。
ビルドエラーは出なかったけど実行してもウインドウが出ないから尋ねてみたら「Go 1.25でWalkは使えない。Go 1.16〜1.18ぐらいがWalkが動くバージョン」と言ってきて…。これも後で分かったけど真っ赤な嘘…。
Go の古いバージョンは共存できないのかと尋ねたら「それは簡単」と言ってきて、一応そこは正しかったけど…。
「Go 1.18.10 で動く Walk はこのバージョンなのでインストールしてください」と、存在しないタグでのインストールを4回ぐらい提示してきて…。しかも「これで絶対インストールできますよ!」と再三言ってくる…。お前は一体何回嘘を(以下略
もしかしてmanifestが必要なのではないか? なくてもいいの? と尋ねてみたら「そんなものは要らない」「クラッシュの原因とは絶対に無関係」と言い張って…。後で分かったけど必須じゃんよ…。また嘘…。
試しにmanifestをつけてみたら動作が変わったのでやっぱり必要じゃないのですか動作が変わりましたよと尋ねたら「そうなんです! manifestが必要です」と言ってきて…。お前さっき「絶対に要らねえ」って言ってたじゃねえか…。
しかしそこで出してきたmanifestではサイドバイサイドの構成が正しくないとエラーが出てコレ間違ってないですかと尋ねたら「rsrc.exeのバグですね。rsrc.exeはバグが多いことで有名なんです」と清々しいほどの責任転嫁…。後で分かったけどお前が出したmanifestがおかしかったんだよrsrcはちゃんと仕事してたよrsrcへの風評被害やめろや…。
「rsrcの代わりにgo-winresを使ってみましょう」と言い出したけど、これまた存在しない指定オプションを3回ぐらい出してきて…。でもまあ、そういうツールが存在すると知れた点は良かった。こんな便利なツールもあったんやな…。
go-winresについてググって調べてひょっとしてこの指定をするんじゃねと尋ねたら「ああ、その指定もできますね」と抜かしてきやがる…。
ここまできてようやく実行時にpanic内容が出てくるようになって、エラーメッセージをそのまま渡してみたら「ああ、これはソースコードが間違ってますね。レイアウトの指定がありませんよ?」と言い出して…。お前が出してきたコードだよ! 最初から間違ってたんじゃねえか!
一応ウインドウが出るようになって、いやはやこれでなんとかなったかなあ、と思ったけれど。そこでふと、ソースコードとmanifestが間違ってただけなら、実は Go 1.25.7 でも動いたりしないか? と…。
試してみたらすんなり動いてしまって…。「Go 1.2x でWalkは使えません」ってお前そこからして嘘かよ! と…。
いやはや騙された騙された。延々と騙された…。AIがあればプログラマーは要らない、なんて寝ぼけたこと言ってんじゃねえぞと思いました。こんな嘘つき野郎にコード作らせたら絶対にいつか重大事故起きるわ…。
ちなみに、Google Gemini に「Go 1.25.7 で Walk は使えるのか」と尋ねてみたら、「基本的には使えるはず」「WalkはGoが公式にメンテンナンスしてるWindows用のライブラリを経由してWin32 APIを操作しているだけなのでGo内部の仕様変更の影響は少ない」「ただし開発が停滞しているので将来も使えるかどうかは不明」とそれっぽいことを言ってきた…。Geminiのほうがまだちょっとあてになりそう…。
ただ、Gemini にサンプルコードを出してくれとお願いしたら、ID指定を間違えてる manifest を出してきて、これまたエラーが…。お前もかよ…。それでも Copilot と比べたらはるかに少ないやり取りでウインドウが表示されるところまで辿り着けた気がする…。Gemini のほうがまだ優秀なのでは…?
まあ、そもそも公式のドキュメントをちゃんと読め、公式のサンプルを眺めろ、って話ですな…。モノグサしちゃいけない…。
[ ツッコむ ]
以上、1 日分です。