2026/02/18(水) [n年前の日記]
#1 [golang] Task/Taskfileを導入
Windows11 x64 25H2上でGo言語(golang)を勉強中だけど、アプリによって go build と打ってビルドしたり、go build -ldflags="-H windowsgui" と打ってビルドするのがなんだか面倒臭い。C/C++だったら make だけで済むのに…。
「Taskfile を使うとそのへん楽になるかもよ」とAI(Google Gemini)が言っている。ググってみたらGo言語で作成されたツールらしい。試用してみようか…。
「Taskfile を使うとそのへん楽になるかもよ」とAI(Google Gemini)が言っている。ググってみたらGo言語で作成されたツールらしい。試用してみようか…。
◎ インストール :
単体でインストールする場合は色々方法があるらしいけれど。
_Installation | Task
自分の環境では Go言語が導入済みなので、go install でインストールしてしまうのが簡単かもしれない。以下を打ってみた。
予想以上に色んなパッケージがインストールされた…。
インストールはされたっぽい。
_Installation | Task
自分の環境では Go言語が導入済みなので、go install でインストールしてしまうのが簡単かもしれない。以下を打ってみた。
go install github.com/go-task/task/v3/cmd/task@latest
予想以上に色んなパッケージがインストールされた…。
> which task "C:\Users\USERNAME\go\bin\task.exe" > task --version 3.48.0
インストールはされたっぽい。
◎ 使い方 :
プロジェクトディレクトリ内に、Taskfile.yml というファイルを作成する。Makefile に相当するのだろう。
今回は以下を書いてみた。
task と打てば default で指定されたコマンドが実行される。上記の設定の場合、task xxxx で指定できる一覧が表示される。
task build と打てば、上記の設定なら go でビルドが行われる。deps: で [res] に依存している旨を指定してあるので、go-winres make が実行されてからビルドされる。
clean で rm を指定してあるけれど…。Taskfile.yml 内で rm と書いてあれば、AI(Google Gemini)曰く、OSに関係なくファイル削除処理をしてくれるらしい。最初、Windows環境だから del と書かないとダメかなーと書いてみたら「そんなファイルは無い」と怒られてしまった。cmd.exe の内部コマンドだもんな…。
とりあえずコレで、task buikd とさえ打ち込めば、事前に指定したコマンドを実行できるようになった。
batファイルでもいいんじゃね、という気もするけど…。task を使っておけばおそらくクロスプラットフォーム対応もしやすいのではないかなあ…。まあ、今回はクロスプラットフォーム対応はしないのだけど。
今回は以下を書いてみた。
version: '3'
tasks:
default:
cmds:
- task --list
res:
desc: Make resource .syso
cmds:
- go-winres make
build:
desc: Build GUI version
deps: [res]
cmds:
- go build -ldflags="-H windowsgui"
run:
desc: Development
cmds:
- go run .
clean:
desc: remove *.exe and *.syso
cmds:
- rm -f *.exe
- rm -f *.syso
task と打てば default で指定されたコマンドが実行される。上記の設定の場合、task xxxx で指定できる一覧が表示される。
task build と打てば、上記の設定なら go でビルドが行われる。deps: で [res] に依存している旨を指定してあるので、go-winres make が実行されてからビルドされる。
clean で rm を指定してあるけれど…。Taskfile.yml 内で rm と書いてあれば、AI(Google Gemini)曰く、OSに関係なくファイル削除処理をしてくれるらしい。最初、Windows環境だから del と書かないとダメかなーと書いてみたら「そんなファイルは無い」と怒られてしまった。cmd.exe の内部コマンドだもんな…。
とりあえずコレで、task buikd とさえ打ち込めば、事前に指定したコマンドを実行できるようになった。
batファイルでもいいんじゃね、という気もするけど…。task を使っておけばおそらくクロスプラットフォーム対応もしやすいのではないかなあ…。まあ、今回はクロスプラットフォーム対応はしないのだけど。
[ ツッコむ ]
#2 [windows][prog] GNU MakeをWindows11にインストールした
Windows11 x64 25H2上で GNU Make を使いたい。使えるものであれば使ってみたい。
一応 MSYS2 を導入してあるから、ソレを使えなくもないけれど…。MSYS2 の bash を起動するのがちょっと面倒な気もしていて…。
_ベストなWindowsへのMakeのインストール方法は? Windows - Qiita
_make:Windows環境にインストールして簡単なビルドをしてみる - massie's programming
_Make for Windows
Make for Windows をインストールするという方法もあるらしいけれど、バージョンが 3.81 とかなり古い。
Chocolatey経由でインストールすれば比較的新しい版がインストールされるらしい。たしかにバージョンが 4.4.1。
_Chocolatey Software | GNU make 4.4.1
MSYS2版の make も 4.4.1 だった。Chocolatey 経由でインストールしておけば同じバージョンが使えそう。
_Chocolateyの導入方法
Chocolatey はインストール済みだったので、管理者権限で PowerShell 7 を開いて以下を打った。
GNU Make 4.4.1 がインストールされた。
ただ、Delphi 12 Community のインストールフォルダにも make.exe があるのがちょっと気になるけど…。Delphi側の動作に問題が起きたりしないか…。どうなんだろうなあ…。
一応 MSYS2 を導入してあるから、ソレを使えなくもないけれど…。MSYS2 の bash を起動するのがちょっと面倒な気もしていて…。
_ベストなWindowsへのMakeのインストール方法は? Windows - Qiita
_make:Windows環境にインストールして簡単なビルドをしてみる - massie's programming
_Make for Windows
Make for Windows をインストールするという方法もあるらしいけれど、バージョンが 3.81 とかなり古い。
Chocolatey経由でインストールすれば比較的新しい版がインストールされるらしい。たしかにバージョンが 4.4.1。
_Chocolatey Software | GNU make 4.4.1
MSYS2版の make も 4.4.1 だった。Chocolatey 経由でインストールしておけば同じバージョンが使えそう。
_Chocolateyの導入方法
Chocolatey はインストール済みだったので、管理者権限で PowerShell 7 を開いて以下を打った。
choco install make
> which make "C:\ProgramData\chocolatey\bin\make.exe" > where make C:\ProgramData\chocolatey\bin\make.exe D:\Program Files (x86)\Embarcadero\Studio\23.0\bin\make.exe > make --version GNU Make 4.4.1 Built for Windows32 Copyright (C) 1988-2023 Free Software Foundation, Inc. ...
GNU Make 4.4.1 がインストールされた。
ただ、Delphi 12 Community のインストールフォルダにも make.exe があるのがちょっと気になるけど…。Delphi側の動作に問題が起きたりしないか…。どうなんだろうなあ…。
[ ツッコむ ]
#3 [golang] Go言語で使っているパッケージのバージョンを知りたい
Go言語(golang)で現在使っているパッケージのバージョンを知りたい。
例えば、現在利用している Ebitengine のバージョンを知りたいなら…。go.mod ファイルを眺めればバージョンも書いてある。たぶんそれが一番簡単な確認方法かなと…。
あるいはコマンドプロンプトで以下を打つ。
最新版に上げたい時は以下でいいらしい。
例えば、現在利用している Ebitengine のバージョンを知りたいなら…。go.mod ファイルを眺めればバージョンも書いてある。たぶんそれが一番簡単な確認方法かなと…。
あるいはコマンドプロンプトで以下を打つ。
go list -m github.com/hajimehoshi/ebiten/v2
> go list -m github.com/hajimehoshi/ebiten/v2 github.com/hajimehoshi/ebiten/v2 v2.9.8
最新版に上げたい時は以下でいいらしい。
go get github.com/hajimehoshi/ebiten/v2@latest go mod tidy
[ ツッコむ ]
#4 [golang][cg_tools] 画像生成サービスでスプライトシートを作成してもらった
Go + Ebitengine でフルスクリーン表示をするサンプルを書いて、
_Go言語公式マスコットキャラクター「Go Gopher」
画像を表示して動作確認していたけれど。表示している画像がどうも気になる。もっと可愛い感じの画像が欲しい…。
一応自分も Inkscape 1.4 x64 を使ってスプライトシート状の画像を作成してみたけれど、可愛さが足りない。全然足りない。
試しにAIに作ってもらうことにした。Microsoft Copilot と Google Gemini (NanoBanana) に以下を要望。
比較的イイ感じの画像が出てきた。
そのままだとスプライトシートとして利用できなかったので、GIMP 2.10.38 Portable を使って背景を透明にしたり、配置を変えたり、縮小したりして最終画像を作成した。
一応自分も Inkscape 1.4 x64 を使ってスプライトシート状の画像を作成してみたけれど、可愛さが足りない。全然足りない。
試しにAIに作ってもらうことにした。Microsoft Copilot と Google Gemini (NanoBanana) に以下を要望。
- 「Go言語の公式マスコットキャラクターの『Go Gopher』をもっと可愛くした画像を作成してください」
- イイ感じの画像が出てきたら「水色、緑、ピンク、黄色の4色で4キャラを作成して、眼鏡をつけたり、リボンをつけたり、帽子をつけたりして、それを2x2のスプライトシートのように配置してください。背景は無しで」と要望。
比較的イイ感じの画像が出てきた。
そのままだとスプライトシートとして利用できなかったので、GIMP 2.10.38 Portable を使って背景を透明にしたり、配置を変えたり、縮小したりして最終画像を作成した。
◎ ライセンス面 :
ライセンスが気になったけど、Google Gemini (NanoBanana) の場合は条件を満たせば商用利用も可能らしい。サービスを利用したユーザに権利が帰属するらしいけど、画像検索などを使って既存画像にそっくりなものが無いか確認した上で使うよう注意せよ、とAIが言っている。
Microsoft Copilotの場合は、Copilot曰く商用利用しなければOKと返してきた。ただ、細かい規約を書いてあるはずのURLも提示してきたものの、何度質問しても404のURLしか出てこない…。あげく、「今現在規約ページはネット上に存在しない」とCopilotが断言してきた…。たぶんコレも嘘なんだろうなあ…。
まあ、サンプルプログラムで使うだけなので、このくらいはいいんじゃないか…。一応画像検索をして、クリソツの画像が無いことは確認したし…。
Microsoft Copilotの場合は、Copilot曰く商用利用しなければOKと返してきた。ただ、細かい規約を書いてあるはずのURLも提示してきたものの、何度質問しても404のURLしか出てこない…。あげく、「今現在規約ページはネット上に存在しない」とCopilotが断言してきた…。たぶんコレも嘘なんだろうなあ…。
まあ、サンプルプログラムで使うだけなので、このくらいはいいんじゃないか…。一応画像検索をして、クリソツの画像が無いことは確認したし…。
◎ 成果物 :
github にアップロードしておいた。
_mieki256/ebiten_fullscreen_sample: Ebitengineでフルスクリーン表示をするサンプル
先日作成したスクリーンセーバラッパーから呼び出せばスクリーンセーバになるんじゃないかなと…。
_mieki256/SSWrapLz
_mieki256/SSWrapDp
_mieki256/ebiten_fullscreen_sample: Ebitengineでフルスクリーン表示をするサンプル
先日作成したスクリーンセーバラッパーから呼び出せばスクリーンセーバになるんじゃないかなと…。
_mieki256/SSWrapLz
_mieki256/SSWrapDp
[ ツッコむ ]
以上、1 日分です。