Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
4k
[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
Agent Skils
dip_tech
PRO
0
130
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
160
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
310
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
270
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
180
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
sira's awesome portfolio website redesign presentation
elsirapls
0
150
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
Done Done
chrislema
186
16k
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
KATA
mclloyd
PRO
34
15k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Become a Pro
speakerdeck
PRO
31
5.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
94
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