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

これからはじめるGo - tenntenn Conference 2022

これからはじめるGo - tenntenn Conference 2022

この資料はtenntenn Conference 2022のキーノートにて発表を行った際に用いた資料です。

■ tenntenn Conferenceとは
tenntenn Conferenceはtenntennが主催し、そしてすべてのセッションがtenntennによる登壇のカンファレンスです。

イベントページ:https://tenntenn.connpass.com/event/226562/
ハッシュタグ:#tennconn
資料(Google スライド):https://tenn.in/conn22-keynote
動画:https://tenn.in/conn22-keynote-video
再生リスト:https://tenn.in/conn22-videolist

■ 内容
プログラミング言語Go(Go言語)の概要から学び方、開発環境の構築方法まで2022年現在で最新の情報をお話しています。Goがどのような企業や領域で活用されているのか、どういう教材があるのかなどを解析しています。インターネットで見かける古い情報についても言及していますので、インターネットにある記事の何が古い情報で何が新しい情報なのか知ることができます。

■ 目次
・イントロダクション
・Goとは
・Goを学ぶ
・開発環境の構築
・Go Modules

■ 登壇者&主催者

・名前:tenntenn / 上田拓也
・HP:https://tenntenn.dev
・Twitter:https://twitter.com/tenntenn

メルカリ/メルペイ所属。バックエンドエンジニアとして日々Goを書いている。Google Developer Expert (Go)。一般社団法人Gophers Japan代表。Go Conference主催者。大学時代にGoに出会い、それ以来のめり込む。人類をGopherにしたいと考え、Goの普及に取り組んでいる。複数社でGoに関する技術アドバイザーをしている。大学においてGoに関する集中講義も担当している。マスコットのGopherの絵を描くのも好き。

■ Gopher道場 自習室

https://gopherdojo.org/studyroom/

Gopher道場とは、実践的なGoを体系的に学べる場です。
Gopher道場 自習室では、以下のようなコンテンツや学びの場を提供します。

・Gopher道場の講義を録画した動画(10時間以上分)
・Slackにおける受講者同士のコミュニティ
・Gopher道場卒業生による課題のレビュー(ボランティアでご協力頂いているのでベストエフォートです)

■ Meety(カジュアル面談)

・ソフトウェアエンジニアの地方移住ってどうなの?:https://meety.net/matches/jyZgDkEEwmMk
・メルカリグループにおけるGoの使いどころ:https://meety.net/matches/LbeVbIACxLqk
・地方からの技術コミュニティへの貢献:https://meety.net/matches/gVeMtImLkWJE

■ お仕事の依頼について

副業にて技術顧問やアドバイザーなどを行っています。過去の実績や問い合わせフォームは以下のURLからご確認ください。
https://tenntenn.dev/ja/job/

tenntenn - Takuya Ueda

January 15, 2022
Tweet

More Decks by tenntenn - Takuya Ueda

Other Decks in Programming

