2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

何やらTaskfile.ymlというファイルを見つけたので使い方を軽〜く調べてみた

Last updated at Posted at 2024-08-24

はじめに

この記事では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を作成し以下コードを入力してください。

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の状態での実行結果

client_trueの出力値.png

falseの状態での実行結果

client_falseの出力値.png

おまけ

他にも色々なスキーマがこちらに記載されているので参考までに覗いてみてください。

最後に

どうでしたか?
MakefileとTaskfileどちらか優れているということはなく、状況によって使い分けるようなものかなと考えています。
Makefileにしかない利点、Taskfileにしかない利点があると思っているので、都度どちらを使うか判断していけるとベストですね!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?