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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Claude Code 2026年 最新アップデート
oikon48
14
11k
Claude Code Skills 勉強会 (DevelersIO向けに調整済み) / claude code skills for devio
masahirokawahara
1
22k
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
モジュラモノリス導入から4年間の総括:アーキテクチャと組織の相互作用について / Architecture and Organizational Interaction
nazonohito51
1
290
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
280
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
1
640
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
130
脳内メモリ、思ったより揮発性だった
koutorino
0
380
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
190
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
130
組織全体で実現する標準監視設計
yuobayashi
3
490
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
160
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
Are puppies a ranking factor?
jonoalderson
1
3.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
90
[SF Ruby Conf 2025] Rails X
palkan
2
840
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Color Theory Basics | Prateek | Gurzu
gurzu
0
260
Art, The Web, and Tiny UX
lynnandtonic
304
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
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