手を動かしながら並行処理を学ぼう - Enablement Workshop for Gophers
はじめに
2023年5月26日に開催されたEnablement Workshop for Gophersで「手を動かしながら並行処理を学ぼう」というタイトルで講義を行ないました。
Enablement Workshop for Gophersは、ナレッジワークが学生向けに提供する手を動かしながら基礎を学ぶ"Enablement"の機会です。
ワークショップのテーマは『並行処理』です。2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせてテーマを設定しています。
ワークショップは全2回行われ、第1回は、2023年5月10日に「並行処理の基礎を学ぼう」というタイトルで講義形式で開催しました。解説動画は以下の記事から確認できます。
第2回の今回はStep by Stepで手を動かしながら並行処理を学んでいきました。
講義の様子はYouTubeで公開されています。
Step00 - 事前準備
Step00では、ワークショップに使用するコードについて解説しました。このワークショップでは、画像変換を行うプログラムを並行処理を用いて速くしていきます。
Step01 - ボトルネックを探そう
Step01では、runtime/trace
パッケージを利用して画像変換プログラムのボトルネックになっている部分を可視化していきます。可視化を行うことでこのあとのステップで行う並行処理でどのように速くなったか実感することができます。
Step02 - 並行処理で画像変換を速くしよう
Step02では、ゴールーチンとsync
パッケージを用いて並行処理を行う例を解説します。sync.WaitGroup
型、sync.Mutex
型の使い方が学べます。
Step03 - キャンセル処理を行おう
Step03では、エラーが発生した場合にゴールーチンをキャンセルする方法を解説します。golang.org/x/sync/errgroup.Group
型やコンテキストの使い方が学べます。
Step04 - 最後までファイルの処理を行おう
Step04では、github.com/sourcegraph/conc/pool
パッケージを用いて、エラーが発生しても最後まで処理を行うように変更します。pool
パッケージで提供されている便利な機能を学べます。
Step05 - パニックをハンドリングしよう
Step05では、ゴールーチンで発生したパニックをgithub.com/sourcegraph/conc/panics
パッケージを用いて、安全に処理する方法について解説します。パニックをエラーに変換する方法を学べます。
おわりに
ナレッジワークでは、エンジニアイネーブルメント事業の一環として、このような講義を行っています。
また、ワークショップだけではなく、インターンシップも行っています。
この他にもEncraftなどの勉強会も行っていますので、Connpassでグループメンバーになっていただけると、開催通知メールが送られます。開催を知りたい方は、以下のリンクよりグループメンバー登録をよろしくお願いします。
また、EncraftのYouTubeチャンネルでは、エンジニアのイネーブルメントにつながる勉強会のアーカイブや講義動画をアップロードしていきますので、チャンネル登録をお願いします。
Discussion