mieki256's diary



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言語で作成されたツールらしい。試用してみようか…。

インストール :

単体でインストールする場合は色々方法があるらしいけれど。

_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 に相当するのだろう。

今回は以下を書いてみた。

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

以上です。

過去ログ表示

Prev - 2026/02 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project