Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Go 言語仕様輪読会の開催を通じた振り 返り syumai Go Conference 2022 Spring (2022/4/23)
Slide 2
Slide 2 text
自己紹介 syumai Go Documentation 輪読会 / ECMAScript 仕 様輪読会 主催 株式会社ベースマキナ所属 Go でGraphQL サーバー (gqlgen) や TypeScript でフロントエンドを書いています Twitter: @__syumai Website: https://syum.ai
Slide 3
Slide 3 text
話すこと Go Language Specification 輪読会について 活動のご紹介 メンバーによる仕様への貢献のご紹介 勉強会に伴って開発したツールのご紹介 うまくいった点、うまくいかなかった点
Slide 4
Slide 4 text
Go Language Specification 輪読会に ついて
Slide 5
Slide 5 text
Go Language Specification 輪読会について Go の言語仕様を最初から最後まで読む勉強会 隔週水曜、19 時から2 時間半開催していた 2021 年12 月に最終回を開催しました
Slide 6
Slide 6 text
開催の動機 始めた当時、tenntenn さん主催の静的解析勉強会に参加していた 言語仕様を読んだ方が理解が進むのでは?と思い、読みに行ったとこ ろ、思った以上に仕様のページが小さかった 輪読できるのでは?とTwitter に投下すると思いの外反応があったの で開催を決定
Slide 7
Slide 7 text
軽い気持ちで始めたものの… かかった回数: 32 回 かかった期間: 1 年5 ヶ月
Slide 8
Slide 8 text
活動のご紹介
Slide 9
Slide 9 text
活動のご紹介 輪読会本編 入門会 1.18+ 仕様輪読会
Slide 10
Slide 10 text
輪読会本編 上から順にひたすら仕様を読んでいく https://go.dev/ref/spec 一文単位で、英語で読み日本語に翻訳する繰り返し 3~4 文くらいで次の人に交代 事前準備無しで参加OK
Slide 11
Slide 11 text
入門会 Go の言語仕様を読む上で重要な概念について紹介する会 defined type, underlying type, type identity etc... 本編の参加ハードルを下げるために企画 後々使える便利な資料が生まれました DQNEO さんの Underlying Type など 全4 回開催
Slide 12
Slide 12 text
多くの方に来ていただいて驚きました
Slide 13
Slide 13 text
1.18+ 仕様輪読会 当時リリース前のGo 1.18 以降の仕様の差分を読む会 Generics が中心 最新の仕様へのキャッチアップが進みました 読んだばっかりの箇所が次の回には変更されてる!と言うパターン も多かった 全7 回開催
Slide 14
Slide 14 text
メンバーによる仕様への貢献のご紹介
Slide 15
Slide 15 text
メンバーによる仕様への貢献のご紹介 輪読会中に見付けた" プルリクチャンス" などをメンバーが提案して取 り込まれた例がいくつかありました メンバーが自主的に見付けて出しているものもあります 勉強会メンバーに仕様への貢献者が複数人居るので、patch を送るハ ードルが下がりました Gophers Slack の #spec-improve-ja でこの辺りの話をしています
Slide 16
Slide 16 text
Go 1.16 ~ Go 1.17 の 仕様に取り込まれた例 task4233 さん DQNEO さん Nobishii さん https://github.com/golang/go/c ommits/master/doc/go_spec.ht ml
Slide 17
Slide 17 text
例: every type has a method set DQNEO さんの提案
Slide 18
Slide 18 text
勉強会に伴って開発したツールのご紹介
Slide 19
Slide 19 text
同時編集Go Playground その場でコードを書いて動かしたいケースが多かったので、同時編集 出来るPlayground を作りました https://github.com/syumai/gpgsync socket.io と CodeMirror で動いています
Slide 20
Slide 20 text
辞書付き言語仕様書 DQNEO さん製。言語仕様書中の英単語にカーソルを乗せると日本語 訳が表示される https://github.com/DQNEO/gospec 言語仕様書によく出てくる単語を中心に、翻訳が行われている Chrome 拡張版もある https://github.com/syumai/go-docs- dictionary-extension
Slide 21
Slide 21 text
うまくいった点、うまくいかなかった点
Slide 22
Slide 22 text
うまくいかなかった点 新しいメンバーが増えにくかった 終盤にかけて、要求する事前知識が増えたからか、新規メンバーが 増えにくくなった テーマ的に仕方なかったかも知れないが、入門会をもっとこまめに やっても良かったかも アーカイブがあっても良かったかも
Slide 23
Slide 23 text
うまくいかなかった点 前に読んだ内容忘れがち問題があった 長期に渡って開催したので、読んだ箇所の記憶が抜け落ちることが あった こまめに資料を残しておいても良かったかも
Slide 24
Slide 24 text
うまくいった点 最後まで読み切れた これを目標にしていたので達成できてよかった 開催ハードルを下げ、継続に成功した イベントの定型化を徹底した 開催に必要なのは、ほぼconnpass のページ作成のみ
Slide 25
Slide 25 text
うまくいった点 入門会の開催、メンバーの仕様への貢献など、予想外の発展があった 読み始めたタイミングが良かった Generics で仕様理解の難易度が上がったので、その変更が入る前に 読み始められて良かった
Slide 26
Slide 26 text
最後に Go の言語仕様は読もうと思ったら全部読み切れます! ぜひ皆さんも読んでみてください! 読み方に迷ったら Gophers Slack の #go-doc-reading チャンネル に質問いただければ誰か答えてくれると思います!
Slide 27
Slide 27 text
宣伝 続編として Go Documentation 輪読会 (#godocreading) を隔週水曜 で開催しています go.dev/docs 配下のドキュメントを中心に読む会になる予定 https://gospecreading.connpass.com/ ぜひご参加ください!
Slide 28
Slide 28 text
ご清聴ありがとうございました!