Goについて知ってもらう会2021.6.22
View Slide
はじめに下記のような感じで3回くらいに分けて共有します!1. Goとは?Goの特徴とか ←今回シェアする 5~10minくらい2. Goのコードなど見つつ書き方とか雰囲気をシェア3. スクリプト言語と異なる機能・概念について- ポインタ- context- ゴルーチンとか
目次Goとは? Goの特徴1. Goが開発された背景2. Web業界におけるGoのトレンド3. Goの特徴(メリット)
Goが開発された背景
Goが開発された背景Google社内の課題を解決するために作られた課題: ソースコードの複雑さや肥大化- 2007年開発スタート、2009年にリリース- オープンソース- 2012年に正式バージョン(Go 1.0)リリース様々な企業、プロジェクトで利用されるようになったGo.dev(https://go.dev/)
Web業界におけるGoのトレンド
Web業界におけるGoのトレンドStack Overflow 2020年のsurvey
Web業界におけるGoのトレンド日本でGoを採用している企業- CyberAgent- DeNA- Hatena(mackerel)- Mercari- Wantedly- etc...Goを採用している企業は↓こちらで確認できるGoUsershttps://github.com/golang/go/wiki/GoUsers
Goの特徴(メリット)
Goの特徴(メリット)- 静的型付け言語でありながら、気軽にかける静的型チェックやパフォーマンスの恩恵を受けつつも、動的型付け言語のような気軽さでコーディングができる- スタイル・コード整形公式のフォーマッターである`gofmt`で強制的に単一のスタイルに統一- 独自のスタイルのコードが乱立しない- コード規約などを議論する必要がない
Goの特徴(メリット)- 豊富な標準ライブラリ- フォーマッター: `gofmt`, `goimports`- 静的解析ツール: `go vet`- リンター: `go lint`- テストコードの実行: `go test``go get golang.org/x/tools/cmd/…`でまとめてインストールして使えるその他、API(net/http), DB(database/sql) , etc…
Goの特徴(メリット)- コンパイルすればどこでも動く`go build`コマンドでコンパイルすればどの環境でもプログラムを実行できる- 可搬性が高く、コンテナへのデプロイやCLIツールの開発に便利- コンパイル速度が早い
まとめ- Google社内の課題解決のために作られた言語モノリス→マイクロサービス化複雑さの排除静的型付けと動的型付け言語、両方のメリットを享受- Web業界で広く浸透デファクトスタンダード的な、よく使われる技術になった(デファクトを使うのは大事。案件の獲得やノウハウの集約がしやすい)- 使いやすい- スタイル・コード整形のしやすさ- 豊富な標準ライブラリ- 環境を選ばない(シングルバイナリ)
参考- [Go.dev](https://go.dev/)- [GoUsers](https://github.com/golang/go/wiki/GoUsers)- [stackoverflow/survey/2020](https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-dreaded)- [みんなのGo言語](https://gihyo.jp/book/2019/978-4-297-10727-7)- [go starter book](https://booth.pm/ja/items/1920507)