Slide 1

Slide 1 text

© 2024 LayerX Inc. バクラク事業部での Goのユースケースとチームを超えたナレッジ共有 hatena.go #1 @upamune

Slide 2

Slide 2 text

© 2024 LayerX Inc. 2 ▶ 株式会社メルペイ (2018.04 - 2022.03) ▶ 株式会社LayerX (2022.04 - 現在) - バクラク事業部 申請・経費精算チーム TechLead 最近は趣味でポッドキャストを始めました 🎙 🧙 magical.fm 画像を入れてね 自己紹介 @upamune (うぱみゅん) #F8B8CC

Slide 3

Slide 3 text

© 2024 LayerX Inc. 3 今日話すこと BtoB SaaS開発においてのGoのユースケースを話しつつ、 主にどのようなチームを超えたナレッジ共有の仕組みがあるかを話します 今日話すこと

Slide 4

Slide 4 text

目次 Agenda ● バクラク事業部でのGoのユースケース ● チームを超えたGoにまつわるナレッジ共有 ● 終わりに

Slide 5

Slide 5 text

バクラク事業部でのGoのユースケース

Slide 6

Slide 6 text

© 2024 LayerX Inc. 6 「すべての経済活動を、デジタル化する。」をミッションに掲げ、 法人支出管理サービス「バクラク」や企業内業務のデジタル化を支援するサービスを提供しています。 事業紹介 バクラク事業 企業活動のインフラとなる法人支出 管理(BSM)SaaSを開発・提供 Fintech事業 ソフトウェアを駆使したアセットマネジメ ント・証券事業を合弁会社にて展開 AI・LLM事業 文書処理を中心とした、LLMの活用による プロセスのリデザイン

Slide 7

Slide 7 text

© 2024 LayerX Inc. 7 ▶ バックエンドのAPIはほとんどがGoで書かれている - GraphQL Gateway、MLのコンポーネント以外 - REST/GraphQL/Connect を喋るAPIが混在している ▶ ローカル開発する時の様々な便利ツールもGoで書かれている - ローカルのプロセスマネージャー - エンジニアオンボーディングを改善するツールの紹介 - 様々な(2024/01/31時点で6つ!) プロダクトがあるので、ローカルで必要な分だけプロセスを 立ち上げて開発している - キャッシュ機構を備えたビルドシステム - デプロイ用の対話的なCLIツール - などなど... 👑 Goが主役 バクラク事業部でのGoのユースケース

Slide 8

Slide 8 text

チームを超えたGoにまつわるナレッジ共有

Slide 9

Slide 9 text

© 2024 LayerX Inc. 9 プロダクトが複数あるため、 チームごとにナレッジが分断されてしまう問題... 💀💀💀 チームを超えたGoにまつわるナレッジ共有 \半年に1つプロダクトが増えます!/ ※2024/01/31時点で6つのプロダクト

Slide 10

Slide 10 text

© 2024 LayerX Inc. 10 ▶ 💬 Slackチャンネル - Goについて話すSlackチャンネル - Goのリリース前とかに盛り上がる ▶ 🥳 エンジニア全体の共有会 - 毎週45分 - Goに限らないが、チームでやった「カイゼン」も共有する場 - 社内ライブラリに便利なやつを実装したり、ライブラリを使った時のハマりやすいポイント共有 ▶ 📖 Goの技術書読書会 - 毎週1時間 - 今は「Go言語 100Tips ありがちなミスを把握し、実装を最適化する」を読んでいる 🏰 ナレッジ共有の場を複数設けている チームを超えたGoにまつわるナレッジ共有

Slide 11

Slide 11 text

© 2024 LayerX Inc. 11 ▶ 👇 実際に話されたトピックを一部抜粋 - sync.WaitGroup, errorgroup.Group を使わずに sourcegraph/conc を使おう! - panicのハンドリングや間違った使い方、並列数の制御を簡単にできる - エラーをwrapできていない部分をlinterを使いつつ改善する方法 - 手順とガイドラインも含め共有して他チームでも展開できるように - ブログも書きました! 👉 Go言語のAPIサーバーの冗長なエラーログを40%削減した話 - gomock でgomock.Any()を使うのをやめて、簡単にmatcherを作れる薄いラッパーの共有 🥳 エンジニア全体の共有会 チームを超えたGoにまつわるナレッジ共有

Slide 12

Slide 12 text

© 2024 LayerX Inc. 12 - 準備不要で参加できる、その場の参加者でセクションごとに音読する方式 - 「読書」するのが目的ではなく、これをきっかけに社内のコードではどうかなど、ディスカッションするの が目的 - 読書会後は、みんなの自由研究が始まる - unsafe.String() はどうやって実装されている? - ハマりやすい罠として紹介されているものでlinterを探す、作る? - MarshalJSON() を実装した構造体が複数埋め込まれていたらどうなる? LayerXで実践中の「ゆるい輪読会」をご紹介します 100 Go Mistakes (日本語版) 📖 Goの技術書読書会 チームを超えたGoにまつわるナレッジ共有

Slide 13

Slide 13 text

終わりに

Slide 14

Slide 14 text

© 2024 LayerX Inc. 14 - 社内でのGoのユースケースを紹介 - APIサーバー - CLIツール - ナレッジ共有の場 - Slackチャンネル - エンジニア共有会 - 読書会 ぜひ、みなさんがやっている取り組みがあれば教えてください〜!! 🎯 終わりに 終わりに

Slide 15

Slide 15 text

© 2024 LayerX Inc. 15 We are hiring! LayerXのプロダクトメンバーと美味しいお酒やご飯を囲み ながら、プロダクトやチーム、技術の話をゆる〜く行うイベン トを定期的に行っています。 直近の予定は以下のとおりです。 日程 テーマ 2/13(火) 19時ごろ〜 🥤ご当地フルーツジュース Night 2/26(月) 19時ごろ〜 🍺クラフトビール Night LayerX Casual Night ※原則招待制となっております。このあとの懇親会でお声がけください! LayerX Casual Night LayerX Open Door 事業部・テーマ別にカジュアル面談を公開しています。 アカウント登録は一切不要です! ・メンバーと話してみたい ・質問したいことがある ・選考に進むか悩んでいる などなど、お気軽にお申し込みください。