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
3.8k
[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
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
260
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
290
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
2
120
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1k
Practical Agentic AI in Software Engineering
uzyn
0
110
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
310
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
260
2025年夏 コーディングエージェントを統べる者
nwiizo
0
180
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Designing for humans not robots
tammielis
253
25k
A Tale of Four Properties
chriscoyier
160
23k
GraphQLとの向き合い方2022年版
quramy
49
14k
Become a Pro
speakerdeck
PRO
29
5.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Scaling GitHub
holman
463
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
How STYLIGHT went responsive
nonsquared
100
5.8k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Automating Front-end Workflow
addyosmani
1370
200k
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