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

開発チーム横断タスクフォース 「Goサブ会」の 運用事例と今後の展望

開発チーム横断タスクフォース 「Goサブ会」の 運用事例と今後の展望

Go Conference mini 2023 Winter IN KYOTO - connpass にて登壇した時の資料です。

すてにゃん

December 03, 2023
Tweet

More Decks by すてにゃん

Other Decks in Technology

Transcript

  1. 開発チーム横断タスクフォース
    「Goサブ会」の
    運用事例と今後の展望
    すてにゃん (id:stefafafan)
    2023/12/02 Go Conference mini 2023 Winter IN KYOTO
    1

    View full-size slide

  2. 自己紹介
    ● 株式会社はてな所属、すてにゃん (id:stefafafan)
    ● Webアプリケーションエンジニア
    ○ GoやPerlやTypeScriptを書いている
    ○ 認定スクラムマスター
    ○ テックリード
    ● ブログ: https://blog.stenyan.jp/
    2

    View full-size slide

  3. hatena.co.jp/recruit
    3
    3

    View full-size slide

  4. 今日お話しすること
    ● 「はてな」で使うGo言語
    ● チーム横断の知識共有の必要性
    ● 「Goサブ会」の設立
    ● 施策と取り組みの紹介
    ● 課題と今後の展望
    4

    View full-size slide

  5. 5
    「はてな」で使うGo言語

    View full-size slide

  6. 「はてな」で使うGo言語
    ● 「はてな」と聞いてGoの印象ありますか?
    ○ Go 1.6 Release Party - connpass (2016年) では実
    ははてな東京オフィスを会場として提供していた
    ○ Go Conference 2023 もスポンサーしていました
    ○ この場にもはてなスタッフが何人もきています
    6

    View full-size slide

  7. 「はてな」で使うGo言語
    ● 長年Webアプリケーション開発にPerlを採用
    ● とはいえGoも長い間随所で使ってきた
    ○ Mackerelのエージェントやプラグイン
    ○ GraphQL APIサーバーなど
    ○ はてなブログのサブシステム
    ○ x-motemen/gore をはじめとしたツール
    7

    View full-size slide

  8. 8
    チーム横断の知識共有の
    必要性

    View full-size slide

  9. チーム横断の知識共有の必要性
    ● それぞれの開発チームでGoは普通に使っているが……
    ○ Perlほど「定石」が知見としてたまっていない
    ■ チームに閉じている
    ○ Perlのように新しいメンバー向けのキャッチアップ資
    料・教材がまとまっていない
    ○ チームそれぞれでハマった箇所などが共有できていな

    9

    View full-size slide

  10. チーム横断の知識共有の必要性
    ● つまり、社内のPerlで出来ていることが出来ていない
    ○ なんらかのアクションが必要
    10

    View full-size slide

  11. 11
    「Goサブ会」の設立

    View full-size slide

  12. 「Goサブ会」の設立
    ● はてなでは「サブ会」という仕組みがあります
    ● チーム横断の職能グループ
    ○ フロントエンド会
    ○ SRE標準化委員会
    ○ らくだ会 (Perlの会)
    ○ 螺旋階段 (Scalaの会)
    12

    View full-size slide

  13. 「Goサブ会」の設立
    ● PerlやScalaに関してはこういうチーム横断で集まる会が
    あったが、Goにはなかった
    ● 開発チーム間でGoの知見共有ができていなかった
    ● 今後新しいサービスで採用する言語としてGoは有力
    ○ 社内でGoの知識を蓄積させるモチベーションが高い
    13

    View full-size slide

  14. 「Goサブ会」の設立
    ● 「Goサブ会、作ろう!」
    ○ lufiabb さんと共同オーナーとして立ち上げました
    ○ CTOにも期待感のすり合わせをしました
    ■ 会社としても、Goについて深掘りしてほしい・知見ためて
    いって欲しいというようなこと
    14

    View full-size slide

  15. 「Goサブ会」の設立
    ● 簡単に目的を決めて、定例もセットした
    15

    View full-size slide

  16. 16
    施策と取り組みの紹介

    View full-size slide

  17. 施策と取り組みの紹介 - 定例
    ● 毎週30分の定例 @ Slack Huddle
    ○ 誰でも気軽に参加できる雰囲気を出す
    ○ まずはGoのアップデート情報とみんなの困りごとをヒ
    アリングするのみ
    17

    View full-size slide

  18. 施策と取り組みの紹介 - 定例
    ● アップデート情報のキャッチアップ
    ○ Go 1.21 がリリースされたとか
    ○ 社内外のイベント情報拾ったり
    18

    View full-size slide

  19. 施策と取り組みの紹介 - 定例
    ● 困りごとのヒアリング
    ○ Goのイディオムがわからない
    ○ 記述量が多くて大変
    ■ いつも同じ実装を書いている
    ■ コレクションメソッドがほしい
    ○ イチオシのライブラリが知りたい
    ■ ORMとか
    19

    View full-size slide

  20. 施策と取り組みの紹介 - 困りごとの解消
    ● 困りごとについてその場で解消できる場合はいいが、わ
    からない時どうするべきか
    ○ 時間がある時に調べて次回回答する?
    ○ 個人技でなんとかするというよりは、会としてなんと
    かしていきたい
    ■ →「Goサブ会標準化分科会」を設立しよう!
    20

    View full-size slide

  21. Goサブ会標準化分科会
    ● 定例が「Goの情報の知見展開」にフォーカスしていたの
    で、実際に深掘りをしたり標準化活動をする分科会を用
    意した
    ● Goサブ会オーナーはもちろん、他メンバーもこういう活
    動に興味ある人は自由に参加可としている
    21

    View full-size slide

  22. Goサブ会標準化分科会
    ● 分科会でまずやったこと
    ○ 定例のアジェンダ見直し、みんなの困りをどう拾って
    改善していくか
    ■ 欲しいグッズはありますか、みたいな形にしてみる
    ● わかりやすくて効果ありそうなところから手をつける
    ○ Graceful Shutdown
    ○ コレクションメソッド
    ○ ドキュメントの充実
    22

    View full-size slide

  23. Graceful Shutdownライブラリ
    ● Graceful Shutdownを毎回手で実装しているという話が
    あり、ライブラリを作った
    ○ これについては後ほど別のLTで紹介する予定なのでこ
    こでは割愛
    23

    View full-size slide

  24. コレクションメソッドの充実
    ● コレクションメソッドについて
    ○ Go 1.20 では slices package のおかげで一部やりた
    いことは標準で出来ている
    ○ その上でまだ足りない場合は samber/lo というサー
    ドパーティライブラリがある
    ● ただ、samber/lo は我々としては Too much なところも
    あり..
    24

    View full-size slide

  25. コレクションメソッドの充実
    ● 「samber/loで使える関数は限定しつつ、slicesで事足り
    るものはそちらを使ってもらう」としたいですね
    ○ → hatena/godash というライブラリを作成
    ● hatena/godash は samber/lo の一部の関数だけ露出さ
    せたラッパー
    ○ 将来的に標準パッケージに入った関数はDeprecated
    扱いにするという方針をとるようにした
    25

    View full-size slide

  26. コレクションメソッドの充実
    ● https://github.com/hatena/godash
    26

    View full-size slide

  27. ドキュメントの充実
    ● 初学者がハマりそうなところや、キャッチアップしてな
    くて伝わっていない内容を社内Scrapboxにまとめていく
    活動もしている
    ● また、サブ会内で話題にあがったパッケージをおすすめ
    のパッケージとして社内にまとめていくなど
    27

    View full-size slide

  28. ドキュメントの充実
    28

    View full-size slide

  29. ドキュメントの充実
    29

    View full-size slide

  30. ドキュメントの充実
    30

    View full-size slide

  31. 31
    課題と今後の展望

    View full-size slide

  32. 課題
    ● 今見えている課題
    ○ 小手先の改善しかまだやれていない
    ■ はてなでGoを使う時のレールをまだ引けていない
    ○ まだまだGoが手に馴染んでいるメンバーは少ない
    ○ はてながあまりGoコミュニティで存在感がない
    32

    View full-size slide

  33. 今後の展望 - 改善について
    ● Goで何かライブラリを作るときのおすすめテンプレート
    を整備していく
    ○ 小さいスコープの改善では足りない
    ○ 大体はてなで作りたいものは要件が揃っている場合が
    多いためそこにマッチした標準構成を定めていく
    33

    View full-size slide

  34. 今後の展望 - 知識について
    ● Goに詳しいメンバーを増やしたいという話はある
    ○ けど、Goサブ会などを通じて引き続きやっていくとお
    そらく徐々に解消していくであろう
    ○ また、Goを使うプロダクトも増えれば書く機会も増え

    34

    View full-size slide

  35. 今後の展望 - 存在感を出す
    ● 私が個人的に勝手に危惧している「はてながGoコミュニ
    ティで存在感が薄い」という課題
    ○ 私をはじめ、他のGoサブ会メンバーにも積極的に定例
    で声がけしてこのようなイベントに参加してもらう
    ○ 社内の取り組みを定期的に登壇など通じてアウトプッ

    ● golang/go にもそのうち Contribute していきたい
    35

    View full-size slide

  36. まとめ
    ● はてなでのGoに関する課題感から「Goサブ会」を設立し
    た話を紹介しました
    ● 実際にいくつか成果が出ているが、課題感は引き続きあ

    ● 今後も継続的に活動し、こういった場でアウトプットし
    ていきます!
    37

    View full-size slide