May
27
【有料】Gopher塾 #5 - ジェネリクスが書けるようになろう
tenntennによる有料の講義です
Organizing : tenntenn.dev
Registration info |
通常枠(有料) ¥15000 (Pre-pay)
FCFS
学生ブログ枠(無料) Free
FCFS
|
---|---|
About Prepayment |
About Prepayment Contact Info: (Only shown to attendees.) |
Cancel/Refund Policy: 原則、自己都合によるキャンセルはご遠慮願います。止む得ずキャンセルしたい場合は、連絡先のフォームからお問い合わせください。 |
|
Print receipt data: 発行する (詳しくはこちら) |
|
参加者への情報 |
(参加者と発表者のみに公開されます)
|
Description
Gopher塾 #5 - ジェネリクスが書けるようになろう
Gopher塾は、tenntennによるGoに関する有料の講義です。第5回目は2022年3月にリリースされたGo1.18で導入されたジェネリクスについて解説します。
なお、Goの基礎については無償でGopher道場などで学習することも可能です。
キャンセルについて
原則、自己都合によるキャンセルはご遠慮願います。止む得ずキャンセルしたい場合は、連絡先のフォームからお問い合わせください。
なお、学生では無いにも関わらず、学生枠に申し込んだ場合は、こちらでキャンセル致します。誤って申し込んだ方は別途、ご連絡ください。
日程の変更について
運営の体調、不慮の事態などによって開催ができない場合は、別日に振替させて頂きます。 その際は別途メールにてご連絡致します。
また、通常枠の参加者が5人以下の場合は中止にする場合がございます。
講師: tenntenn / Takuya Ueda
バックエンドエンジニアとして日々Goを書いている。Google Developers Expert (Go)。一般社団法人Gophers Japan代表。Go Conference主催者。大学時代にGoに出会い、それ以来のめり込む。人類をGopherにしたいと考え、Goの普及に取り組んでいる。複数社でGoに関する技術アドバイザーをしている。マスコットのGopherの絵を描くのも好き。
- Webサイト: https://tenn.in
- Twitter: https://twitter.com/tenntenn
- Mastodon: https://mstdn.jp/@tenntenn
過去の実績などはこちらをご覧ください。
内容
Go 1.18ではついにジェネリクスが導入されました。そして、Go1.19ではatomic.Pointerで標準ライブラリでも利用されるようになりました。
2023年8月にリリースされる予定のGo1.21では、golang.org/x/exp/slicesパッケージおよびgolang.org/x/exp/mapsパッケージで実験的に提供されていた、slicesパッケージとmapsパッケージがいよいよ標準ライブラリにやってきます。
また、github.com/samber/loのようなサードパーティ製のジェネリクスを使ったライブラリも増えてきました。
こうした状況から今後みなさんの開発現場でも、ジェネリクスを含むソースコードをレビューする機会も増えてくるでしょう。そのためには、型パラメタ、型引数、インスタンス化、インタフェースによる型制約、型セットなど新しい概念を理解する必要があります。また、読むだけではなく、書く機会も増えていくでしょう。
みなさんは、どのくらいジェネリクスを含むコードを書けますか?
たとえば、とある型パラメタを持たない型X
がインタフェースI
を実装していることをコンパイル時にチェックしたい場合、次のように書くでしょう。
type X struct{}
func (X) F() {}
type I interface{
F()
}
var _ I = X{}
それでは、次のように型X
が型パラメタを持つ場合はどのように書くとよいでしょうか?
type X[T any] struct{v T}
func (X[T]) F() {}
実は次のようにブランク識別子を使って型パラメタを持つ関数を宣言するとコンパイル時にチェックすることができます。
func _[T any]() {
var _ I = X[T]{}
}
このように、ジェネリクスが入ることで新たなイディオムが生まれています。なんとなく、Goのジェネリクスを知ってて、すでにあるジェネリックな関数や型を使える状態から、自分で読める・書ける状態にならなければいけなくなるでしょう。
本講義に参加して、プログラミング言語Go完全入門 15章ジェネリクス(型パラメタ)の資料をベースに手を動かしながら学べるサンプルとともに、ジェネリクスを使ったコードを書けるようになりましょう。
特徴
- Go1.21以降に導入予定の新しい機能について学べる
- slicesパッケージやmapsパッケージなど導入が決定しているもの
- プロポーザルが出されており、今後の導入される可能性が高いもの
- 手を動かしながら学べる教材を用意
- ワークシートを使って自分の理解を整理できる
- 復習用の録画動画や資料を配布
- Slackにて質問受付(開催後1ヶ月間)
ゴール
この講義に参加することで次のような事が行えるようになることを想定しています。
- Go1.18で導入されたジェネリクスに関する仕様を理解できる
- 型パラメタを持つ関数や型を使用できる
- ジェネリクスに関するソースコードを読める
- ジェネリクスを使ったソースコードが書ける
- ジェネリクスが導入されたことで生まれた新しいイディオムを知っている
何となくの理解ではなく、「理解した=他者に解説ができる」を目指して講義を行っていきます。
※ 内容が変更になる可能性があります
※ 参加者の希望によって、内容を変更する場合があります
※ 途中で適宜休憩を入れながら講義を行います
※ 全参加者がゴールに辿りつけるように努めますが、保証するものではありません
対象者
- Goを学んだ経験のある方
- Goのジェネリクスについて知りたい方
- これから入るGoの機能を知りたい方
18歳以上の方を対象としております。
事前学習
プログラミング言語Go完全入門 15章ジェネリクス(型パラメタ)を読んでおくとより理解が進みます
参加方法
- 講義:Zoom
- 質問:Slack
ZoomやSlackのURLはconnpassのメール機能によってお送り致します。
用意するもの
- 以下の環境が入ったPC(OSは問いません)
- 最新のGoのツールチェイン
- Zoom
- Slack
講師のPCはmacOSです。WindowsやLinuxのPCでもご参加頂けますが、OS固有の問題にあたった場合は解決できないことがありますので、ご了承ください。
ZoomやSlackのURLはご入力頂いたメールアドレスに共有致します。
配布物
参加者の方には、スライドおよび当日の録画を配布致します。 なお、準備には万全を期しますが、機器トラブルによって録画が行えない可能性がありますので、予めご了承ください。
スライドの一部は、今後の講師の活動において無償で公開される可能性があります。予めご了承ください。録画動画は編集し、有料の講義動画として公開する可能性があります。参加者のみなさまが特定できる形では公開致しません。
配布物はアンケートフォームにご入力頂いたメールアドレスに共有致します。
質問について
講義当日までに、Slackにご招待します。当日はSlackに質問を頂けると回答致します。 当日質問頂いた内容は、録画される可能性があります。
Slackでの質問は講義後、1ヶ月間は回答を保証致します。期間後はベストエフォートにて回答致しますが、期間外は回答をお約束できるものではありません。また、期間内であっても質問の内容や分量によっては回答しかねる場合もございますので、予めご了承ください。なお、質問内容は講義内容に関するものでなくても、回答が可能なものはお答えします。
有償開催について
講師はコミュニティ活動の一環として、無償の講義も行っています。コミュニティ活動は、所属企業によるサポートや一般社団法人Gophers Japanとしての活動、および限られた個人の時間を用いて行っています。
本講義は、講師個人の時間を使用して行っています。そのため、準備・実施時間などを鑑みて有償とさせて頂いています。なお、今後の需要によっては価格の改定などを行う可能性がございます。
学生枠について
学生は無料で参加頂けます。申込時のアンケートフォームに、ac.jpで終わるドメインのメールアドレスを入力ください。
社会人としての収入(アルバイトやインターンシップは除く)のある学生の皆様は、他の学生の方を優先したいので、通常枠でご参加頂けますようお願い致します。
所属学校から末尾がac.jpのメールアドレスが発行されていない学生のみなさまは別途お問い合わせください。
なお、学生では無いにも関わらず、学生枠に申し込んだ場合(学校のメールアドレスの記載がない場合)は、こちらでキャンセル致します。誤って申し込んだ方は別途、ご連絡ください。
学生枠はブログ(ZennやQiitaも含む)の投稿が必須です。
アウトプットを行うことでナレッジを定着させ、次の学びに繋げましょう。
ブログへの投稿の後に、Gophers Slackへの投稿とこのconnpassページへ掲載を行いますので、ご連絡ください。
事前のレビューも行いますので、遠慮なくご相談ください。
増枠について
通常枠が満員になった場合、可能な範囲で増枠を行う予定です。
学生枠の増枠は現在のところ考えておりません。
企業向けの講義について
本講義は、個人向けの講義となっています。企業で同じような内容での講義をご希望の場合は、仕事依頼フォームから別途お問い合わせください。
行動指針
本イベントでは、参加者および講師はGo Community Code of Conductに従います。
ライセンス表記
GoのマスコットのGopherの原作者はRenee Frenchさんです。
発表者
Media View all Media
If you add event media, up to 3 items will be shown here.