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

Go の並行処理を体験してみよう

Go の並行処理を体験してみよう

Go Live Coding Session + LT #gdgtokyo
https://gdg-tokyo.connpass.com/event/170594/

michiru shirakawa

March 27, 2020
Tweet

More Decks by michiru shirakawa

Other Decks in Programming

Transcript

  1. Go の並行処理を体験してみよう
    Go Live Coding Session, MAR 27 2020
    Michiru Shirakawa
    Women Who Go Tokyo
    @micchiebear

    View Slide

  2. Women Who Go
    Women Who Go Tokyo
    サンフランシスコ発祥の、女性やジェンダーマイノリ
    ティの方々が集まる Go 言語のコミュニティです。
    https://www.womenwhogo.org

    View Slide

  3. Women Who Go Tokyo
    Women Who Go Tokyo
    2016年6月、日本で初めての Women Who Go の
    コミュニティとして設立されました。
    毎月1回集まって はじめての方でも楽しく学びやす
    く をモットーに Go を楽しんでいます。
    https://womenwhogotokyo.github.io

    View Slide

  4. Today’s Staff
    Women Who Go Tokyo
    @micchiebear @mikkegt @mikisslv09
    三度の飯と同じくらい好きな Go をもっと多くの人に
    も楽しんでもらいたくて、
    Go コミュニティの運営に携
    わっています。 その他、Vim や業務設計、チームビ
    ルディング、シニアのキャリアや教育についても興
    味があります。仕事は、プロジェクトマネジャー兼エ
    ンジニアです。
    月に一度、Women Who Go Tokyo で Go の勉強
    をしています。Go に親しんでいるうちにスタッフに。
    Go 以外では、NPO で Firebase のイベントの企画
    や個人開発で Flutter を勉強したりしています。お
    仕事では C# や DB のメンテなど製品開発や運用
    保守をしていています。
    ソフトウェアエンジニアを目指して
    2019年の秋に
    Go を始めたところ、すぐに Go が好きになってその
    ままWomen Who Go Tokyo のスタッフになりまし
    た。以前は Azure の構築・運用のお仕事を担当。
    普段は猫3匹と遊びつつ編み物しています。

    View Slide

  5. Go の並行処理を体験してみよう

    View Slide

  6. 1. Go を知ろう
    2. Go の準備
    3. Go の構成
    4. Go の並行処理
    5. ハンズオンをやろう!
    今日の流れ
    Women Who Go Tokyo

    View Slide

  7. ● 2009 年11 月にはじめてのバージョンがオープンソースで公開
    ● 2012 年3 月28 日に正式バージョンとなる Go1.0 がリリース
    ● 2020 年3 月27日現在、最新のバージョンは Go1.14.1
    Go を知ろう

    View Slide

  8. Go を知ろう
    https://go.dev

    View Slide

  9. 1. 自分の PC で動かす
    2. Google Cloud で動かす
    Go の準備
    Women Who Go Tokyo
    https://techbookfest.org/product/6027682022162432

    View Slide

  10. Go の構成
    Women Who Go Tokyo
    package main
    import "fmt"
    func main() {
    echo("Hello, playground")
    }
    // 文字列を出力する関数
    func echo(s string) {
    fmt.Println("Hello, playground")
    }
    パッケージの定義
    外部パッケージの読み込み
    main 関数の定義
    コメント (ブロックコメントは /* */)

    View Slide

  11. Go には並行処理 (多くのしごとを非同期で独立して実行すること) の機能が
    あります。
    Go の並行処理
    Women Who Go Tokyo
    goroutine: channel:
    軽量なスレッドのようなもの。
    関数の頭に go キーワードを付与して呼び出
    すだけ。
    goroutine 間のデータのやり取りをするパイ
    プのようなもの。
    go f()

    View Slide

  12. Go のパッケージには goroutine の処理をより扱いやすくするものがありま
    す。
    Go の並行処理
    Women Who Go Tokyo
    waitgroup: errgroup:
    複数の goroutine の完了を待ってから処理
    を行う...ようなことができる。
    複数の goroutine の処理が終わってから、エ
    ラーをまとめて扱うことができる。
    https://pkg.go.dev/golang.org/x/syn
    c/errgroup?tab=doc
    https://pkg.go.dev/sync?tab=doc

    View Slide

  13. Go の並行処理を体験してみよう
    https://bit.ly/36bMIHc

    View Slide