$30 off During Our Annual Pro Sale. View Details »

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

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/

syumai

April 23, 2022
Tweet

More Decks by syumai

Other Decks in Programming

Transcript

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

    View Slide

  2. 自己紹介
    syumai
    Go Documentation
    輪読会 / ECMAScript

    様輪読会 主催
    株式会社ベースマキナ所属
    Go
    でGraphQL
    サーバー (gqlgen)

    TypeScript
    でフロントエンドを書いています
    Twitter: @__syumai

    Website: https://syum.ai

    View Slide

  3. 話すこと
    Go Language Specification
    輪読会について
    活動のご紹介
    メンバーによる仕様への貢献のご紹介
    勉強会に伴って開発したツールのご紹介
    うまくいった点、うまくいかなかった点

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 軽い気持ちで始めたものの…
    かかった回数: 32

    かかった期間: 1
    年5
    ヶ月

    View Slide

  8. 活動のご紹介

    View Slide

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

    View Slide

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

    View Slide

  11. 入門会
    Go
    の言語仕様を読む上で重要な概念について紹介する会
    defined type, underlying type, type identity etc...
    本編の参加ハードルを下げるために企画
    後々使える便利な資料が生まれました
    DQNEO
    さんの Underlying Type
    など
    全4
    回開催

    View Slide

  12. 多くの方に来ていただいて驚きました

    View Slide

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

    View Slide

  14. メンバーによる仕様への貢献のご紹介

    View Slide

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

    View Slide

  16. Go 1.16 ~ Go 1.17

    仕様に取り込まれた例
    task4233
    さん
    DQNEO
    さん
    Nobishii
    さん
    https://github.com/golang/go/c
    ommits/master/doc/go_spec.ht
    ml

    View Slide

  17. 例: every type has a method set
    DQNEO
    さんの提案

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. 宣伝
    続編として Go Documentation
    輪読会 (#godocreading)
    を隔週水曜
    で開催しています
    go.dev/docs
    配下のドキュメントを中心に読む会になる予定
    https://gospecreading.connpass.com/
    ぜひご参加ください!

    View Slide

  28. ご清聴ありがとうございました!

    View Slide