Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go言語仕様輪読会の開催を通じた振り返り

5e511bb6d01d856b4ec7a0e5b1f6a2f0?s=47 syumai
April 23, 2022

 Go言語仕様輪読会の開催を通じた振り返り

Go言語仕様輪読会が2021年末に完了したので、これまでの活動内容について振り返りつつご紹介させていただきます。

[資料]
* Go言語仕様: https://go.dev/ref/spec
* DQNEOさんの Underlying Type の資料: https://speakerdeck.com/dqneo/go-language-underlying-type

[作ったツール]
* 同時編集Go Playground: https://gpgsync.herokuapp.com/ (https://github.com/syumai/gpgsync)
* DQNEOさん製 - 辞書付きGo言語仕様書: https://dqneo.github.io/gospec/spec.html (https://github.com/DQNEO/gospec)

[今後のイベント]
* Go Documentation 輪読会 (隔週水曜): https://gospecreading.connpass.com/

5e511bb6d01d856b4ec7a0e5b1f6a2f0?s=128

syumai

April 23, 2022
Tweet

More Decks by syumai

Other Decks in Programming

Transcript

  1. Go 言語仕様輪読会の開催を通じた振り 返り syumai Go Conference 2022 Spring (2022/4/23)

  2. 自己紹介 syumai Go Documentation 輪読会 / ECMAScript 仕 様輪読会 主催

    株式会社ベースマキナ所属 Go でGraphQL サーバー (gqlgen) や TypeScript でフロントエンドを書いています Twitter: @__syumai Website: https://syum.ai
  3. 話すこと Go Language Specification 輪読会について 活動のご紹介 メンバーによる仕様への貢献のご紹介 勉強会に伴って開発したツールのご紹介 うまくいった点、うまくいかなかった点

  4. Go Language Specification 輪読会に ついて

  5. Go Language Specification 輪読会について Go の言語仕様を最初から最後まで読む勉強会 隔週水曜、19 時から2 時間半開催していた 2021

    年12 月に最終回を開催しました
  6. 開催の動機 始めた当時、tenntenn さん主催の静的解析勉強会に参加していた 言語仕様を読んだ方が理解が進むのでは?と思い、読みに行ったとこ ろ、思った以上に仕様のページが小さかった 輪読できるのでは?とTwitter に投下すると思いの外反応があったの で開催を決定

  7. 軽い気持ちで始めたものの… かかった回数: 32 回 かかった期間: 1 年5 ヶ月

  8. 活動のご紹介

  9. 活動のご紹介 輪読会本編 入門会 1.18+ 仕様輪読会

  10. 輪読会本編 上から順にひたすら仕様を読んでいく https://go.dev/ref/spec 一文単位で、英語で読み日本語に翻訳する繰り返し 3~4 文くらいで次の人に交代 事前準備無しで参加OK

  11. 入門会 Go の言語仕様を読む上で重要な概念について紹介する会 defined type, underlying type, type identity etc...

    本編の参加ハードルを下げるために企画 後々使える便利な資料が生まれました DQNEO さんの Underlying Type など 全4 回開催
  12. 多くの方に来ていただいて驚きました

  13. 1.18+ 仕様輪読会 当時リリース前のGo 1.18 以降の仕様の差分を読む会 Generics が中心 最新の仕様へのキャッチアップが進みました 読んだばっかりの箇所が次の回には変更されてる!と言うパターン も多かった

    全7 回開催
  14. メンバーによる仕様への貢献のご紹介

  15. メンバーによる仕様への貢献のご紹介 輪読会中に見付けた" プルリクチャンス" などをメンバーが提案して取 り込まれた例がいくつかありました メンバーが自主的に見付けて出しているものもあります 勉強会メンバーに仕様への貢献者が複数人居るので、patch を送るハ ードルが下がりました Gophers

    Slack の #spec-improve-ja でこの辺りの話をしています
  16. Go 1.16 ~ Go 1.17 の 仕様に取り込まれた例 task4233 さん DQNEO

    さん Nobishii さん https://github.com/golang/go/c ommits/master/doc/go_spec.ht ml
  17. 例: every type has a method set DQNEO さんの提案

  18. 勉強会に伴って開発したツールのご紹介

  19. 同時編集Go Playground その場でコードを書いて動かしたいケースが多かったので、同時編集 出来るPlayground を作りました https://github.com/syumai/gpgsync socket.io と CodeMirror で動いています

  20. 辞書付き言語仕様書 DQNEO さん製。言語仕様書中の英単語にカーソルを乗せると日本語 訳が表示される https://github.com/DQNEO/gospec 言語仕様書によく出てくる単語を中心に、翻訳が行われている Chrome 拡張版もある https://github.com/syumai/go-docs- dictionary-extension

  21. うまくいった点、うまくいかなかった点

  22. うまくいかなかった点 新しいメンバーが増えにくかった 終盤にかけて、要求する事前知識が増えたからか、新規メンバーが 増えにくくなった テーマ的に仕方なかったかも知れないが、入門会をもっとこまめに やっても良かったかも アーカイブがあっても良かったかも

  23. うまくいかなかった点 前に読んだ内容忘れがち問題があった 長期に渡って開催したので、読んだ箇所の記憶が抜け落ちることが あった こまめに資料を残しておいても良かったかも

  24. うまくいった点 最後まで読み切れた これを目標にしていたので達成できてよかった 開催ハードルを下げ、継続に成功した イベントの定型化を徹底した 開催に必要なのは、ほぼconnpass のページ作成のみ

  25. うまくいった点 入門会の開催、メンバーの仕様への貢献など、予想外の発展があった 読み始めたタイミングが良かった Generics で仕様理解の難易度が上がったので、その変更が入る前に 読み始められて良かった

  26. 最後に Go の言語仕様は読もうと思ったら全部読み切れます! ぜひ皆さんも読んでみてください! 読み方に迷ったら Gophers Slack の #go-doc-reading チャンネル

    に質問いただければ誰か答えてくれると思います!
  27. 宣伝 続編として Go Documentation 輪読会 (#godocreading) を隔週水曜 で開催しています go.dev/docs 配下のドキュメントを中心に読む会になる予定

    https://gospecreading.connpass.com/ ぜひご参加ください!
  28. ご清聴ありがとうございました!