Transcript

  1. 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

    View full-size slide

  2. 上田拓也
    Go ビギナーズ

    Go Conference

    @tenntenn
    tenntenn.dev
    Google Developer Expert (Go)
    一般社団法人 Gophers Japan 代表理事
    Experts Team

    View full-size slide

  3. 人類Gopher化計画
    Gopher = Goエンジニア、Goのマスコットキャラクター
    https://tenn.in/gopherize

    View full-size slide

  4. 発表内容
    ■ 2022年にGoを始める人向けの最新情報
    ● 最新版の開発環境構築方法
    ● 重要なドキュメントや記事
    ● よく勘違いされやすい古い情報
    ■ すでにGoを学習している人向けの情報
    ● 公式サイトや公式ドキュメント情報の整理
    ● Go Modulesなど何となく理解している情報の整理
    参考:Goとは?特徴や仕事に使うことを目指すための勉強法などを解説

    View full-size slide

  5. Goとは?
    ■ Googleが開発したプログラミング言語
    ● 2009年11月に最初のバージョンをオープンソースで公開
    ○ 2012年3月に正式バージョンであるGo1.0を公開
    ○ 2022年1月現在の最新バージョンはGo1.17
    ○ 半年毎のペースでバージョンアップ(参考)
    ● Robert Griesemer、Rob Pike、Ken Thompsonによって設計された
    ■ 特徴
    ● 強力でシンプルな言語設計と文法
    ● 並行プログラミング
    ● 豊富な標準ライブラリ群
    ● 周辺ツールの充実
    ● シングルバイナリ・クロスコンパイル
    6

    View full-size slide

  6. Goが開発された理由
    ■ Google内の課題を解決するために開発された
    ● 開発速度の低下
    ○ 超巨大なコードベース
    ○ 複雑な依存関係
    ● マルチコア時代のシステム言語
    ○ 並行処理とガベージコレクタを同時に採用
    ● 軽量プログラミング言語(LL, Light weight Language)の盛り上がり
    ○ 静的型付け言語だとコンパイル時にエラーが発見できる
    ○ 動的型付け言語だと書きやすい
    ○ いいところ取りの書きやすい静的型付け言語がない
    ● 静的解析がしやすい言語
    ○ 言語設計のレベルで静的解析しやすい言語を目指した
    7
    参考:Go at Google: Language Design in the Service of Software Engineering

    View full-size slide

  7. Go1の後方互換
    ■ Go1の間は言語の後方互換が保たれる
    ● https://golang.org/doc/go1compat
    ● 言語仕様に破壊的変更が加わらない
    ● 一部例外はある
    ○ セキュリティ、重大なバグなど
    ● Go1.0で書いたコードはGo1.16でもビルドできる
    ○ 場合によってはgo fixやgo fmtを掛ける必要がある
    ● Go1を対象に執筆された書籍やブログは言語仕様に関しては
    互換が保たれているためGo1.xの間は有効である
    ○ ランタイムやgo toolに関しては変更される可能性あり

    View full-size slide

  8. Goの開発プロセスとGo2
    ■ Goの開発プロセス
    ● 実際にGoを使った中で問題を見つける
    ● 解決策をコミュニティに提案し議論する
    ● 実装して評価する
    ● 問題なければリリースされる
    ■ Go2とは?
    ● https://blog.golang.org/toward-go2
    ● 明確なターゲットがあるわけではない
    ● Go1.xとして開発されていき、Go1の後方互換が
    保てなくなるような変更を加える必要になったら
    Go2としてリリースされる
    ● 例えば、必ずしもジェネリクスがGo2でリリースされるわけではない
    ○ ジェネリクスは早くてGo1.18でリリースされる
    Goの開発プロセス

    View full-size slide

  9. Goの特徴 − 強力でシンプルな言語設計と文法 −
    ■ スクリプト言語の書きやすさ
    ● 冗長な記述は必要ない
    ■ 型のある言語の厳密さ
    ● 曖昧な記述はできない
    ■ 考えられたシンプルさ
    ● 機能を増やすことで言語を拡張していくことはしない
    10
    Goに入ってはGoに従え
    = 言語の思想を理解しよう

    View full-size slide

  10. Goの特徴 − 並行プログラミング −
    ■ ゴールーチン
    ● 軽量なスレッドに近いもの
    ● goキーワードをつけて関数呼び出し
    ■ チャネル
    ● ゴールーチン間のデータのやり取り
    ● 安全にデータをやり取りできる
    11
    チャネル
    ゴールーチン
    A
    ゴールーチン
    B
    データ
    データ
    // 関数fを別のゴールーチンで呼び出す
    go f()

    View full-size slide

  11. Goの特徴 − 豊富な標準ライブラリ −
    ■ 標準ライブラリ一覧
     https://golang.org/pkg/
    12
    fmt 書式に関する処理など
    net/http HTTPサーバなど
    archive, compress zipやgzipなど
    encoding JSON, XML, CSVなど
    html/template HTMLテンプレート
    os, path/filepath ファイル操作など

    View full-size slide

  12. Goの特徴 − 周辺ツールの充実 −
    ■ go toolとして標準/準標準で提供
    ■ サードパーティ製のツールも充実
    ■ IDEによらない独立したツールとして提供
    13
    go build ビルドを行うコマンド
    go test xxxx_test.goに書かれたテストコードの実行
    go doc, godoc ドキュメント生成
    gofmt, goimports コードフォーマッター
    go vet コードチェッカー
    gopls Language Server Protocol (LSP) の実装

    View full-size slide

  13. Goの特徴 − シングルバイナリ・クロスコンパイル −
    ■ シングルバイナリになる
    ● コンパイルするとデフォルトでは単一の実行可能ファイルになる
    ● 動作環境を特別に用意しなくてもよい
    ■ クロスコンパイルできる
    ● 開発環境とは違うOSやアーキテクチャ向けのバイナリが作れる
    ● 環境変数のGOOSとGOARCHを指定する
     
    14
    # Windows(32ビット)向けにコンパイル
    $ GOOS=windows GOARCH=386 go build
    # Linux(64ビット)向けにコンパイル
    $ GOOS=linux GOARCH=amd64 go build
    ※ go build はGoのソースコードをビルドするコマンド

    View full-size slide

  14. Goが活用できる領域

    View full-size slide

  15. Goの利用状況 16
    引用元:https://go.dev/blog/survey2020-results
    ■ 76%が職場でGoを使用
    ● 66%がGoは会社の成功に不可欠
    ■ 76%が5ヶ月でバージョンアップしてる
    ■ 主にAPI、CLI、Web、DevOpsなどに利用
    ● 2019年と傾向は変わらず

    View full-size slide

  16. Goで開発されている著名なOSS
    ■ クラウド関連のOSSが多い
    ● Docker
    ● Kubernetes
    ● gVisor

    View full-size slide

  17. Goを製品開発に利用している企業例
    ■ 海外
    ● PayPal
    ● American Express
    ● セールスフォース
    ● Netflix
    ● Uber
    ● Twitter
    ● Dropbox
    ■ 日本
    ● メルカリ・メルペイ
    ● サイバーエージェント
    ● DeNA
    ● エウレカ
    ● グノシー

    View full-size slide

  18. 公式のチュートリアルで学ぶ
    ■ 豊富なチュートリアル群
    ● 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 文法の基礎などをインタラクティブに学ぶ

    View full-size slide

  19. A Tour of Go
    ■ ブラウザ上で実行できるチュートリアル
    ● https://tour.golang.org
    21

    View full-size slide

  20. Shizuoka.goによる解説
    ■ A Tour of Goを動画で解説
    ● A Tour of Go 実装完了!
    ● YouTubeのプレイリスト

    View full-size slide

  21. Play with Go
    ■ Web上でハンズオンを行う事ができる
    ● https://play-with-go.dev/
    23

    View full-size slide

  22. Go の最初の手順 by Microsoft
    ■ Microsoftが提供するGoのチュートリアル
    ● https://docs.microsoft.com/ja-jp/learn/paths/go-first-steps/
    ● Go の使用を開始する
    ● Go でのパッケージ、変数、関数の使用方法を理解する
    ● Go で制御フローを使用する
    ● Go のデータ型、構造体、配列、スライス、マップを使用する
    ● Go でのエラー処理とログ記録を実装する
    ● Go でメソッドとインターフェイスを使用する
    ● Go でプログラムを作成してテストする

    View full-size slide

  23. プログラミング言語Go完全入門
    ■ 全15章からなるGoの入門教材
    ● http://tenn.in/go
    ● https://engineering.mercari.com/blog/entry/2020-03-17-120137/
    ● https://engineering.mercari.com/blog/entry/goforbeginners/
    ■ 目次
    1. Goに触れる
    2. 基本構文
    3. 関数と型
    4. パッケージ
    5. コマンドラインツール
    6. 抽象化
    7. エラー処理
    8. テストとテスタビリティ
    9. ゴールーチンとチャネル
    10. HTTPサーバとクライアント
    11. データベース
    12. テキスト処理
    13. リフレクション
    14. 静的解析とコード生成
    15. ジェネリクス(型パラメタ)

    View full-size slide

  24. Gopher道場 自習室
    ■ Gopher道場の動画資料を誰でも閲覧できる
    ● https://gopherdojo.org/studyroom
    ● Gopher道場 Slackで参加者同士コミュニケーションが取れる

    View full-size slide

  25. Goのハンズオン
    ■ ガチャを作ろう
    ● 法政大学の集中講義で用いられている資料
    ■ 家計簿アプリを作ろう
    ● コマンドラインツールからWebアプリ作成までを体験できる
    ■ 分かるゴールーチンとチャネル
    ● トレーシングをしながら並行処理を学ぶ
    ■ テストを書こう
    ● テストの書き方やテクニックを学ぶ
    ■ ゲストブックを作ろう
    ● Google App Engineを使ったWebアプリ作成を学ぶ
    ■ コマンドラインツールを作ろう
    ● 画像変換を行うコマンドラインツールを作る

    View full-size slide

  26. 公式ドキュメントで学ぶ
    ■ 公式ドキュメント
    ● いろいろあるので目を通すと良い
    ■ 言語仕様
    ● コンパクトな言語仕様なので簡単に読める
    ■ Go Code Review Comments (日本語訳)
    ● Goらしい書き方が学べる
    ■ Effective Go
    ● Code Review Commentsより詳しい内容
    ■ パッケージドキュメント
    ● ドキュメントをしっかり読む
    ■ 公式ブログ
    ● 最新の情報が記載される

    View full-size slide

  27. 書籍で学ぶ
    New!!

    View full-size slide

  28. 各地のコミュニティで学ぶ
    Sendai.go Okinawa.go Umeda.go
    Fukuoka.go Shizuoka.go golang.tokyo
    Women Who Go
    Tokyo
    Okayama.go
    など...

    View full-size slide

  29. Women Who Go
    ■ 女性とジェンダーマイノリティのGoコミュニティ
    ● https://womenwhogotokyo.github.io/
    ● 月に1回くらい集まって勉強会をしている
    ● Goの入門講座やもくもく会などをやっている
    ● Go Conferenceでは初学者向けのハンズオンを担当

    View full-size slide

  30. Student Go
    ■ 学生のGoコミュニティ
    ● Slackでやりとりしている
    ○ 招待フォーム
    ● 学生同士のやりとり
    ● 各社のGoエンジニアへのGoの質問
    32

    View full-size slide

  31. 海外カンファレンスで学ぶ
    ■ GopherCon
    ● https://www.gophercon.com/
    ● 世界最大のGoのカンファレンス
    ● 世界各地から2000人以上のGoのエンジニアがあつまる
    ● スピーカーは渡航費等が無料になる
    ■ その他のカンファレンス
    ● https://github.com/golang/go/wiki/Conferences
    33

    View full-size slide

  32. インターンシップで学ぶ
    ■ Go1.18が学べる短期インターシップ(5日間)
    ● https://mercan.mercari.com/articles/31914/
    ● 1/20まで応募可
    ● 学生向け
    ● 時給:2,500円

    View full-size slide

  33. 開発環境の構築

    View full-size slide

  34. 開発に必要なもの
    ■ Goのツールチェイン(開発環境)
    ● Goのソースコードを機械語に翻訳するためのコンパイラなど
    ● 標準パッケージや開発に便利なツール類も含まれる
    ■ エディタ・統合開発環境(IDE)
    ● Goのソースコードを編集するために必要
    ● 好みによって好きなエディタやIDEを選ぶ
    ■ Git
    ● ソースコードのバージョン管理ツール
    ● go toolの中で使われている
    36

    View full-size slide

  35. Gitのインストール
    ■ macOS
    ● ターミナルでgitと打てばインストールが開始される
    ● brew install git でもインストールできる
    ■ Windows
    ● Git for Windowsのインストールの仕方
    ● ターミナルはGitBashを使った方が干渉しない

    View full-size slide

  36. Goの開発環境のインストール
    ■ 公式サイトからダウンロード
    ● インストーラーなどで簡単にインストールできる
    38

    View full-size slide

  37. ◯◯envは必要か?
    ■ 複数のバージョンが共存できる
    ● 公式の方法だから謎のバグに悩まなくていい
    ○ https://golang.org/doc/manage-install#installing-multiple
    ● 環境変数のPATHを通すだけで十分
    # Go1.16.1をインストールする
    $ go install golang.org/dl/go1.16.1@latest
    $ go1.16.1 download

    View full-size slide

  38. GOPATHとGOROOTの設定は?
    ■ 特に理由がなければ不要
    ● GOPATHはデフォルト値がある
    ● GOROOTはgoコマンドが知っている
    ● Go Modulesを使う前提なのでGOPATHのことは忘れても良い
    ○ なくなった訳ではないけど意識しなくてよい
    ● 環境変数はgo envコマンドで取得できる
    ○ 環境変数として設定されていないものはデフォルト値
    ■ 古い情報を参考にしないようにしよう
    ● Go1.11からGo Modulesが利用されるようになりました
    ● それ以前の情報はあまり参考にしないようにしよう
    ● 公式ドキュメントを翻訳サービスで翻訳しながら読むのがオススメ

    View full-size slide

  39. コンパイルと実行
    ■ go buildコマンド
    ● コンパイルして実行可能ファイル(バイナリ)を生成
    ■ go runコマンド
    ● コンパイルから実行まで行う
    $ go build main.go
    $ go build .
    $ go build pkgname
    $ go run main.go
    $ go run .
    $ go run pkgname

    View full-size slide

  40. よく使われるエディタとIDE
    ■ この他にもたくさんある
    42

    View full-size slide

  41. GoLand
    ■ JetBrains製のGoのIDE
    ● https://www.jetbrains.com/go/
    ● 多くのGopherが使っている
    ● 補完が高速
    ● インタフェース実装へのジャンプ
    ● リファクタリング機能
    ● デバッガ
    ● 有料
    ● 条件付きの無料プランもある
    ○ 学生は無料!
    43

    View full-size slide

  42. Visual Studio Code(VS Code)
    ■ マイクロソフトが開発しているエディタ
    ● Windows、Linux、macOSで動く
    ● 無料で使える
    ● .goファイルを開こうとするとGo拡張をインストールするか聞く
    ● Go拡張はGoの公式プロジェクト
    ○ https://blog.golang.org/vscode-go
    ● Live Shareが便利
    ● vscode.devではプラグインが動かない
    44

    View full-size slide

  43. Go1.0以前の話
    ■ Makefileを使っていた
    ● 6g(コンパイラ)や6l(リンカ)を使ってビルド
    ● サンプルのMakefileが付いていてそれを利用していた
    ● 依存関係はMakefileの中にかかれていた
    ● gobuildというラッパーも存在していた
    参考:https://ymotongpoo.hatenablog.com/entry/2015/10/13/104247

    View full-size slide

  44. goinstallの登場
    ■ 2010年2月に登場
    ■ GitHubやBitbucketからダウンロードして配置する
    ■ Makefileほどの柔軟性はないが利便性が向上
    ■ インポートパスのルールの確立
    ● ソースコードの中にすべての依存関係が記述される
    ● go vetなどの静的解析ツールが簡単につくれるようになった
    ■ 2012年2月のGo1.0リリースでgo getに

    View full-size slide

  45. go getの登場で解決したこと
    ■ 簡単にビルドができるようになった
    ■ 作ったものを簡単に公開・再利用できるようになった
    ● 現在のGoのコミュニティを形成する上で重要なファクター
    ● go getすることで簡単に他の人が作ったパッケージを利用できる
    ■ ビルドシステムを意識しなくてよい
    ● 6gや6lなどを気にしなくてよい
    ● 依存関係の解決方法などは勝手にやってくれる

    View full-size slide

  46. go getで解決できなかったこと
    ■ バージョン付けとAPIの安定性
    ● バージョン付けができない
    ● アップデートによって何が変わるのかユーザに提示できない
    ● gopkg.inなどの登場
    ■ ベンダリングとビルドの再現可能性
    ● ビルドの再現性がとれない
    ● 取得時に常に最新を見てしまうこと
    ● godep、glide、GBなどの登場
    ● ベンダリングの対応(Go1.5以上)

    View full-size slide

  47. ベンダリング
    ■ ライブラリのベンダリング
    ● vendor以下に置くとimportで優先される
    ● バージョン指定はできない
    $ tree .
    main.go
    vendor
    └── github.com
    └── mitchellh
    └── cli

    View full-size slide

  48. ビルドが解決できない例
    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以上に依存


    うまくビルドができない!

    View full-size slide

  49. バージョン管理ツールの登場
    ■ サードパーティ製のツール類が登場し始める
    ● GB
    ○ https://getgb.io/
    ○ プロジェクトベースのビルドツール
    ● glide
    ○ https://github.com/Masterminds/glide
    ○ Goコミュニティで多く使われていたパッケージ管理ツール
    参考:https://github.com/golang/go/wiki/PackageManagementTools
    Goコミュニティで標準なものが
    必要になってきた

    View full-size slide

  50. depの登場
    ■ 公式によるバージョン管理の導入の実験
    ● GopherCon 2016のHack Dayで議論が行われた
    ● そこからdepが登場した
    ● https://github.com/golang/dep
    ■ The New Era of Go Package Management
    ● GopherCon 2017においての発表
    ● depのやっていきを発表
    ● semverの推奨
    depはgoツールに
    直接導入されるものではなかった

    View full-size slide

  51. そしてGo Modulesへ
    ■ Go Modulesの特徴
    ● Import Compatibility Rule
    ● Minimal Version Selection
    ● モジュールという単位でバージョン管理
    参考:Go Modules Reference

    View full-size slide

  52. Import Compatibility Rule
    ■ importパスが同じ場合は後方互換性を維持する
    ● 後方互換性が取れない場合はインポートパスを変える
    import "github.com/tenntenn/hoge"
    import hoge "github.com/tenntenn/hoge/v2"
    後方互換性が担保できない場合

    View full-size slide

  53. Minimal Version Selection
    ■ 最小バージョンの選択
    ● 選択できるバージョンのうち最も古いバージョンを選択
    ● どんどんバージョンアップされても常に同じ(=古い)ものを使う
    ● 特定のバージョンを指定すれば新しいものを使うことはできる
    ● 依存モジュールの下限だけ指定することによって、一意にビルドに使用す
    るバージョンが特定できる

    View full-size slide

  54. モジュール
    ■ バージョン付けを行う単位
    ● go.modファイルを使って依存モジュールを記述
    ● バージョンはsemverで記述する
    ● 特定のコミットも指定できる
    // My hello, world.
    module "rsc.io/hello"
    require (
    "golang.org/x/text" v0.0.0-20180208041248-4e4a3210bb54
    "rsc.io/quote" v1.5.2
    )
    モジュール名
    依存しているモジュール
    依存しているモジュールのバージョン
    参考:go.mod file reference

    View full-size slide

  55. セマンティックバージョンニング
    ■ バージョンの付け方のルール
    ● semverと略される
    ● v0.0.2やv1.1.1などと表記する
    ■ バージョンのあげ方
    ● 互換が崩れる場合はメジャーバージョン(例:v1.2.3 → v2.0.0)
    ● 機能追加の場合はマイナーバージョン(例:v1.2.3 → v1.3.0)
    ● バグ修正の場合はパッチバージョン(例:v1.2.3 → v1.2.4)
    X.Y.Z
    メジャーバージョン
    マイナーバージョン
    パッチバージョン
    参考:https://semver.org/lang/ja/

    View full-size slide

  56. 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以下にコピーする

    View full-size slide

  57. 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

    View full-size slide

  58. まとめ
    ■ Goを始めよう
    ● 始めやすい言語
    ● いろんな企業が採用している
    ■ 公式ドキュメントを読もう
    ● ブログもいいけど、公式ドキュメントを読もう
    ● 翻訳サービスで翻訳すれば英語も怖くない

    View full-size slide