The Go gopher was designed by Renée French.
The gopher stickers was made by Takuya Ueda.
Licensed under the Creative Commons 3.0 Attributions license.
これから始めるGo
tenntenn Conference 2022
2022年01月15日(土)
資料:https://tenn.in/conn22-keynote
動画:https://tenn.in/conn22-keynote-video
Slide 2
Slide 2 text
上田拓也
Go ビギナーズ
Go Conference
@tenntenn
tenntenn.dev
Google Developer Expert (Go)
一般社団法人 Gophers Japan 代表理事
Experts Team
Goの特徴 − 周辺ツールの充実 −
■ go toolとして標準/準標準で提供
■ サードパーティ製のツールも充実
■ IDEによらない独立したツールとして提供
13
go build ビルドを行うコマンド
go test xxxx_test.goに書かれたテストコードの実行
go doc, godoc ドキュメント生成
gofmt, goimports コードフォーマッター
go vet コードチェッカー
gopls Language Server Protocol (LSP) の実装
公式のチュートリアルで学ぶ
■ 豊富なチュートリアル群
● https://go.dev/doc/tutorial/
チュートリアル 説明
Getting started Hello, World
Create a module 複数パートから成る一通りのモジュール作成の流れを学べる
Accessing a relational database RDBを使った基礎
Developing a RESTful API with Go and Gin Ginを使ったRESTful APIの基礎
Getting started with generics Go1.18から入るジェネリスのチュートリアル
Getting started with fuzzing Go1.18から入るFuzzingのチュートリアル
A Tour of Go 文法の基礎などをインタラクティブに学ぶ
Slide 21
Slide 21 text
A Tour of Go
■ ブラウザ上で実行できるチュートリアル
● https://tour.golang.org
21
Slide 22
Slide 22 text
Shizuoka.goによる解説
■ A Tour of Goを動画で解説
● A Tour of Go 実装完了!
● YouTubeのプレイリスト
Slide 23
Slide 23 text
Play with Go
■ Web上でハンズオンを行う事ができる
● https://play-with-go.dev/
23
Slide 24
Slide 24 text
Go の最初の手順 by Microsoft
■ Microsoftが提供するGoのチュートリアル
● https://docs.microsoft.com/ja-jp/learn/paths/go-first-steps/
● Go の使用を開始する
● Go でのパッケージ、変数、関数の使用方法を理解する
● Go で制御フローを使用する
● Go のデータ型、構造体、配列、スライス、マップを使用する
● Go でのエラー処理とログ記録を実装する
● Go でメソッドとインターフェイスを使用する
● Go でプログラムを作成してテストする
各地のコミュニティで学ぶ
Sendai.go Okinawa.go Umeda.go
Fukuoka.go Shizuoka.go golang.tokyo
Women Who Go
Tokyo
Okayama.go
など...
Slide 31
Slide 31 text
Women Who Go
■ 女性とジェンダーマイノリティのGoコミュニティ
● https://womenwhogotokyo.github.io/
● 月に1回くらい集まって勉強会をしている
● Goの入門講座やもくもく会などをやっている
● Go Conferenceでは初学者向けのハンズオンを担当
コンパイルと実行
■ go buildコマンド
● コンパイルして実行可能ファイル(バイナリ)を生成
■ go runコマンド
● コンパイルから実行まで行う
$ go build main.go
$ go build .
$ go build pkgname
$ go run main.go
$ go run .
$ go run pkgname
ビルドが解決できない例
D: 1.0
go get D
1. パッケージDのインストール
D: 1.0
go get C
C: 1.8
D≧1.4
2. パッケージCのインストール
D: 1.6
go get -u D
C: 1.8
D≧1.4
3. パッケージDの更新
古
い
※CはDのバージョン1.4以上に依存
バ
グ
うまくビルドができない!
go modコマンド
■ go modコマンドのサブコマンド
go mod init
go mod init モジュール名
指定したモジュール名でgo.modファイルを作成する
モジュール名を省略するとGOPATHから推測する
go mod tidy
使用していないモジュールのgo.modからの削除
必要なモジュールのダウンロードとgo.modへの追加
go mod why 指定したパッケージがなぜ必要になったか表示
go mod vendor 依存するパッケージをvendor以下にコピーする
Slide 60
Slide 60 text
go installでCLIツールのインストール
■ Go1.16からgo installを使うようになった
● go installならバージョンを指定してインストールできる
○ latestで最新リリース版(なければ開発版)
○ v1.2.3のようにsemverで指定できる
○ ブランチでもOK(例@main)
● GOPATH/bin以下にインストールされる
○ 環境変数GOBINが設定されている場合はそこに入る
● go getは引き続きモジュールの取得に使用できる
# gpのインストール
$ go install github.com/tenntenn/goplayground/cmd/gp@latest