【有料】Gopher塾 #6 - 新しいfor文をマスターしよう

2023/12/03(日)13:00 〜 17:00 開催
ブックマーク

イベント内容

Gopher塾 #6 - 新しいfor文をマスターしよう

Gopher塾は、tenntennによるGoに関する有料の講義です。第6回目は2024年2月にリリースされる予定のGo1.22で導入されるであろうfor文の言語仕様変更について扱います。

なお、Goの基礎については無償でGopher道場などで学習することも可能です。

キャンセルについて

原則、自己都合によるキャンセルはご遠慮願います。止む得ずキャンセルしたい場合は、連絡先のフォームからお問い合わせください。

なお、学生では無いにも関わらず、学生枠に申し込んだ場合は、こちらでキャンセル致します。誤って申し込んだ方は別途、ご連絡ください。

日程の変更について

運営の体調、不慮の事態などによって開催ができない場合は、別日に振替させて頂きます。 その際は別途メールにてご連絡致します。

また、通常枠の参加者が5人以下の場合は中止にする場合がございます。

講師: tenntenn / Takuya Ueda

tenntenn
@tenntenn

バックエンドエンジニアとして日々Goを書いている。Google Developers Expert (Go)。一般社団法人Gophers Japan代表。Go Conference主催者。大学時代にGoに出会い、それ以来のめり込む。人類をGopherにしたいと考え、Goの普及に取り組んでいる。複数社でGoに関する技術アドバイザーをしている。マスコットのGopherの絵を描くのも好き。

Webサイト: https://tenn.in

過去の実績などはこちらをご覧ください。

内容

Go 1.18でついにジェネリクスが導入されました。
そして、Go1.21ではslicesパッケージ、mapsパッケージslicesパッケージcmpパッケージが標準ライブラリに入りました。

しかし、mapsパッケージでは、マップのキーやバリューをスライスで取得するmaps.Keys関数やmaps.Values関数はgolang.org/x/exp/mapsパッケージではあったものの、導入されませんでした。

また、ジェネリクスがリリースされた際に期待されていた、Filter関数やMap関数などは未だに標準ライブラリに登場していません。これらの機能を利用したい場合は、github.com/samber/loのようなサードパーティ製ライブラリを利用するしかありません。

実はジェネリクスのプロポーザルが議論されていることから、Filter関数やMap関数なども議論されていました。しかし、これらの関数を単にスライスやマップ(データ型)に対して実装せず、より抽象的なイテレータ型を定義し、そのエコシステムの上で議論しようという提案がなされました。

そして、Go1.22ではいよいよfor range文で関数が使える機能が実験的にリリースされる予定です。この機能はいわゆるイテレータの実現をfor range文で実現するものです。イテレータの導入を皮切りに標準ライブラリへのiterパッケージの導入やslicesパッケージおよびmapsパッケージなどのイテレータ対応が導入されていく見込みです。

maps.Values関数やmaps.Keys関数はイテレータ版になり再登場する予定で、Map関数やFilter関数などもiterパッケージに登場する可能性が非常に高いです。

for range文のプロポーザル(変更提案)は、すでに承認されています。それに続くiterパッケージなどはまだプロポーザルが議論されている段階ですが、近いうちに承認される可能性が非常に高いでしょう。

本講義では、ジェネリクスの復習からfor range文の新しい機能である、整数および関数(いわゆるイテレータ)に対する処理、それらに関連する新パッケージの説明、そして、Go1.22で正式に導入される予定のfor文のループ変数のスコープの扱いについて学びます。

なお、本講義では単に機能を学ぶだけではなく、どのように機能が提案され採択されていったのか、どのような理由で機能が提案されたのかも学びます。そして、独学では理解が少し難しいイテレータの実装について丁寧に解説する予定です。

※ 本講義で扱う内容は正式リリース前の情報を扱います。そのため、リリース時に若干仕様などが異なってくる場合があります。また、予定されているリリース時期がズレる可能性もあります。

特徴

  • ジェネリクスの基礎
    • Gopoher塾#5で扱った内容のダイジェスト版を用意します
  • for range文の新しい機能を学べる
    • 整数に対するrange over
    • 関数に対するrange over(イテレータ)
  • for文のループ変数のスコープの新しい仕様を学べる
  • 機能の概要
  • どのようにコンパイラで実装されているのか
  • パフォーマンスに影響があるのか?など詳しい情報
  • 手を動かしながら学べる教材を用意
  • ワークシートを使って自分の理解を整理できる
  • 復習用の録画動画や資料を配布
  • Slackにて質問受付(開催後1ヶ月間)

ゴール

この講義に参加することで次のような事が行えるようになることを想定しています。

  • ジェネリクスを復習する
  • for range文の新しい機能を完全に理解し、扱える
  • イテレータを実装できる
  • for文のループ変数のスコープの新しい仕様を完全に理解できる

何となくの理解ではなく、「理解した=他者に解説ができる」を目指して講義を行っていきます。

※ 内容が変更になる可能性があります
※ 参加者の希望によって、内容を変更する場合があります
※ 途中で適宜休憩を入れながら講義を行います
※ 全参加者がゴールに辿りつけるように努めますが、保証するものではありません

対象者

  • 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としての活動、および限られた個人の時間を用いて行っています。

本講義は、講師個人の時間を使用して行っています。そのため、準備・実施時間などを鑑みて有償とさせて頂いています。なお、今後の需要によっては価格の改定などを行う可能性がございます。

#5 参加者枠ついて

Gopher塾#5に参加の方は割引枠をご用意しております。 参加登録時のアンケートフォームにて#5の参加時の受付番号をご入力ください。

学生枠について

学生は無料で参加頂けます。申込時のアンケートフォームに、ac.jpで終わるドメインのメールアドレスを入力ください。

社会人としての収入(アルバイトやインターンシップは除く)のある学生の皆様は、他の学生の方を優先したいので、通常枠でご参加頂けますようお願い致します。

所属学校から末尾がac.jpのメールアドレスが発行されていない学生のみなさまは別途お問い合わせください。

なお、学生では無いにも関わらず、学生枠に申し込んだ場合(学校のメールアドレスの記載がない場合)は、こちらでキャンセル致します。誤って申し込んだ方は別途、ご連絡ください。

学生枠はブログ(ZennやQiitaも含む)の投稿が必須です。
アウトプットを行うことでナレッジを定着させ、次の学びに繋げましょう。

ブログへの投稿の後に、Gophers Slackへの投稿とこのconnpassページへ掲載を行いますので、ご連絡ください。
事前のレビューも行いますので、遠慮なくご相談ください。

増枠について

通常枠や#5参加者枠が満員になった場合、可能な範囲で増枠を行う予定です。
学生枠の増枠は現在のところ考えておりません。

企業向けの講義について

本講義は、個人向けの講義となっています。企業で同じような内容での講義をご希望の場合は、仕事依頼フォームから別途お問い合わせください。

行動指針

本イベントでは、参加者および講師はGo Community Code of Conductに従います。

ライセンス表記

GoのマスコットのGopherの原作者はRenee Frenchさんです。

注意事項

※ こちらのイベント情報は、外部サイトから取得した情報を掲載しています。
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。

関連するイベント