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

Goについて知ってもらう会

hoda
June 23, 2021

 Goについて知ってもらう会

hoda

June 23, 2021
Tweet

More Decks by hoda

Other Decks in Technology

Transcript

  1. Goについて知ってもらう会
    2021.6.22

    View Slide

  2. はじめに
    下記のような感じで3回くらいに分けて共有します!
    1. Goとは?Goの特徴とか ←今回シェアする 5~10minくらい
    2. Goのコードなど見つつ書き方とか雰囲気をシェア
    3. スクリプト言語と異なる機能・概念について
    - ポインタ
    - context
    - ゴルーチンとか

    View Slide

  3. 目次
    Goとは? Goの特徴
    1. Goが開発された背景
    2. Web業界におけるGoのトレンド
    3. Goの特徴(メリット)

    View Slide

  4. Goが開発された背景

    View Slide

  5. Goが開発された背景
    Google社内の課題を解決するために作られた
    課題: ソースコードの複雑さや肥大化
    - 2007年開発スタート、2009年にリリース
    - オープンソース
    - 2012年に正式バージョン(Go 1.0)リリース
    様々な企業、プロジェクトで利用されるようになった
    Go.dev(https://go.dev/)

    View Slide

  6. Web業界におけるGoのトレンド

    View Slide

  7. Web業界におけるGoのトレンド
    Stack Overflow 2020年のsurvey

    View Slide

  8. Web業界におけるGoのトレンド
    日本でGoを採用している企業
    - CyberAgent
    - DeNA
    - Hatena(mackerel)
    - Mercari
    - Wantedly
    - etc...
    Goを採用している企業は↓こちらで確認できる
    GoUsers
    https://github.com/golang/go/wiki/GoUsers

    View Slide

  9. Goの特徴(メリット)

    View Slide

  10. Goの特徴(メリット)
    - 静的型付け言語でありながら、気軽にかける
    静的型チェックやパフォーマンスの恩恵を受けつつも、動的型付け言語のよう
    な気軽さでコーディングができる
    - スタイル・コード整形
    公式のフォーマッターである`gofmt`で強制的に単一のスタイルに統一
    - 独自のスタイルのコードが乱立しない
    - コード規約などを議論する必要がない

    View Slide

  11. Goの特徴(メリット)
    - 豊富な標準ライブラリ
    - フォーマッター: `gofmt`, `goimports`
    - 静的解析ツール: `go vet`
    - リンター: `go lint`
    - テストコードの実行: `go test`
    `go get golang.org/x/tools/cmd/…`
    でまとめてインストールして使える
    その他、API(net/http), DB(database/sql) , etc…

    View Slide

  12. Goの特徴(メリット)
    - コンパイルすればどこでも動く
    `go build`コマンドでコンパイルすればどの環境でもプログラムを実行できる
    - 可搬性が高く、コンテナへのデプロイやCLIツールの開発に便利
    - コンパイル速度が早い

    View Slide

  13. まとめ
    - Google社内の課題解決のために作られた言語
    モノリス→マイクロサービス化
    複雑さの排除
    静的型付けと動的型付け言語、両方のメリットを享受
    - Web業界で広く浸透
    デファクトスタンダード的な、よく使われる技術になった
    (デファクトを使うのは大事。案件の獲得やノウハウの集約がしやすい)
    - 使いやすい
    - スタイル・コード整形のしやすさ
    - 豊富な標準ライブラリ
    - 環境を選ばない(シングルバイナリ)

    View Slide

  14. 参考
    - [Go.dev](https://go.dev/)
    - [GoUsers](https://github.com/golang/go/wiki/GoUsers)
    - [stackoverflow/survey/2020](https://insights.stackoverflow.com/survey/2020#t
    echnology-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)

    View Slide