$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Go Reject Con 2021] go-taskでストレスフリーな開発体験
Search
T.YAMASHITA
November 24, 2021
Technology
0
3.9k
[Go Reject Con 2021] go-taskでストレスフリーな開発体験
Go Reject Con 2021で発表した資料です。
スライドの中で使っているサンプルは
https://github.com/pyama2000/samle-go-task
に上がっています。
T.YAMASHITA
November 24, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
130
AI駆動開発の実践とその未来
eltociear
1
480
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.3k
SREが取り組むデプロイ高速化 ─ Docker Buildを最適化した話
capytan
0
130
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
2
220
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.5k
Building Serverless AI Memory with Mastra × AWS
vvatanabe
0
370
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.7k
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
230
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
3.9k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
760
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
130
The Mindset for Success: Future Career Progression
greggifford
PRO
0
190
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
510
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
36
For a Future-Friendly Web
brad_frost
180
10k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
80
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
27
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
Transcript
go-taskでストレスフリーな 開発体験 Retty株式会社 山下 尚彦 2021/11/24
自己紹介 山下 尚彦(やました たかひこ) • バックエンド • 自動化 pyama2000 https://user.retty.me/4986330/
開発する上での体験 開発する上で実行するコマンド多すぎてツラい 😇 シェルスクリプトで開発に必要なコマンドを自動化して 開発体験よくしよう!
シェルスクリプトのデメリット • シェルスクリプトでゴリゴリやるの大変じゃないですか?🤔 ◦ 属人化しやすい ◦ 修正しようにも処理が複雑で、本人さえ手が入れられない ⇒ これらの問題 go-task
で解決できます! (行数多いし、処理が複雑だし、メンテナンス大変だなぁ…)
go-taskの特徴 • 各パッケージマネージャーでインストールできる • YAMLで変数やタスクを定義できるのでメンテナンスしやすい • 依存しているタスクを呼び出せる ◦ 各タスクが独立している場合、並列に実行できる •
ホットリロードがデフォルトで利用できる • ドキュメントが充実している
Taskfile.ymlの書き方(version 3) タスクについて • task コマンドでタスク名を指定して実行する • default タスクは taskコマンドでタスク名を
指定しなかったときに呼ばれる • タスク内で desc を定義すると、task --list 実行時に説 明を表示できる 変数について • vars と env で変数を定義できる ◦ vars の値は Taskfile.yml 内で利用する ◦ env の値は Taskfile.yml 内とタスクの コマンド内で利用する
別タスクを実行する データベースを初期化するタスク sql-migrateでデータベースを用意するタスク • task: タスク名 で別タスクを実行できる データベースを準備するタスク
ホットリロード機能を利用する • go-taskには -w オプションを付けることでファイルの変更を検知してタスクを再実行す る機能(ホットリロード)が利用できる ◦ 変更を検知したいファイルをsourcesに指定するか、コマンドによって生成される ファイルをgeneratesに指定する必要がある •
タスクの再実行は別プロセスで実行されるので注意が必要 タスク定義 ホットリロード機能を有効にしたとき
RettyOrderの開発ではどう使われているか? • google/wire(DIライブラリ)のコードを生成する • GraphQLのスキーマからGoのコードを生成する • golangci-lintによるコードの静的解析 & コードの自動修正をする •
開発に必要なデータベースを用意する • sql-migrateを利用してマイグレートする • データベースからGORMの構造体を生成する
まとめ go-taskのメリット • シェルスクリプトで実現しようとすると複雑な処理になる機能がgo-taskを使うと簡単に 利用できる ◦ タスクを指定して実行できる ◦ タスク内で別タスクを呼び出せる ◦
ホットリロード機能が使える • YAMLでタスクを定義できるのでメンテナンスがしやすい Rettyでの使われ方 • Rettyではgo-taskをRettyOrderの開発で使っている • ホットリロードで再実行したタスクは別プロセスで起動されるので、 多重起動を防ぐために前のプロセスを落としてからタスクを実行している • GraphQL用の構造体やデータベースからGORMの構造体を生成する サンプルコード: https://github.com/pyama2000/samle-go-task