Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【Go 1.24】ツールディレクティブで楽々CLI管理

Avatar for imsugeno imsugeno
April 13, 2025
650

【Go 1.24】ツールディレクティブで楽々CLI管理

Avatar for imsugeno

imsugeno

April 13, 2025

Transcript

  1. Copyright © Canly, Inc. All rights reserved. 自己紹介 菅野 一総

    imsugeno 略歴 - 東京都立大学 - 診療放射線技師(国家資格)を取得 - 東京都立大学大学院 - (株)メディアドゥ - (株)カンリー ← イマココ 3
  2. Copyright © Canly, Inc. All rights reserved. カンリーカスタムシリーズ カンリーとのデータ連携を可能とするプロダクト群を開発しています •

    外部公開API • CSV入出力 • 他社SaaS連携 開発体制 Member: EM(1) / TL(1: me) / Engineer(2) / QA(1) / PdM(1) / Designer(1) / Devin(new!) TechStack: Go / TypeScript(Next.js) / AWS / Terraform / GitHub Actions / Cursor / CodeRabbit 4
  3. Copyright © Canly, Inc. All rights reserved. Go 1.24以前までの CLI管理

    GoプロジェクトにおいてGo製のCLIツールを使うことは多々ある (コード生成:sqlc/gen/gomockなど) これまでのCLI管理 1. tools.go(ツールインストール用ファイル)を作成する方法 2. Makefileなどの中でバージョンを指定する方法 6
  4. Copyright © Canly, Inc. All rights reserved. Go 1.24以前までの CLI管理

    😢これまでのCLI管理のつらみ 1. tools.go(ツールインストール用ファイル)を作成する方法 a. 管理ファイルが増える b. 場合によってはLinterに怒られたりする 2. Makefileなどの中でバージョンを指定する方法 a. バージョン管理がgo.mod以外に散らばる b. DependencyBotなどでカスタムが必要 (そこそこめんどい)(動作不安定) 9
  5. Copyright © Canly, Inc. All rights reserved. Go 1.24におけるCLI管理 go.modにtool

    directiveが追加! • tools.goなどの余計な管理ファイルが不要に • Makefile等に記載していたgo install文も不要に CLIツールのバージョン管理方法に頭を使わずスッキリ片付けられる ✨ 10
  6. Copyright © Canly, Inc. All rights reserved. Go 1.24におけるCLI管理 移行方法

    go get -toolコマンドでツールダウンロード 11
  7. Copyright © Canly, Inc. All rights reserved. 実際にやってみて • CLI管理をgo.modに移行できた

    ◦ ローカル開発用のDevContainer ◦ GitHub Actionsで実行するCI環境 • DevContainerにおいてVSCodeの機能から直接コマンド実行されているものまでは移行 できなかった($GOBINにパスを通せばいけるのかも) • バックエンドのリポジトリがそこそこ多く面倒だった ◦ Devinにやらせたら上手く行った 15