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 を使っておけばおそらくクロスプラットフォーム対応もしやすいのではないかなあ…。まあ、今回はクロスプラットフォーム対応はしないのだけど。
[ ツッコむ ]
以上です。