はじめに
この記事ではMac環境でTaskfileに関する環境構築と基本構文と実行法について記載していきます。
環境構築については動作保証ができないため他の記事を参考にしてください。
きっかけ
私はLaravelに関する勉強をしており、普段からお世話になっているucan-labさんが公開しているdocker環境のリポジトリを覗いていた時の話です。
ふとTaskfile.yml
の中身が気になって開いたところ、中身の構成がMakefile
と似たような雰囲気を感じて、これは同じような機能のやつでは?と思い公式ドキュメントを読んでみました。
Taskとは
Taskはタスクランナー/ビルドツールです。
TaskはGoで書かれており、必要なものはバイナリ1つで他に依存するものがありません。
ビルドツールを使うためだけに複雑なインストール設定をする必要がなく学習コストも低いです。
インストール後はTaskfile.yml
というファイルにシンプルなYAMLスキーマを使って実行したいタスクを記述するだけです。
インストール
早速インストールを行なっていきましょう。
MacOSかつ既にHomebrewをインストールしている場合は、以下コマンドでTaskのインストールを行います。
brew install go-task
上記のコマンドを実行した結果です。
brew install go-task
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Auto-updated Homebrew!
Updated 4 taps (hashicorp/tap, dart-lang/dart, homebrew/core and homebrew/cask).
==> New Formulae
asm6809 flexiblas http-server-rs pgcopydb
boost@1.85 gabo ldb tevent
dart-lang/dart/dart@3.5.1 go@1.22 mariadb@11.4 tmpmail
dependabot gql nuspell ufbt
fast_float graphviz2drawio pcaudiolib
==> New Casks
geekbench-ai kindle-create labplot localcan nrf-connect
You have 32 outdated formulae and 1 outdated cask installed.
==> Downloading https://ghcr.io/v2/homebrew/core/go-task/manifests/3.38.0
########################################################################################################### 100.0%
==> Fetching go-task
==> Downloading https://ghcr.io/v2/homebrew/core/go-task/blobs/sha256:c9d7f0396ff809b2594bd041aa4a00179dc8cf26b951
########################################################################################################### 100.0%
==> Pouring go-task--3.38.0.sonoma.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/go-task/3.38.0: 10 files, 12.2MB
==> Running `brew cleanup go-task`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
これでインストールが完了です。
使い方
まずはサンプルコードを入力して、実行してみましょう。
実行後にコードについての説明を行います。
任意のディレクトリにTaskfile.yml
を作成し以下コードを入力してください。
version: '3'
tasks:
hello:
cmds:
- echo 'Hello World from Task!'
silent: true
TerminalでTaskfile.yml
があるディレクトリでコマンドを入力します。
task hello
実行結果が出力されます。
Hello World from Task!
コードの説明
version: '3'
Taskfileのバージョンを指定しています。テンプレートだと思ってください。
tasks:
タスクの定義部分です。
hello:
タスクの名前です。この名前でタスクを実行します。
cmds:
タスクの実行コマンドを配列で記述します。
今回のコードでは、echo 'Hello World from Task!' というコマンドが実行されます。
silent: true
タスクの実行するコマンドを標準出力に表示しないように設定します。
違いは以下の通りです。
trueの状態での実行結果
falseの状態での実行結果
おまけ
他にも色々なスキーマがこちらに記載されているので参考までに覗いてみてください。
最後に
どうでしたか?
MakefileとTaskfileどちらか優れているということはなく、状況によって使い分けるようなものかなと考えています。
Makefileにしかない利点、Taskfileにしかない利点があると思っているので、都度どちらを使うか判断していけるとベストですね!