🐙

並行処理の基礎を学ぼう - Enablement Workshop for Gophers

2023/05/26に公開

はじめに

2023年5月10日に開催されたEnablement Workshop for Gophersで「並行処理の基礎を学ぼう」というタイトルで講義を行ないました。

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

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

今回のテーマは2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせて『並行処理』です。

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

具体的には主に以下のような並行処理の基礎や最近または今後のアップデートについてお話しました。

  • ゴールーチンとチャネル
  • syncパッケージ
  • コンテキスト

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

https://www.youtube.com/playlist?list=PL1_b9jjQHzkbDICL_ok9c_hlO0xJp5j_D

ゴールーチンとチャネル

Goの有名な特徴の1つとしてゴールーチンとチャネルを用いた並行処理があります。
講義では、ゴールーチンとチャネルの基礎について、丁寧に解説しました。

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

syncパッケージ

実際のプロダクト開発では、ゴールーチンの同期にチャネルだけを利用することは少ないでしょう。
syncパッケージを用いてゴールーチン間の同期処理を行うことも多いです。
講義では、syncパッケージで提供されている型やgolang.org/x/sync/errgroupパッケージの解説をおこないました。

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

コンテキスト

Goの並行処理では、ゴールーチンのキャンセル処理や値の共有を扱う、コンテキストの理解は必須といえるでしょう。
講義では、コンテキストがどのようなデータ型なのか、なぜ必要となっているのかについて、根底にあるチャネルのクローズの挙動から解説しました。

https://www.youtube.com/watch?v=Z-eVfEFWOMU

おわりに

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

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

追記

2023年5月26日に行った「手を動かしながら並行処理を学ぼう」をテーマにしたEnablement Workshop for Gophersの動画も公開しました。こちらも合わせてご覧ください。

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

Discussion