⌨️

手を動かしながら並行処理を学ぼう - Enablement Workshop for Gophers

2023/06/20に公開

はじめに

2023年5月26日に開催されたEnablement Workshop for Gophersで「手を動かしながら並行処理を学ぼう」というタイトルで講義を行ないました。

https://knowledgework.connpass.com/event/284212/

Enablement Workshop for Gophersは、ナレッジワークが学生向けに提供する手を動かしながら基礎を学ぶ"Enablement"の機会です。

ワークショップのテーマは『並行処理』です。2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせてテーマを設定しています。

https://herp.careers/v1/kwork/hzV5obj7rNuV

ワークショップは全2回行われ、第1回は、2023年5月10日に「並行処理の基礎を学ぼう」というタイトルで講義形式で開催しました。解説動画は以下の記事から確認できます。

https://zenn.dev/knowledgework/articles/9f9769c7e60fab

第2回の今回はStep by Stepで手を動かしながら並行処理を学んでいきました。

講義の様子はYouTubeで公開されています。

https://www.youtube.com/watch?v=Cb4dyIMa8ag&list=PL1_b9jjQHzkYQ0VyLm0OP_wDEMXKypIKK

Step00 - 事前準備

Step00では、ワークショップに使用するコードについて解説しました。このワークショップでは、画像変換を行うプログラムを並行処理を用いて速くしていきます。

https://www.youtube.com/watch?v=Cb4dyIMa8ag

Step01 - ボトルネックを探そう

Step01では、runtime/traceパッケージを利用して画像変換プログラムのボトルネックになっている部分を可視化していきます。可視化を行うことでこのあとのステップで行う並行処理でどのように速くなったか実感することができます。

https://youtu.be/09GewAcaR0w

Step02 - 並行処理で画像変換を速くしよう

Step02では、ゴールーチンとsyncパッケージを用いて並行処理を行う例を解説します。sync.WaitGroup型、sync.Mutex型の使い方が学べます。

https://youtu.be/Qky6FrlKuNc

Step03 - キャンセル処理を行おう

Step03では、エラーが発生した場合にゴールーチンをキャンセルする方法を解説します。golang.org/x/sync/errgroup.Group型やコンテキストの使い方が学べます。

https://youtu.be/WNNLS5gN74I

Step04 - 最後までファイルの処理を行おう

Step04では、github.com/sourcegraph/conc/poolパッケージを用いて、エラーが発生しても最後まで処理を行うように変更します。poolパッケージで提供されている便利な機能を学べます。

https://youtu.be/ORcm8PV_v6s

Step05 - パニックをハンドリングしよう

Step05では、ゴールーチンで発生したパニックをgithub.com/sourcegraph/conc/panicsパッケージを用いて、安全に処理する方法について解説します。パニックをエラーに変換する方法を学べます。

https://youtu.be/bCOxv1Px8ZU

おわりに

ナレッジワークでは、エンジニアイネーブルメント事業の一環として、このような講義を行っています。

https://note.com/knowledgework/n/n3cd69d5667d9

また、ワークショップだけではなく、インターンシップも行っています。

https://note.com/knowledgework/n/n4ae80c7a479c

この他にもEncraftなどの勉強会も行っていますので、Connpassでグループメンバーになっていただけると、開催通知メールが送られます。開催を知りたい方は、以下のリンクよりグループメンバー登録をよろしくお願いします。

https://knowledgework.connpass.com/

また、EncraftのYouTubeチャンネルでは、エンジニアのイネーブルメントにつながる勉強会のアーカイブや講義動画をアップロードしていきますので、チャンネル登録をお願いします。

https://www.youtube.com/@encraft-kwork

株式会社ナレッジワーク

Discussion