éçºçšé©åœããŒã«ãšã¯ïŒ
éçºããŠãããšãããŸã«äœããããããžã§ã¯ãå ã§éçºè çšãéçšè çšã«ãã¹ãããŒã¿ãäœæããããDBãAPIã«ç¹ãã§CSVãExcelãåºãããããåããªãããŒã«ã倧éã«å¿ èŠã«ãªã£ãŠããŸãããïŒ é åžããŠä»ã®äººã«ã䜿ã£ãŠããã£ããããããªããŸãããïŒ
ãããéçºçšé©åœããŒã«1ã§ãã
ãããã£ãéçºçšé©åœããŒã«ãGoã§äœã£ãŠã¿ããæ¡å€äœéšãæªããªãã£ãã®ã§ã·ã§ã¢ããããšæããŸãã
ã©ããã£ãŠéçºçšé©åœããŒã«ãäœããïŒ
æ¢åãããžã§ã¯ãã«ãã®ãŸãŸGoã®ãããžã§ã¯ãã¬ã€ã¢ãŠããéããŠãããŸãã
å ·äœçã«ã¯ä»¥äžã®ãããªæãã§ãã
project-root-directory/
ãããžã§ã¯ãã®æ¢åãã¡ã€ã«
go.mod
go.sum
cmd/
ããŒã«1/
main.go
ããŒã«2/
main.go
internal/ (ãããã¯åããããããã£ã¬ã¯ããª)
(main.go ã«å
¥ããªãã£ãå
±éåŠçãªã©ã¯ããã«)
åºæ¬çã«ã¯å ¬åŒã®Goãããžã§ã¯ãã¬ã€ã¢ãŠããšåããã®ãæ¢åãããžã§ã¯ãã«ãã®ãŸãŸä¹ããŠããŸããŸããïŒãããã¯ããŒã«çšã«ç¬èªãããžã§ã¯ããåããŸãïŒ
å®éã«å§ããã«ãããã以äžã®ã³ãã³ãã§ãããžã§ã¯ããåæåããã°ãããžã§ã¯ããã¡ã€ã« (go.mod) ãèªåäœæã§ããŸãã
$ go mod init my-super-awesome-tools
ããšã¯ cmd/ããŒã«1/main.go ãªã©ã«ä»¥äžã®ãããªã³ãŒããæžããŠãåç
§ããããã±ãŒãžãå¢ãããå¿
èŠã«å¿ã㊠go mod tidy ïŒåŸè¿°ïŒ ãå®è¡ããŠããã°ããã§ãã
package main
import (
"fmt"
)
func main() {
fmt.Println("ç§ã®ç¹å¥ãªããŒã«ïŒ")
}
å®è¡ããéã¯ä»¥äžã§äžçºã§åãããŸãã
$ go run cmd/ããŒã«1/main.go
ç§ã®ç¹å¥ãªããŒã«ïŒ
GoããŒã¹ã®éçºçšé©åœããŒã«äœæã®äœéšãè¯ãã£ãç¹
go run path/to/main.go ã§ããŒã«ãããã«åã
ããŒã«ãåãã人ã«Goãã€ã³ã¹ããŒã«ããŠããã£ãŠããã°ã以äžã®ã³ãã³ãã ãã§ããŒã«ãOSãåããããã«åããŸãã
$ go run path/to/main.go
éåžžãPythonãªã©ã§éçºããŒã«ãäœã£ãå Žåãåããåã«äŸåããŠããã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ãªã©ãå¿
èŠã«ãªããŸãããGoã®å Žå㯠go run ã³ãã³ãã ãã§äŸåæ§ã®ããŠã³ããŒãããã³ã³ãã€ã«ãåäœãŸã§å
šéšãã£ãŠãããŸãã
ãããéåžžã«å€§ããã§ããã¡ãã£ãšããããŒã«ã䜿ãããã ãã«ãå©çšè ããšã«ç°å¢ç¹æã®ç°å¢æŽåã»ç°å¢åé¢ããŒã«ã®ç¿çã»äŸåæ§ã®ã€ã³ã¹ããŒã«ç®¡çã¯å€§å€ã ãšæããŸããç¹ã«äœæããæéã眮ããããŒã«ãä»åããªããªãçã®é«ãããšé«ãããšâŠâŠã
ãããGoã ãšåŸæ¹äºææ§ã倧äºã«ããŠããã®ã§ãåäœãããããã®Goã«ã€ããŠã¯äœãèããææ°çãå ¥ããŠãããã°ããäžãæè¿ã¯ Go Toolchains (åæ¹äºææ§) ã®ä»çµã¿ã§èªåçã«ããŒã«ã«ããäžã®ããŒãžã§ã³ã®Goãå¿ èŠãªå Žåã¯åæã«ã€ã³ã¹ããŒã«ããäžã§èµ·åããŠãããŸãããããã
Goãªãã¯ãã¹ã³ã³ãã€ã«ã§ãã
Goãªããææªã®å Žåãå©çšè ã«Goãã€ã³ã¹ããŒã«ããŠããããªããŠããåçš®ç°å¢ã®ãã€ããªãèªç±ã«åºåããŠé åžããããšãã§ããŸãã
# ç¹ã«WindowsãmacOSãæã£ãŠããªããŠãèªç±ã«å®è¡ãã¡ã€ã«ãäœæã§ããïŒïŒ
# Windows (AMD64)
$ GOOS=windows GOARCH=amd64 go build -o main-windows-amd64.exe main.go
# Linux (AMD64)
$ GOOS=linux GOARCH=amd64 go build -o main-linux-amd64 main.go
# macOS (Apple Silicon)
$ GOOS=darwin GOARCH=arm64 go build -o main-darwin-amd64 main.go
åºåããããã€ããªã¯ã·ã³ã°ã«ãã€ããªãšããŠåäœããåäœæã«å€éšã®ã©ã€ãã©ãª(*.dll, *.so ãªã©)ãå¿
èŠãšããªãã®ãå¬ãããšããã§ãããŸããéåžžã®åŠçãæžãéãã¯ããã°ã©ã ãç°å¢äŸåããããšããããŸããã
ãŸããCI/CDã§éçºçšé©åœããŒã«ã䜿ãããå ŽåãGoã§ããã°CI/CDçšã«ããŒã«ãDockerã€ã¡ãŒãžã«ããã®ããããŸã§èŠåŽããŸãããã€ã¡ãŒãžã®äžèº«ã¯ã»ãŒGoã®ã·ã³ã°ã«ãã€ããªã ããªã®ã§ããµã€ãºãå°ããã®ãå¬ãããšããã§ãã
ã¡ãªã¿ã«ããŒã«ã®ãªããžããªãã¢ã¯ã»ã¹å¯èœãªå Žæã«ããå Žåãããã©ã€ããŒãã§ãã¢ã¯ã»ã¹ææ®µããã¡ããšèšå®ããŠããå Žåã¯ãã€ã³ã¹ããŒã«ãã¹ãããããŠããŒã«ããããªãå®è¡ããããšãå¯èœã§ãã
# ãããªãå®è¡ïŒ
$ go run github.com/swaggo/swag/cmd/swag@latest
NAME:
swag - Automatically generate RESTful API documentation with Swagger 2.0 for Go.
USAGE:
swag [global options] command [command options] [arguments...]
...
ãµã³ãã«ã³ãŒããããã«åã ã äŸåæ§ç®¡çãæ¥œ
ããšãã°Goèšèªã«ãããYAMLã®å ¥åºåæ¹æ³ãåãããªãå Žåããããã§æ€çŽ¢ãããAIã«è³ªåãããšæããŸãããããããšä»¥äžã®ãããªã³ãŒãããµãžã§ã¹ãããâŠâŠ
package main
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/yaml.v3" // æšæºã§ã¯ãªãã©ã€ãã©ãªã玹ä»ãããïŒ
)
ã ãããèšèªã«ãã³ãã«ãããŠããªãæšæºã§ã¯ãªãã©ã€ãã©ãªã玹ä»ãããããšãšæããŸããïŒäžèšã§ã¯ gopkg.in/yaml.v3 ïŒ
ãããã£ãå Žåã§ãGoã§ã¯ go mod tidy ã®ã³ãã³ããå®è¡ããã ãã§åæã«ãœãŒã¹ã³ãŒãã«æžããŠããæªç¥ã®ããã±ãŒãžãã€ã³ã¹ããŒã«ïŒäŸåæ§ã®èšé²ãŸã§ãã£ãŠãããŸãã2
# gopkg.in/yaml.v3 ãã€ã³ã¹ããŒã« & go.mod/go.sum ã«èšé²ããŠããã
$ go mod tidy
äžèšã®äŸã ãšæªç¥ã®ããã±ãŒãžã¯1åã ãã§ãããã倧æµã®å Žåã¯è€æ°ããã®ã§ go mod tidy ã¯éåžžã«å©ãããŸãã
ãã«ããé©ãã»ã©éã
Goã®ãã«ãã¯é©ãã»ã©éãã§ããïŒâ» åäººã®ææ³ã§ãïŒ
ãã®ãããã§ go run path/to/main.go ã³ãã³ãã¯ã¹ã¯ãªããæèŠã§å®è¡ã§ããŸãã
åäœé床ãããããéã
Rustã®ããã«C/C++ã«å¹æµãããããçé (blazingly fast) ãšããæãã§ã¯ãããŸããããGoã¯åºæ¬çã«ã¯çŸåšäœ¿ãããŠããèšèªã®äžã§ããããéãæ¹ã ãšæããŸããå°ãªããšãã¹ã¯ãªããèšèªã«ã¯è² ããŸããã
éå±ãªèšèªãç®æããŠããã®ã§æªæ¥ã®ã¡ã³ããæããªã
Goã¯éå±ãè¯ããšããŠããçãã (?) èšèªã§ãã
Boring is good. Boring is stable. Boring means being able to focus on your work, not on whatâs different about Go. This post is about the important work we shipped in Go 1.21 to keep Go boring.
https://go.dev/blog/compat
Goã«ãããŠã¯ãèšèªã®ããŒãžã§ã³ã¢ããã¯åŸæ¹äºææ§ãéèŠãããŸãããèšèªèªäœããã£ãã«ãgoroutineãªã©ããã€ãã®é¢çœããã®ãé€ãã°éŠŽæã®ããæ§é äœã»ã¹ã©ã€ã¹ïŒãªã¹ãïŒã»ããªããã£ããªæœè±¡ãå¶åŸ¡æ§é ãããŒã¹ã«ãã¯ã©ã¹ããŒã¹ãªããžã§ã¯ãæåã§ããªããäŸå€ãç¶ç¶ãšãã£ãè€éãªå¶åŸ¡æ§é ããªãããšã©ãŒåŠçãšããã°ã²ããã error ãäžããäžã«ãããã ãããšããéå±ãªèšèªã§ãã
ãã£ãŠãã³ãŒããå¹³æã«æžãã»ããªããïŒæžãæã¯ããèŠåŽããŸããïŒåŸã ã¡ã³ãã倧å€ã«ãªãããšãå°ãªããšæãããŸãã3
Go以å€ã ãšéçºçšé©åœããŒã«ã«ã©ã®èšèªãéžã¹ã°ããã®ãïŒ
䌌ããããªçšéã§äœ¿ããããªèšèªãšç§ãªãã®åèŠãšææ³ãæžããŠãããŸãã
- Python
- æè¿ã®Unixç°å¢ãªãã»ãŒå ¥ã£ãŠããã®ã匷ã
- æšæºããã±ãŒãžã§è²ã ãªæ©èœããµããŒãããŠããã®ã匷ã
- åé¢ãPythonèªäœã®ããŒãžã§ã³ç®¡çïŒäŸåæ§ç®¡çã倧å€
- ïŒ2025/03/24ïŒ ããã«ã€ããŠã¯ uvã䜿ããšè¯ããããšããèšäº ãæžããŸãã
- ãããããããããŒã«ãè±å¯ãããŠã©ãã䜿ãã°ããã®ãããããªã
- PythonäŸåé¢ä¿ã®æ¬åœã®å€§å€ãã¯ãããžã§ã¯ããæŸçœ®ããåŸã«ãã£ãŠãã
- Perl
- ã¯ã³ã©ã€ããŒã§ã¯ã³ãã€ã³ãã ãã§äœ¿ãããèšèªã ã倧ããªãã®ã¯äœããããªã
- Perl Mongerèªäœãçµ¶æ» å±æ§çš®
- Groovy (with Gradle)
-
build.gradleã®åäžãã¡ã€ã«ã§ã¹ã¯ãªããå®çŸ©ãäŸåæ§ç®¡çãå šãŠå®äºããã®ã¯è¯ã- Gradleç±æ¥ã®ã¿ã¹ã¯ã©ã³ãã£ãŒæ©èœã»ãã¡ã€ã«ã»ã¬ã¯ã¿ãªã©ãæšæºã§åãã£ãŠãã
- Grape ãäžçæžåœäœ¿ãããGradleã䜿ã£ãã»ãã䟿å©ã ãšæã
- Javaã®ç®¡çãé¢åãç¹ã«JDKãäžãããšåããªããªã
- ç«ã¡äžãããé ã
-
- Node.js / Bun
- JSãããžã§ã¯ãå
ã§äœ¿ããªãã¢ãª
- or äŸåæ§ãªãã®æ¬åœã«å°ããªfetchãããã¹ã¯ãªãããšããæžããªãã¢ãª
- ãã€ãã£ãã³ã³ãã€ã«ã絡ãã©ã€ãã©ãª(gyp)ããããšé¢å
- JSãããžã§ã¯ãå
ã§äœ¿ããªãã¢ãª
- Deno
- 1ãã¡ã€ã«ã§å®å
šã«äŸåæ§ãŸã§æå®ã§ããã®ã§é©åœããŒã«äœæãšããé¢ã§ã¯ããã³ã·ã£ã«ããã
- 察å¿ããã±ãŒãžãå°ãªãã®ãé£ç¹ã
- ããã©ã«ãã®ã»ãã¥ãªãã£ã匷ãã®ãé¢åãã
- 1ãã¡ã€ã«ã§å®å
šã«äŸåæ§ãŸã§æå®ã§ããã®ã§é©åœããŒã«äœæãšããé¢ã§ã¯ããã³ã·ã£ã«ããã
- Swift
- ã¡ãã£ãšèª¿ã¹ãŠã¿ãããæ¡å€ãããããããªã
- 1ãã¡ã€ã«ã ãã§äŸåæ§æå®ãå šãŠå®äºãã
- Apple端æ«ä»¥å€ãžã®å¯æ¬æ§ãã©ããã¯åãããªã
- ã¡ãã£ãšèª¿ã¹ãŠã¿ãããæ¡å€ãããããããªã
ïŒ2025/03/24 远èšïŒPythonã«ã€ããŠã¯uvã䜿ããšè¯ãããã§ãã以äžã«èšäºãæžããŸããã®ã§åèã«ããŠãã ããã
ãŸãšã
éçºçšé©åœããŒã«ãšããçšéãããŒã¹ã«Goèšèªã®è¯ãã玹ä»ããŠããŸãããç§ãå®éã«éçºãããžã§ã¯ãã§ã®åæããŒã«ã«Goã䜿ã£ãŠããŸãã
éçºçšé©åœããŒã«ãäœãããšæã£ãéã«ãGoãåè£ã«ããŠã¿ãã®ããããšæããŸãã
-
äžéšã®äººã¯æ²»å ·ãšåŒãã§ãããããããŸãã â©
-
Goã«ã¯JSã§ãã
package.json/package-lock.jsonã«çžåœããgo.mod/go.sumããããäžæŠã€ã³ã¹ããŒã«ãããäŸåæ§ã¯ã©ãã§ãåçŸããããšãã§ããŸãã â© -
ãšã¯ãããæè¿ã¯GitHub Copilotãªã©ã®AIå ¥åãéå±ãªå ¥åãå²ãšä»£æ¿ããŠãããã®ã§ãGoã®ãããªéå±ãªèšèªã«ã¯ããæä»£ã«ãªããŸãã â©